KVM: Improve readability of KVM API doc
This helps to identify sections and it also fixes the numbering from 4.54 to 4.61. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
38e8a2ddc9
commit
414fa985f9
|
@ -2,6 +2,7 @@ The Definitive KVM (Kernel-based Virtual Machine) API Documentation
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
1. General description
|
1. General description
|
||||||
|
----------------------
|
||||||
|
|
||||||
The kvm API is a set of ioctls that are issued to control various aspects
|
The kvm API is a set of ioctls that are issued to control various aspects
|
||||||
of a virtual machine. The ioctls belong to three classes
|
of a virtual machine. The ioctls belong to three classes
|
||||||
|
@ -23,7 +24,9 @@ of a virtual machine. The ioctls belong to three classes
|
||||||
Only run vcpu ioctls from the same thread that was used to create the
|
Only run vcpu ioctls from the same thread that was used to create the
|
||||||
vcpu.
|
vcpu.
|
||||||
|
|
||||||
|
|
||||||
2. File descriptors
|
2. File descriptors
|
||||||
|
-------------------
|
||||||
|
|
||||||
The kvm API is centered around file descriptors. An initial
|
The kvm API is centered around file descriptors. An initial
|
||||||
open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
|
open("/dev/kvm") obtains a handle to the kvm subsystem; this handle
|
||||||
|
@ -41,7 +44,9 @@ not cause harm to the host, their actual behavior is not guaranteed by
|
||||||
the API. The only supported use is one virtual machine per process,
|
the API. The only supported use is one virtual machine per process,
|
||||||
and one vcpu per thread.
|
and one vcpu per thread.
|
||||||
|
|
||||||
|
|
||||||
3. Extensions
|
3. Extensions
|
||||||
|
-------------
|
||||||
|
|
||||||
As of Linux 2.6.22, the KVM ABI has been stabilized: no backward
|
As of Linux 2.6.22, the KVM ABI has been stabilized: no backward
|
||||||
incompatible change are allowed. However, there is an extension
|
incompatible change are allowed. However, there is an extension
|
||||||
|
@ -53,7 +58,9 @@ Instead, kvm defines extension identifiers and a facility to query
|
||||||
whether a particular extension identifier is available. If it is, a
|
whether a particular extension identifier is available. If it is, a
|
||||||
set of ioctls is available for application use.
|
set of ioctls is available for application use.
|
||||||
|
|
||||||
|
|
||||||
4. API description
|
4. API description
|
||||||
|
------------------
|
||||||
|
|
||||||
This section describes ioctls that can be used to control kvm guests.
|
This section describes ioctls that can be used to control kvm guests.
|
||||||
For each ioctl, the following information is provided along with a
|
For each ioctl, the following information is provided along with a
|
||||||
|
@ -75,6 +82,7 @@ description:
|
||||||
Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
|
Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
|
||||||
are not detailed, but errors with specific meanings are.
|
are not detailed, but errors with specific meanings are.
|
||||||
|
|
||||||
|
|
||||||
4.1 KVM_GET_API_VERSION
|
4.1 KVM_GET_API_VERSION
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -90,6 +98,7 @@ supported. Applications should refuse to run if KVM_GET_API_VERSION
|
||||||
returns a value other than 12. If this check passes, all ioctls
|
returns a value other than 12. If this check passes, all ioctls
|
||||||
described as 'basic' will be available.
|
described as 'basic' will be available.
|
||||||
|
|
||||||
|
|
||||||
4.2 KVM_CREATE_VM
|
4.2 KVM_CREATE_VM
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -109,6 +118,7 @@ In order to create user controlled virtual machines on S390, check
|
||||||
KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as
|
KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as
|
||||||
privileged user (CAP_SYS_ADMIN).
|
privileged user (CAP_SYS_ADMIN).
|
||||||
|
|
||||||
|
|
||||||
4.3 KVM_GET_MSR_INDEX_LIST
|
4.3 KVM_GET_MSR_INDEX_LIST
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -135,6 +145,7 @@ Note: if kvm indicates supports MCE (KVM_CAP_MCE), then the MCE bank MSRs are
|
||||||
not returned in the MSR list, as different vcpus can have a different number
|
not returned in the MSR list, as different vcpus can have a different number
|
||||||
of banks, as set via the KVM_X86_SETUP_MCE ioctl.
|
of banks, as set via the KVM_X86_SETUP_MCE ioctl.
|
||||||
|
|
||||||
|
|
||||||
4.4 KVM_CHECK_EXTENSION
|
4.4 KVM_CHECK_EXTENSION
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -149,6 +160,7 @@ receives an integer that describes the extension availability.
|
||||||
Generally 0 means no and 1 means yes, but some extensions may report
|
Generally 0 means no and 1 means yes, but some extensions may report
|
||||||
additional information in the integer return value.
|
additional information in the integer return value.
|
||||||
|
|
||||||
|
|
||||||
4.5 KVM_GET_VCPU_MMAP_SIZE
|
4.5 KVM_GET_VCPU_MMAP_SIZE
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -161,6 +173,7 @@ The KVM_RUN ioctl (cf.) communicates with userspace via a shared
|
||||||
memory region. This ioctl returns the size of that region. See the
|
memory region. This ioctl returns the size of that region. See the
|
||||||
KVM_RUN documentation for details.
|
KVM_RUN documentation for details.
|
||||||
|
|
||||||
|
|
||||||
4.6 KVM_SET_MEMORY_REGION
|
4.6 KVM_SET_MEMORY_REGION
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -171,6 +184,7 @@ Returns: 0 on success, -1 on error
|
||||||
|
|
||||||
This ioctl is obsolete and has been removed.
|
This ioctl is obsolete and has been removed.
|
||||||
|
|
||||||
|
|
||||||
4.7 KVM_CREATE_VCPU
|
4.7 KVM_CREATE_VCPU
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -223,6 +237,7 @@ machines, the resulting vcpu fd can be memory mapped at page offset
|
||||||
KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual
|
KVM_S390_SIE_PAGE_OFFSET in order to obtain a memory map of the virtual
|
||||||
cpu's hardware control block.
|
cpu's hardware control block.
|
||||||
|
|
||||||
|
|
||||||
4.8 KVM_GET_DIRTY_LOG (vm ioctl)
|
4.8 KVM_GET_DIRTY_LOG (vm ioctl)
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -246,6 +261,7 @@ since the last call to this ioctl. Bit 0 is the first page in the
|
||||||
memory slot. Ensure the entire structure is cleared to avoid padding
|
memory slot. Ensure the entire structure is cleared to avoid padding
|
||||||
issues.
|
issues.
|
||||||
|
|
||||||
|
|
||||||
4.9 KVM_SET_MEMORY_ALIAS
|
4.9 KVM_SET_MEMORY_ALIAS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -256,6 +272,7 @@ Returns: 0 (success), -1 (error)
|
||||||
|
|
||||||
This ioctl is obsolete and has been removed.
|
This ioctl is obsolete and has been removed.
|
||||||
|
|
||||||
|
|
||||||
4.10 KVM_RUN
|
4.10 KVM_RUN
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -272,6 +289,7 @@ obtained by mmap()ing the vcpu fd at offset 0, with the size given by
|
||||||
KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct
|
KVM_GET_VCPU_MMAP_SIZE. The parameter block is formatted as a 'struct
|
||||||
kvm_run' (see below).
|
kvm_run' (see below).
|
||||||
|
|
||||||
|
|
||||||
4.11 KVM_GET_REGS
|
4.11 KVM_GET_REGS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -292,6 +310,7 @@ struct kvm_regs {
|
||||||
__u64 rip, rflags;
|
__u64 rip, rflags;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.12 KVM_SET_REGS
|
4.12 KVM_SET_REGS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -304,6 +323,7 @@ Writes the general purpose registers into the vcpu.
|
||||||
|
|
||||||
See KVM_GET_REGS for the data structure.
|
See KVM_GET_REGS for the data structure.
|
||||||
|
|
||||||
|
|
||||||
4.13 KVM_GET_SREGS
|
4.13 KVM_GET_SREGS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -331,6 +351,7 @@ interrupt_bitmap is a bitmap of pending external interrupts. At most
|
||||||
one bit may be set. This interrupt has been acknowledged by the APIC
|
one bit may be set. This interrupt has been acknowledged by the APIC
|
||||||
but not yet injected into the cpu core.
|
but not yet injected into the cpu core.
|
||||||
|
|
||||||
|
|
||||||
4.14 KVM_SET_SREGS
|
4.14 KVM_SET_SREGS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -342,6 +363,7 @@ Returns: 0 on success, -1 on error
|
||||||
Writes special registers into the vcpu. See KVM_GET_SREGS for the
|
Writes special registers into the vcpu. See KVM_GET_SREGS for the
|
||||||
data structures.
|
data structures.
|
||||||
|
|
||||||
|
|
||||||
4.15 KVM_TRANSLATE
|
4.15 KVM_TRANSLATE
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -365,6 +387,7 @@ struct kvm_translation {
|
||||||
__u8 pad[5];
|
__u8 pad[5];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.16 KVM_INTERRUPT
|
4.16 KVM_INTERRUPT
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -413,6 +436,7 @@ c) KVM_INTERRUPT_SET_LEVEL
|
||||||
Note that any value for 'irq' other than the ones stated above is invalid
|
Note that any value for 'irq' other than the ones stated above is invalid
|
||||||
and incurs unexpected behavior.
|
and incurs unexpected behavior.
|
||||||
|
|
||||||
|
|
||||||
4.17 KVM_DEBUG_GUEST
|
4.17 KVM_DEBUG_GUEST
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -423,6 +447,7 @@ Returns: -1 on error
|
||||||
|
|
||||||
Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead.
|
Support for this has been removed. Use KVM_SET_GUEST_DEBUG instead.
|
||||||
|
|
||||||
|
|
||||||
4.18 KVM_GET_MSRS
|
4.18 KVM_GET_MSRS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -451,6 +476,7 @@ Application code should set the 'nmsrs' member (which indicates the
|
||||||
size of the entries array) and the 'index' member of each array entry.
|
size of the entries array) and the 'index' member of each array entry.
|
||||||
kvm will fill in the 'data' member.
|
kvm will fill in the 'data' member.
|
||||||
|
|
||||||
|
|
||||||
4.19 KVM_SET_MSRS
|
4.19 KVM_SET_MSRS
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -466,6 +492,7 @@ Application code should set the 'nmsrs' member (which indicates the
|
||||||
size of the entries array), and the 'index' and 'data' members of each
|
size of the entries array), and the 'index' and 'data' members of each
|
||||||
array entry.
|
array entry.
|
||||||
|
|
||||||
|
|
||||||
4.20 KVM_SET_CPUID
|
4.20 KVM_SET_CPUID
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -494,6 +521,7 @@ struct kvm_cpuid {
|
||||||
struct kvm_cpuid_entry entries[0];
|
struct kvm_cpuid_entry entries[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.21 KVM_SET_SIGNAL_MASK
|
4.21 KVM_SET_SIGNAL_MASK
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -516,6 +544,7 @@ struct kvm_signal_mask {
|
||||||
__u8 sigset[0];
|
__u8 sigset[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.22 KVM_GET_FPU
|
4.22 KVM_GET_FPU
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -541,6 +570,7 @@ struct kvm_fpu {
|
||||||
__u32 pad2;
|
__u32 pad2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.23 KVM_SET_FPU
|
4.23 KVM_SET_FPU
|
||||||
|
|
||||||
Capability: basic
|
Capability: basic
|
||||||
|
@ -566,6 +596,7 @@ struct kvm_fpu {
|
||||||
__u32 pad2;
|
__u32 pad2;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.24 KVM_CREATE_IRQCHIP
|
4.24 KVM_CREATE_IRQCHIP
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
|
@ -579,6 +610,7 @@ ioapic, a virtual PIC (two PICs, nested), and sets up future vcpus to have a
|
||||||
local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23
|
local APIC. IRQ routing for GSIs 0-15 is set to both PIC and IOAPIC; GSI 16-23
|
||||||
only go to the IOAPIC. On ia64, a IOSAPIC is created.
|
only go to the IOAPIC. On ia64, a IOSAPIC is created.
|
||||||
|
|
||||||
|
|
||||||
4.25 KVM_IRQ_LINE
|
4.25 KVM_IRQ_LINE
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
|
@ -600,6 +632,7 @@ struct kvm_irq_level {
|
||||||
__u32 level; /* 0 or 1 */
|
__u32 level; /* 0 or 1 */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.26 KVM_GET_IRQCHIP
|
4.26 KVM_GET_IRQCHIP
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
|
@ -621,6 +654,7 @@ struct kvm_irqchip {
|
||||||
} chip;
|
} chip;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.27 KVM_SET_IRQCHIP
|
4.27 KVM_SET_IRQCHIP
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
|
@ -642,6 +676,7 @@ struct kvm_irqchip {
|
||||||
} chip;
|
} chip;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.28 KVM_XEN_HVM_CONFIG
|
4.28 KVM_XEN_HVM_CONFIG
|
||||||
|
|
||||||
Capability: KVM_CAP_XEN_HVM
|
Capability: KVM_CAP_XEN_HVM
|
||||||
|
@ -666,6 +701,7 @@ struct kvm_xen_hvm_config {
|
||||||
__u8 pad2[30];
|
__u8 pad2[30];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.29 KVM_GET_CLOCK
|
4.29 KVM_GET_CLOCK
|
||||||
|
|
||||||
Capability: KVM_CAP_ADJUST_CLOCK
|
Capability: KVM_CAP_ADJUST_CLOCK
|
||||||
|
@ -684,6 +720,7 @@ struct kvm_clock_data {
|
||||||
__u32 pad[9];
|
__u32 pad[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.30 KVM_SET_CLOCK
|
4.30 KVM_SET_CLOCK
|
||||||
|
|
||||||
Capability: KVM_CAP_ADJUST_CLOCK
|
Capability: KVM_CAP_ADJUST_CLOCK
|
||||||
|
@ -702,6 +739,7 @@ struct kvm_clock_data {
|
||||||
__u32 pad[9];
|
__u32 pad[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.31 KVM_GET_VCPU_EVENTS
|
4.31 KVM_GET_VCPU_EVENTS
|
||||||
|
|
||||||
Capability: KVM_CAP_VCPU_EVENTS
|
Capability: KVM_CAP_VCPU_EVENTS
|
||||||
|
@ -741,6 +779,7 @@ struct kvm_vcpu_events {
|
||||||
KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that
|
KVM_VCPUEVENT_VALID_SHADOW may be set in the flags field to signal that
|
||||||
interrupt.shadow contains a valid state. Otherwise, this field is undefined.
|
interrupt.shadow contains a valid state. Otherwise, this field is undefined.
|
||||||
|
|
||||||
|
|
||||||
4.32 KVM_SET_VCPU_EVENTS
|
4.32 KVM_SET_VCPU_EVENTS
|
||||||
|
|
||||||
Capability: KVM_CAP_VCPU_EVENTS
|
Capability: KVM_CAP_VCPU_EVENTS
|
||||||
|
@ -767,6 +806,7 @@ If KVM_CAP_INTR_SHADOW is available, KVM_VCPUEVENT_VALID_SHADOW can be set in
|
||||||
the flags field to signal that interrupt.shadow contains a valid state and
|
the flags field to signal that interrupt.shadow contains a valid state and
|
||||||
shall be written into the VCPU.
|
shall be written into the VCPU.
|
||||||
|
|
||||||
|
|
||||||
4.33 KVM_GET_DEBUGREGS
|
4.33 KVM_GET_DEBUGREGS
|
||||||
|
|
||||||
Capability: KVM_CAP_DEBUGREGS
|
Capability: KVM_CAP_DEBUGREGS
|
||||||
|
@ -785,6 +825,7 @@ struct kvm_debugregs {
|
||||||
__u64 reserved[9];
|
__u64 reserved[9];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.34 KVM_SET_DEBUGREGS
|
4.34 KVM_SET_DEBUGREGS
|
||||||
|
|
||||||
Capability: KVM_CAP_DEBUGREGS
|
Capability: KVM_CAP_DEBUGREGS
|
||||||
|
@ -798,6 +839,7 @@ Writes debug registers into the vcpu.
|
||||||
See KVM_GET_DEBUGREGS for the data structure. The flags field is unused
|
See KVM_GET_DEBUGREGS for the data structure. The flags field is unused
|
||||||
yet and must be cleared on entry.
|
yet and must be cleared on entry.
|
||||||
|
|
||||||
|
|
||||||
4.35 KVM_SET_USER_MEMORY_REGION
|
4.35 KVM_SET_USER_MEMORY_REGION
|
||||||
|
|
||||||
Capability: KVM_CAP_USER_MEM
|
Capability: KVM_CAP_USER_MEM
|
||||||
|
@ -844,6 +886,7 @@ It is recommended to use this API instead of the KVM_SET_MEMORY_REGION ioctl.
|
||||||
The KVM_SET_MEMORY_REGION does not allow fine grained control over memory
|
The KVM_SET_MEMORY_REGION does not allow fine grained control over memory
|
||||||
allocation and is deprecated.
|
allocation and is deprecated.
|
||||||
|
|
||||||
|
|
||||||
4.36 KVM_SET_TSS_ADDR
|
4.36 KVM_SET_TSS_ADDR
|
||||||
|
|
||||||
Capability: KVM_CAP_SET_TSS_ADDR
|
Capability: KVM_CAP_SET_TSS_ADDR
|
||||||
|
@ -862,6 +905,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware
|
||||||
because of a quirk in the virtualization implementation (see the internals
|
because of a quirk in the virtualization implementation (see the internals
|
||||||
documentation when it pops into existence).
|
documentation when it pops into existence).
|
||||||
|
|
||||||
|
|
||||||
4.37 KVM_ENABLE_CAP
|
4.37 KVM_ENABLE_CAP
|
||||||
|
|
||||||
Capability: KVM_CAP_ENABLE_CAP
|
Capability: KVM_CAP_ENABLE_CAP
|
||||||
|
@ -897,6 +941,7 @@ function properly, this is the place to put them.
|
||||||
__u8 pad[64];
|
__u8 pad[64];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.38 KVM_GET_MP_STATE
|
4.38 KVM_GET_MP_STATE
|
||||||
|
|
||||||
Capability: KVM_CAP_MP_STATE
|
Capability: KVM_CAP_MP_STATE
|
||||||
|
@ -927,6 +972,7 @@ Possible values are:
|
||||||
This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
|
This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
|
||||||
irqchip, the multiprocessing state must be maintained by userspace.
|
irqchip, the multiprocessing state must be maintained by userspace.
|
||||||
|
|
||||||
|
|
||||||
4.39 KVM_SET_MP_STATE
|
4.39 KVM_SET_MP_STATE
|
||||||
|
|
||||||
Capability: KVM_CAP_MP_STATE
|
Capability: KVM_CAP_MP_STATE
|
||||||
|
@ -941,6 +987,7 @@ arguments.
|
||||||
This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
|
This ioctl is only useful after KVM_CREATE_IRQCHIP. Without an in-kernel
|
||||||
irqchip, the multiprocessing state must be maintained by userspace.
|
irqchip, the multiprocessing state must be maintained by userspace.
|
||||||
|
|
||||||
|
|
||||||
4.40 KVM_SET_IDENTITY_MAP_ADDR
|
4.40 KVM_SET_IDENTITY_MAP_ADDR
|
||||||
|
|
||||||
Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR
|
Capability: KVM_CAP_SET_IDENTITY_MAP_ADDR
|
||||||
|
@ -959,6 +1006,7 @@ This ioctl is required on Intel-based hosts. This is needed on Intel hardware
|
||||||
because of a quirk in the virtualization implementation (see the internals
|
because of a quirk in the virtualization implementation (see the internals
|
||||||
documentation when it pops into existence).
|
documentation when it pops into existence).
|
||||||
|
|
||||||
|
|
||||||
4.41 KVM_SET_BOOT_CPU_ID
|
4.41 KVM_SET_BOOT_CPU_ID
|
||||||
|
|
||||||
Capability: KVM_CAP_SET_BOOT_CPU_ID
|
Capability: KVM_CAP_SET_BOOT_CPU_ID
|
||||||
|
@ -971,6 +1019,7 @@ Define which vcpu is the Bootstrap Processor (BSP). Values are the same
|
||||||
as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default
|
as the vcpu id in KVM_CREATE_VCPU. If this ioctl is not called, the default
|
||||||
is vcpu 0.
|
is vcpu 0.
|
||||||
|
|
||||||
|
|
||||||
4.42 KVM_GET_XSAVE
|
4.42 KVM_GET_XSAVE
|
||||||
|
|
||||||
Capability: KVM_CAP_XSAVE
|
Capability: KVM_CAP_XSAVE
|
||||||
|
@ -985,6 +1034,7 @@ struct kvm_xsave {
|
||||||
|
|
||||||
This ioctl would copy current vcpu's xsave struct to the userspace.
|
This ioctl would copy current vcpu's xsave struct to the userspace.
|
||||||
|
|
||||||
|
|
||||||
4.43 KVM_SET_XSAVE
|
4.43 KVM_SET_XSAVE
|
||||||
|
|
||||||
Capability: KVM_CAP_XSAVE
|
Capability: KVM_CAP_XSAVE
|
||||||
|
@ -999,6 +1049,7 @@ struct kvm_xsave {
|
||||||
|
|
||||||
This ioctl would copy userspace's xsave struct to the kernel.
|
This ioctl would copy userspace's xsave struct to the kernel.
|
||||||
|
|
||||||
|
|
||||||
4.44 KVM_GET_XCRS
|
4.44 KVM_GET_XCRS
|
||||||
|
|
||||||
Capability: KVM_CAP_XCRS
|
Capability: KVM_CAP_XCRS
|
||||||
|
@ -1022,6 +1073,7 @@ struct kvm_xcrs {
|
||||||
|
|
||||||
This ioctl would copy current vcpu's xcrs to the userspace.
|
This ioctl would copy current vcpu's xcrs to the userspace.
|
||||||
|
|
||||||
|
|
||||||
4.45 KVM_SET_XCRS
|
4.45 KVM_SET_XCRS
|
||||||
|
|
||||||
Capability: KVM_CAP_XCRS
|
Capability: KVM_CAP_XCRS
|
||||||
|
@ -1045,6 +1097,7 @@ struct kvm_xcrs {
|
||||||
|
|
||||||
This ioctl would set vcpu's xcr to the value userspace specified.
|
This ioctl would set vcpu's xcr to the value userspace specified.
|
||||||
|
|
||||||
|
|
||||||
4.46 KVM_GET_SUPPORTED_CPUID
|
4.46 KVM_GET_SUPPORTED_CPUID
|
||||||
|
|
||||||
Capability: KVM_CAP_EXT_CPUID
|
Capability: KVM_CAP_EXT_CPUID
|
||||||
|
@ -1119,6 +1172,7 @@ support. Instead it is reported via
|
||||||
if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the
|
if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the
|
||||||
feature in userspace, then you can enable the feature for KVM_SET_CPUID2.
|
feature in userspace, then you can enable the feature for KVM_SET_CPUID2.
|
||||||
|
|
||||||
|
|
||||||
4.47 KVM_PPC_GET_PVINFO
|
4.47 KVM_PPC_GET_PVINFO
|
||||||
|
|
||||||
Capability: KVM_CAP_PPC_GET_PVINFO
|
Capability: KVM_CAP_PPC_GET_PVINFO
|
||||||
|
@ -1142,6 +1196,7 @@ of 4 instructions that make up a hypercall.
|
||||||
If any additional field gets added to this structure later on, a bit for that
|
If any additional field gets added to this structure later on, a bit for that
|
||||||
additional piece of information will be set in the flags bitmap.
|
additional piece of information will be set in the flags bitmap.
|
||||||
|
|
||||||
|
|
||||||
4.48 KVM_ASSIGN_PCI_DEVICE
|
4.48 KVM_ASSIGN_PCI_DEVICE
|
||||||
|
|
||||||
Capability: KVM_CAP_DEVICE_ASSIGNMENT
|
Capability: KVM_CAP_DEVICE_ASSIGNMENT
|
||||||
|
@ -1185,6 +1240,7 @@ Only PCI header type 0 devices with PCI BAR resources are supported by
|
||||||
device assignment. The user requesting this ioctl must have read/write
|
device assignment. The user requesting this ioctl must have read/write
|
||||||
access to the PCI sysfs resource files associated with the device.
|
access to the PCI sysfs resource files associated with the device.
|
||||||
|
|
||||||
|
|
||||||
4.49 KVM_DEASSIGN_PCI_DEVICE
|
4.49 KVM_DEASSIGN_PCI_DEVICE
|
||||||
|
|
||||||
Capability: KVM_CAP_DEVICE_DEASSIGNMENT
|
Capability: KVM_CAP_DEVICE_DEASSIGNMENT
|
||||||
|
@ -1198,6 +1254,7 @@ Ends PCI device assignment, releasing all associated resources.
|
||||||
See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is
|
See KVM_CAP_DEVICE_ASSIGNMENT for the data structure. Only assigned_dev_id is
|
||||||
used in kvm_assigned_pci_dev to identify the device.
|
used in kvm_assigned_pci_dev to identify the device.
|
||||||
|
|
||||||
|
|
||||||
4.50 KVM_ASSIGN_DEV_IRQ
|
4.50 KVM_ASSIGN_DEV_IRQ
|
||||||
|
|
||||||
Capability: KVM_CAP_ASSIGN_DEV_IRQ
|
Capability: KVM_CAP_ASSIGN_DEV_IRQ
|
||||||
|
@ -1231,6 +1288,7 @@ The following flags are defined:
|
||||||
It is not valid to specify multiple types per host or guest IRQ. However, the
|
It is not valid to specify multiple types per host or guest IRQ. However, the
|
||||||
IRQ type of host and guest can differ or can even be null.
|
IRQ type of host and guest can differ or can even be null.
|
||||||
|
|
||||||
|
|
||||||
4.51 KVM_DEASSIGN_DEV_IRQ
|
4.51 KVM_DEASSIGN_DEV_IRQ
|
||||||
|
|
||||||
Capability: KVM_CAP_ASSIGN_DEV_IRQ
|
Capability: KVM_CAP_ASSIGN_DEV_IRQ
|
||||||
|
@ -1245,6 +1303,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified
|
||||||
by assigned_dev_id, flags must correspond to the IRQ type specified on
|
by assigned_dev_id, flags must correspond to the IRQ type specified on
|
||||||
KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed.
|
KVM_ASSIGN_DEV_IRQ. Partial deassignment of host or guest IRQ is allowed.
|
||||||
|
|
||||||
|
|
||||||
4.52 KVM_SET_GSI_ROUTING
|
4.52 KVM_SET_GSI_ROUTING
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQ_ROUTING
|
Capability: KVM_CAP_IRQ_ROUTING
|
||||||
|
@ -1293,6 +1352,7 @@ struct kvm_irq_routing_msi {
|
||||||
__u32 pad;
|
__u32 pad;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
4.53 KVM_ASSIGN_SET_MSIX_NR
|
4.53 KVM_ASSIGN_SET_MSIX_NR
|
||||||
|
|
||||||
Capability: KVM_CAP_DEVICE_MSIX
|
Capability: KVM_CAP_DEVICE_MSIX
|
||||||
|
@ -1314,6 +1374,7 @@ struct kvm_assigned_msix_nr {
|
||||||
|
|
||||||
#define KVM_MAX_MSIX_PER_DEV 256
|
#define KVM_MAX_MSIX_PER_DEV 256
|
||||||
|
|
||||||
|
|
||||||
4.54 KVM_ASSIGN_SET_MSIX_ENTRY
|
4.54 KVM_ASSIGN_SET_MSIX_ENTRY
|
||||||
|
|
||||||
Capability: KVM_CAP_DEVICE_MSIX
|
Capability: KVM_CAP_DEVICE_MSIX
|
||||||
|
@ -1332,7 +1393,8 @@ struct kvm_assigned_msix_entry {
|
||||||
__u16 padding[3];
|
__u16 padding[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
4.54 KVM_SET_TSC_KHZ
|
|
||||||
|
4.55 KVM_SET_TSC_KHZ
|
||||||
|
|
||||||
Capability: KVM_CAP_TSC_CONTROL
|
Capability: KVM_CAP_TSC_CONTROL
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
@ -1343,7 +1405,8 @@ Returns: 0 on success, -1 on error
|
||||||
Specifies the tsc frequency for the virtual machine. The unit of the
|
Specifies the tsc frequency for the virtual machine. The unit of the
|
||||||
frequency is KHz.
|
frequency is KHz.
|
||||||
|
|
||||||
4.55 KVM_GET_TSC_KHZ
|
|
||||||
|
4.56 KVM_GET_TSC_KHZ
|
||||||
|
|
||||||
Capability: KVM_CAP_GET_TSC_KHZ
|
Capability: KVM_CAP_GET_TSC_KHZ
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
@ -1355,7 +1418,8 @@ Returns the tsc frequency of the guest. The unit of the return value is
|
||||||
KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
|
KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
|
||||||
error.
|
error.
|
||||||
|
|
||||||
4.56 KVM_GET_LAPIC
|
|
||||||
|
4.57 KVM_GET_LAPIC
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
@ -1371,7 +1435,8 @@ struct kvm_lapic_state {
|
||||||
Reads the Local APIC registers and copies them into the input argument. The
|
Reads the Local APIC registers and copies them into the input argument. The
|
||||||
data format and layout are the same as documented in the architecture manual.
|
data format and layout are the same as documented in the architecture manual.
|
||||||
|
|
||||||
4.57 KVM_SET_LAPIC
|
|
||||||
|
4.58 KVM_SET_LAPIC
|
||||||
|
|
||||||
Capability: KVM_CAP_IRQCHIP
|
Capability: KVM_CAP_IRQCHIP
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
@ -1387,7 +1452,8 @@ struct kvm_lapic_state {
|
||||||
Copies the input argument into the the Local APIC registers. The data format
|
Copies the input argument into the the Local APIC registers. The data format
|
||||||
and layout are the same as documented in the architecture manual.
|
and layout are the same as documented in the architecture manual.
|
||||||
|
|
||||||
4.58 KVM_IOEVENTFD
|
|
||||||
|
4.59 KVM_IOEVENTFD
|
||||||
|
|
||||||
Capability: KVM_CAP_IOEVENTFD
|
Capability: KVM_CAP_IOEVENTFD
|
||||||
Architectures: all
|
Architectures: all
|
||||||
|
@ -1417,7 +1483,8 @@ The following flags are defined:
|
||||||
If datamatch flag is set, the event will be signaled only if the written value
|
If datamatch flag is set, the event will be signaled only if the written value
|
||||||
to the registered address is equal to datamatch in struct kvm_ioeventfd.
|
to the registered address is equal to datamatch in struct kvm_ioeventfd.
|
||||||
|
|
||||||
4.59 KVM_DIRTY_TLB
|
|
||||||
|
4.60 KVM_DIRTY_TLB
|
||||||
|
|
||||||
Capability: KVM_CAP_SW_TLB
|
Capability: KVM_CAP_SW_TLB
|
||||||
Architectures: ppc
|
Architectures: ppc
|
||||||
|
@ -1449,7 +1516,8 @@ The "num_dirty" field is a performance hint for KVM to determine whether it
|
||||||
should skip processing the bitmap and just invalidate everything. It must
|
should skip processing the bitmap and just invalidate everything. It must
|
||||||
be set to the number of set bits in the bitmap.
|
be set to the number of set bits in the bitmap.
|
||||||
|
|
||||||
4.60 KVM_ASSIGN_SET_INTX_MASK
|
|
||||||
|
4.61 KVM_ASSIGN_SET_INTX_MASK
|
||||||
|
|
||||||
Capability: KVM_CAP_PCI_2_3
|
Capability: KVM_CAP_PCI_2_3
|
||||||
Architectures: x86
|
Architectures: x86
|
||||||
|
@ -1482,6 +1550,7 @@ See KVM_ASSIGN_DEV_IRQ for the data structure. The target device is specified
|
||||||
by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is
|
by assigned_dev_id. In the flags field, only KVM_DEV_ASSIGN_MASK_INTX is
|
||||||
evaluated.
|
evaluated.
|
||||||
|
|
||||||
|
|
||||||
4.62 KVM_CREATE_SPAPR_TCE
|
4.62 KVM_CREATE_SPAPR_TCE
|
||||||
|
|
||||||
Capability: KVM_CAP_SPAPR_TCE
|
Capability: KVM_CAP_SPAPR_TCE
|
||||||
|
@ -1517,6 +1586,7 @@ the entries written by kernel-handled H_PUT_TCE calls, and also lets
|
||||||
userspace update the TCE table directly which is useful in some
|
userspace update the TCE table directly which is useful in some
|
||||||
circumstances.
|
circumstances.
|
||||||
|
|
||||||
|
|
||||||
4.63 KVM_ALLOCATE_RMA
|
4.63 KVM_ALLOCATE_RMA
|
||||||
|
|
||||||
Capability: KVM_CAP_PPC_RMA
|
Capability: KVM_CAP_PPC_RMA
|
||||||
|
@ -1549,6 +1619,7 @@ is supported; 2 if the processor requires all virtual machines to have
|
||||||
an RMA, or 1 if the processor can use an RMA but doesn't require it,
|
an RMA, or 1 if the processor can use an RMA but doesn't require it,
|
||||||
because it supports the Virtual RMA (VRMA) facility.
|
because it supports the Virtual RMA (VRMA) facility.
|
||||||
|
|
||||||
|
|
||||||
4.64 KVM_NMI
|
4.64 KVM_NMI
|
||||||
|
|
||||||
Capability: KVM_CAP_USER_NMI
|
Capability: KVM_CAP_USER_NMI
|
||||||
|
@ -1574,6 +1645,7 @@ following algorithm:
|
||||||
Some guests configure the LINT1 NMI input to cause a panic, aiding in
|
Some guests configure the LINT1 NMI input to cause a panic, aiding in
|
||||||
debugging.
|
debugging.
|
||||||
|
|
||||||
|
|
||||||
4.65 KVM_S390_UCAS_MAP
|
4.65 KVM_S390_UCAS_MAP
|
||||||
|
|
||||||
Capability: KVM_CAP_S390_UCONTROL
|
Capability: KVM_CAP_S390_UCONTROL
|
||||||
|
@ -1593,6 +1665,7 @@ This ioctl maps the memory at "user_addr" with the length "length" to
|
||||||
the vcpu's address space starting at "vcpu_addr". All parameters need to
|
the vcpu's address space starting at "vcpu_addr". All parameters need to
|
||||||
be alligned by 1 megabyte.
|
be alligned by 1 megabyte.
|
||||||
|
|
||||||
|
|
||||||
4.66 KVM_S390_UCAS_UNMAP
|
4.66 KVM_S390_UCAS_UNMAP
|
||||||
|
|
||||||
Capability: KVM_CAP_S390_UCONTROL
|
Capability: KVM_CAP_S390_UCONTROL
|
||||||
|
@ -1612,6 +1685,7 @@ This ioctl unmaps the memory in the vcpu's address space starting at
|
||||||
"vcpu_addr" with the length "length". The field "user_addr" is ignored.
|
"vcpu_addr" with the length "length". The field "user_addr" is ignored.
|
||||||
All parameters need to be alligned by 1 megabyte.
|
All parameters need to be alligned by 1 megabyte.
|
||||||
|
|
||||||
|
|
||||||
4.67 KVM_S390_VCPU_FAULT
|
4.67 KVM_S390_VCPU_FAULT
|
||||||
|
|
||||||
Capability: KVM_CAP_S390_UCONTROL
|
Capability: KVM_CAP_S390_UCONTROL
|
||||||
|
@ -1628,6 +1702,7 @@ table upfront. This is useful to handle validity intercepts for user
|
||||||
controlled virtual machines to fault in the virtual cpu's lowcore pages
|
controlled virtual machines to fault in the virtual cpu's lowcore pages
|
||||||
prior to calling the KVM_RUN ioctl.
|
prior to calling the KVM_RUN ioctl.
|
||||||
|
|
||||||
|
|
||||||
4.68 KVM_SET_ONE_REG
|
4.68 KVM_SET_ONE_REG
|
||||||
|
|
||||||
Capability: KVM_CAP_ONE_REG
|
Capability: KVM_CAP_ONE_REG
|
||||||
|
@ -1653,6 +1728,7 @@ registers, find a list below:
|
||||||
| |
|
| |
|
||||||
PPC | KVM_REG_PPC_HIOR | 64
|
PPC | KVM_REG_PPC_HIOR | 64
|
||||||
|
|
||||||
|
|
||||||
4.69 KVM_GET_ONE_REG
|
4.69 KVM_GET_ONE_REG
|
||||||
|
|
||||||
Capability: KVM_CAP_ONE_REG
|
Capability: KVM_CAP_ONE_REG
|
||||||
|
@ -1669,6 +1745,7 @@ at the memory location pointed to by "addr".
|
||||||
The list of registers accessible using this interface is identical to the
|
The list of registers accessible using this interface is identical to the
|
||||||
list in 4.64.
|
list in 4.64.
|
||||||
|
|
||||||
|
|
||||||
4.70 KVM_KVMCLOCK_CTRL
|
4.70 KVM_KVMCLOCK_CTRL
|
||||||
|
|
||||||
Capability: KVM_CAP_KVMCLOCK_CTRL
|
Capability: KVM_CAP_KVMCLOCK_CTRL
|
||||||
|
@ -1689,6 +1766,7 @@ where the guest will clear the flag: when the soft lockup watchdog timer resets
|
||||||
itself or when a soft lockup is detected. This ioctl can be called any time
|
itself or when a soft lockup is detected. This ioctl can be called any time
|
||||||
after pausing the vcpu, but before it is resumed.
|
after pausing the vcpu, but before it is resumed.
|
||||||
|
|
||||||
|
|
||||||
4.71 KVM_SIGNAL_MSI
|
4.71 KVM_SIGNAL_MSI
|
||||||
|
|
||||||
Capability: KVM_CAP_SIGNAL_MSI
|
Capability: KVM_CAP_SIGNAL_MSI
|
||||||
|
@ -1710,7 +1788,9 @@ struct kvm_msi {
|
||||||
|
|
||||||
No flags are defined so far. The corresponding field must be 0.
|
No flags are defined so far. The corresponding field must be 0.
|
||||||
|
|
||||||
|
|
||||||
5. The kvm_run structure
|
5. The kvm_run structure
|
||||||
|
------------------------
|
||||||
|
|
||||||
Application code obtains a pointer to the kvm_run structure by
|
Application code obtains a pointer to the kvm_run structure by
|
||||||
mmap()ing a vcpu fd. From that point, application code can control
|
mmap()ing a vcpu fd. From that point, application code can control
|
||||||
|
@ -1951,7 +2031,9 @@ and usually define the validity of a groups of registers. (e.g. one bit
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
6. Capabilities that can be enabled
|
6. Capabilities that can be enabled
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
There are certain capabilities that change the behavior of the virtual CPU when
|
There are certain capabilities that change the behavior of the virtual CPU when
|
||||||
enabled. To enable them, please see section 4.37. Below you can find a list of
|
enabled. To enable them, please see section 4.37. Below you can find a list of
|
||||||
|
@ -1967,6 +2049,7 @@ The following information is provided along with the description:
|
||||||
Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
|
Returns: the return value. General error numbers (EBADF, ENOMEM, EINVAL)
|
||||||
are not detailed, but errors with specific meanings are.
|
are not detailed, but errors with specific meanings are.
|
||||||
|
|
||||||
|
|
||||||
6.1 KVM_CAP_PPC_OSI
|
6.1 KVM_CAP_PPC_OSI
|
||||||
|
|
||||||
Architectures: ppc
|
Architectures: ppc
|
||||||
|
@ -1980,6 +2063,7 @@ between the guest and the host.
|
||||||
|
|
||||||
When this capability is enabled, KVM_EXIT_OSI can occur.
|
When this capability is enabled, KVM_EXIT_OSI can occur.
|
||||||
|
|
||||||
|
|
||||||
6.2 KVM_CAP_PPC_PAPR
|
6.2 KVM_CAP_PPC_PAPR
|
||||||
|
|
||||||
Architectures: ppc
|
Architectures: ppc
|
||||||
|
@ -1998,6 +2082,7 @@ HTAB invisible to the guest.
|
||||||
|
|
||||||
When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur.
|
When this capability is enabled, KVM_EXIT_PAPR_HCALL can occur.
|
||||||
|
|
||||||
|
|
||||||
6.3 KVM_CAP_SW_TLB
|
6.3 KVM_CAP_SW_TLB
|
||||||
|
|
||||||
Architectures: ppc
|
Architectures: ppc
|
||||||
|
|
Loading…
Reference in New Issue