mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
Documentation: kvm: reorganize introduction
Reorganize the text to mention file descriptors as early as possible. Also mention capabilities early as they are a central part of KVM's API. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20241023124507.280382-5-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
badd5372ec
commit
5b47f5a725
@ -7,8 +7,19 @@ The Definitive KVM (Kernel-based Virtual Machine) API Documentation
|
||||
1. General description
|
||||
======================
|
||||
|
||||
The kvm API is a set of ioctls that are issued to control various aspects
|
||||
of a virtual machine. The ioctls belong to the following classes:
|
||||
The kvm API is centered around different kinds of file descriptors
|
||||
and ioctls that can be issued to these file descriptors. An initial
|
||||
open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
|
||||
can be used to issue system ioctls. A KVM_CREATE_VM ioctl on this
|
||||
handle will create a VM file descriptor which can be used to issue VM
|
||||
ioctls. A KVM_CREATE_VCPU or KVM_CREATE_DEVICE ioctl on a VM fd will
|
||||
create a virtual cpu or device and return a file descriptor pointing to
|
||||
the new resource.
|
||||
|
||||
In other words, the kvm API is a set of ioctls that are issued to
|
||||
different kinds of file descriptor in order to control various aspects of
|
||||
a virtual machine. Depending on the file descriptor that accepts them,
|
||||
ioctls belong to the following classes:
|
||||
|
||||
- System ioctls: These query and set global attributes which affect the
|
||||
whole kvm subsystem. In addition a system ioctl is used to create
|
||||
@ -35,18 +46,19 @@ of a virtual machine. The ioctls belong to the following classes:
|
||||
device ioctls must be issued from the same process (address space) that
|
||||
was used to create the VM.
|
||||
|
||||
2. File descriptors
|
||||
===================
|
||||
While most ioctls are specific to one kind of file descriptor, in some
|
||||
cases the same ioctl can belong to more than one class.
|
||||
|
||||
The kvm API is centered around file descriptors. An initial
|
||||
open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
|
||||
can be used to issue system ioctls. A KVM_CREATE_VM ioctl on this
|
||||
handle will create a VM file descriptor which can be used to issue VM
|
||||
ioctls. A KVM_CREATE_VCPU or KVM_CREATE_DEVICE ioctl on a VM fd will
|
||||
create a virtual cpu or device and return a file descriptor pointing to
|
||||
the new resource. Finally, ioctls on a vcpu or device fd can be used
|
||||
to control the vcpu or device. For vcpus, this includes the important
|
||||
task of actually running guest code.
|
||||
The KVM API grew over time. For this reason, KVM defines many constants
|
||||
of the form ``KVM_CAP_*``, each corresponding to a set of functionality
|
||||
provided by one or more ioctls. Availability of these "capabilities" can
|
||||
be checked with :ref:`KVM_CHECK_EXTENSION <KVM_CHECK_EXTENSION>`. Some
|
||||
capabilities also need to be enabled for VMs or VCPUs where their
|
||||
functionality is desired (see :ref:`cap_enable` and :ref:`cap_enable_vm`).
|
||||
|
||||
|
||||
2. Restrictions
|
||||
===============
|
||||
|
||||
In general file descriptors can be migrated among processes by means
|
||||
of fork() and the SCM_RIGHTS facility of unix domain socket. These
|
||||
|
Loading…
Reference in New Issue
Block a user