Lines Matching +full:compare +full:- +full:and +full:- +full:swap
1 .. SPDX-License-Identifier: GPL-2.0
4 The Definitive KVM (Kernel-based Virtual Machine) API Documentation
13 - System ioctls: These query and set global attributes which affect the
17 - VM ioctls: These query and set attributes that affect an entire virtual
19 create virtual cpus (vcpus) and devices.
24 - vcpu ioctls: These query and set attributes that control the operation
32 - device ioctls: These query and set attributes that control the operation
46 create a virtual cpu or device and return a file descriptor pointing to
52 of fork() and the SCM_RIGHTS facility of unix domain socket. These
60 file descriptor, not its creator (process). In other words, the VM and
64 not be freed until both the parent (original) process and its child have
70 discouraged and may have unwanted side effects, e.g. memory allocated
71 by and on behalf of the VM's process may not be freed/unaccounted when
80 facility that allows backward-compatible extensions to the API to be
81 queried and used.
84 Instead, kvm defines extension identifiers and a facility to query
104 the ioctl returns -ENOTTY.
108 x86 includes both i386 and x86_64.
122 -----------------------
131 expected that this number will change. However, Linux 2.6.20 and
132 2.6.21 report earlier versions; these are not documented and not
139 -----------------
147 The new VM has no virtual cpus and no memory.
159 KVM_CAP_S390_UCONTROL and use the flag KVM_VM_S390_UCONTROL as
167 memory layout to fit in user mode), check KVM_CAP_MIPS_VZ and use the
178 address used by the VM. The IPA_Bits is encoded in bits[7-0] of the
193 Host_IPA_Limit is the maximum possible value for IPA_Bits on the host and
194 is dependent on the CPU capability and the kernel configuration. The limit can
196 ioctl() at run-time.
208 ----------------------------------------------------------
214 :Returns: 0 on success; -1 on error
231 The user fills in the size of the indices array in nmsrs, and in return
232 kvm adjusts nmsrs to reflect the actual number of msrs and fills in the
236 varies by kvm version and host processor, but does not change otherwise.
244 and processor features that are exposed via MSRs (e.g., VMX capabilities).
245 This list also varies by kvm version and host processor, but does not change
250 -----------------------
259 kvm API. Userspace passes an extension identifier (an integer) and
261 Generally 0 means no and 1 means yes, but some extensions may report
269 --------------------------
282 the VCPU file descriptor can be mmap-ed, including:
284 - if KVM_CAP_COALESCED_MMIO is available, a page at
289 - if KVM_CAP_DIRTY_LOG_RING is available, a number of pages at
295 -------------------
301 :Returns: vcpu fd on success, -1 on error
307 the KVM_CHECK_EXTENSION ioctl() at run-time.
309 KVM_CAP_MAX_VCPUS of the KVM_CHECK_EXTENSION ioctl() at run-time.
317 KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
332 single-threaded guest vcpus, it should make all vcpu ids be a multiple
342 --------------------------------
348 :Returns: 0 on success, -1 on error
367 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of slot field specifies
380 ------------
386 :Returns: 0 on success, -1 on error
394 ENOSYS data abort outside memslots with no syndrome info and
407 -----------------
413 :Returns: 0 on success, -1 on error
447 -----------------
453 :Returns: 0 on success, -1 on error
461 ------------------
467 :Returns: 0 on success, -1 on error
484 /* ppc -- see arch/powerpc/include/uapi/asm/kvm.h */
492 ------------------
498 :Returns: 0 on success, -1 on error
505 ------------------
511 :Returns: 0 on success, -1 on error
532 ------------------
557 -EEXIST if an interrupt is already enqueued
558 -EINVAL the irq number is invalid
559 -ENXIO if the PIC is in the kernel
560 -EFAULT if the pointer is invalid
564 ioctl is useful if the in-kernel PIC is not used.
592 and incurs unexpected behavior.
594 This is an asynchronous vcpu ioctl and can be invoked from any thread.
602 This is an asynchronous vcpu ioctl and can be invoked from any thread.
604 RISC-V:
612 This sets external interrupt for a virtual CPU and it will receive
619 This is an asynchronous vcpu ioctl and can be invoked from any thread.
627 This is an asynchronous vcpu ioctl and can be invoked from any thread.
631 -----------------
638 -1 on error
641 Reads the values of MSR-based features that are available for the VM. This
642 is similar to KVM_GET_SUPPORTED_CPUID, but it returns MSR indices and values.
643 The list of msr-based features can be obtained using KVM_GET_MSR_FEATURE_INDEX_LIST
647 Reads model-specific registers from the vcpu. Supported msr indices can
666 size of the entries array) and the 'index' member of each array entry.
671 -----------------
677 :Returns: number of msrs successfully set (see below), -1 on error
679 Writes model-specific registers to the vcpu. See KVM_GET_MSRS for the
683 size of the entries array), and the 'index' and 'data' members of each
688 by KVM, etc..., it stops processing the MSR list and returns the number of
693 ------------------
699 :Returns: 0 on success, -1 on error
705 - If this IOCTL fails, KVM gives no guarantees that previous valid CPUID
708 - Using KVM_SET_CPUID{,2} after KVM_RUN, i.e. changing the guest vCPU model
710 - Using heterogeneous CPUID configurations, modulo APIC IDs, topology, etc...
733 ------------------------
739 :Returns: 0 on success, -1 on error
743 unblocked signal received (except SIGKILL and SIGSTOP, which retain
744 their traditional behaviour) will cause KVM_RUN to return with -EINTR.
759 ----------------
765 :Returns: 0 on success, -1 on error
771 /* x86: for KVM_GET_FPU and KVM_SET_FPU */
786 /* LoongArch: for KVM_GET_FPU and KVM_SET_FPU */
797 ----------------
803 :Returns: 0 on success, -1 on error
809 /* x86: for KVM_GET_FPU and KVM_SET_FPU */
824 /* LoongArch: for KVM_GET_FPU and KVM_SET_FPU */
835 -----------------------
841 :Returns: 0 on success, -1 on error
844 On x86, creates a virtual ioapic, a virtual PIC (two PICs, nested), and sets up
845 future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both
846 PIC and IOAPIC; GSI 16-23 only go to the IOAPIC.
857 -----------------
863 :Returns: 0 on success, -1 on error
867 been previously created with KVM_CREATE_IRQCHIP. Note that edge-triggered
868 interrupts require the level to be set to 1 and then back to 0.
870 On real hardware, interrupt pins can be active-low or active-high. This
875 (active-low/active-high) for level-triggered interrupts, and KVM used
877 active-low interrupts, the above convention is now valid on x86 too.
879 should not present interrupts to the guest as active-low unless this
880 capability is present (or unless it is not using the in-kernel irqchip,
885 in-kernel irqchip (GIC), and for in-kernel irqchip can tell the GIC to
894 - KVM_ARM_IRQ_TYPE_CPU:
895 out-of-kernel GIC: irq_id 0 is IRQ, irq_id 1 is FIQ
896 - KVM_ARM_IRQ_TYPE_SPI:
897 in-kernel GIC: SPI, irq_id between 32 and 1019 (incl.)
899 - KVM_ARM_IRQ_TYPE_PPI:
900 in-kernel GIC: PPI, irq_id between 16 and 31 (incl.)
911 injection of interrupts for the in-kernel irqchip. KVM_IRQ_LINE can always
926 --------------------
932 :Returns: 0 on success, -1 on error
951 --------------------
957 :Returns: 0 on success, -1 on error
976 -----------------------
982 :Returns: 0 on success, -1 on error
985 page, and provides the starting address and size of the hypercall
987 page of a blob (32- or 64-bit, depending on the vcpu mode) to guest
1007 intercepted and passed to userspace through KVM_EXIT_XEN. In this
1008 case, all of the blob size and address fields must be zero.
1022 ------------------
1028 :Returns: 0 on success, -1 on error
1072 ------------------
1078 :Returns: 0 on success, -1 on error
1087 If set, KVM will compare the value of the `realtime` field
1107 ------------------------
1114 :Returns: 0 on success, -1 on error
1119 Gets currently pending exceptions, interrupts, and NMIs as well as related
1159 - KVM_VCPUEVENT_VALID_SHADOW may be set to signal that
1162 - KVM_VCPUEVENT_VALID_SMM may be set to signal that smi contains a
1165 - KVM_VCPUEVENT_VALID_PAYLOAD may be set to signal that the
1166 exception_has_payload, exception_payload, and exception.pending
1170 - KVM_VCPUEVENT_VALID_TRIPLE_FAULT may be set to signal that the
1186 This API provides a way to read and write the pending 'event' state that is not
1189 guest-visible registers. It is not possible to 'cancel' an SError that has been
1192 A device being emulated in user-space may also wish to generate an SError. To do
1193 this the events structure can be populated by user-space. The current state
1196 be followed. (2.5.3 of DDI0587.a "ARM Reliability, Availability, and
1202 always have a non-zero value when read, and the agent making an SError pending
1204 the system supports KVM_CAP_ARM_INJECT_SERROR_ESR, but user-space sets the events
1208 -EINVAL. Setting anything other than the lower 24bits of exception.serror_esr
1209 will return -EINVAL.
1230 ------------------------
1237 :Returns: 0 on success, -1 on error
1242 Set pending exceptions, interrupts, and NMIs as well as related states of the
1250 suppress overwriting the current in-kernel state. The bits are:
1255 KVM_VCPUEVENT_VALID_SMM transfer the smi sub-struct.
1259 the flags field to signal that interrupt.shadow contains a valid state and
1266 exception_has_payload, exception_payload, and exception.pending fields
1267 contain a valid state and shall be written into the VCPU.
1271 a valid state and shall be written into the VCPU.
1297 ----------------------
1303 :Returns: 0 on success, -1 on error
1319 ----------------------
1325 :Returns: 0 on success, -1 on error
1330 yet and must be cleared on entry.
1334 -------------------------------
1340 :Returns: 0 on success, -1 on error
1357 memory slot. Bits 0-15 of "slot" specify the slot id and this value
1362 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of "slot"
1376 anonymous memory, ordinary files, and hugetlbfs.
1381 It is recommended that the lower 21 bits of guest_phys_addr and userspace_addr
1385 The flags field supports two flags: KVM_MEM_LOG_DIRTY_PAGES and
1389 to make a new slot read-only. In this case, writes to this memory will be
1397 Note: On arm64, a write generated by the page-table walker (to update
1398 the Access and Dirty flags, for example) never results in a
1401 page-table walker, making it impossible to emulate the access.
1402 Instead, an abort (data abort if the cause of the page-table update
1409 Returns -EINVAL if the VM has the KVM_VM_S390_UCONTROL flag set.
1410 Returns -EINVAL if called on a protected VM.
1413 ---------------------
1419 :Returns: 0 on success, -1 on error
1421 This ioctl defines the physical address of a three-page region in the guest
1423 guest physical address space and must not conflict with any memory slot
1427 This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1433 -------------------
1439 :Returns: 0 on success; -1 on error
1445 :Returns: 0 on success; -1 on error
1484 The vcpu ioctl should be used for vcpu-specific capabilities, the vm ioctl
1485 for vm-wide capabilities.
1488 ---------------------
1494 :Returns: 0 on success; -1 on error
1512 KVM_MP_STATE_INIT_RECEIVED the vcpu has received an INIT signal, and is
1514 KVM_MP_STATE_HALTED the vcpu has executed a HLT instruction and
1524 KVM_MP_STATE_SUSPENDED the vcpu is in a suspend state and is waiting
1529 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1550 event and inadvertently waste CPU cycles.
1562 The only states that are valid are KVM_MP_STATE_STOPPED and
1569 ---------------------
1575 :Returns: 0 on success; -1 on error
1581 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1587 The only states that are valid are KVM_MP_STATE_STOPPED and
1594 ------------------------------
1600 :Returns: 0 on success, -1 on error
1602 This ioctl defines the physical address of a one-page region in the guest
1604 guest physical address space and must not conflict with any memory slot
1611 This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1618 ------------------------
1624 :Returns: 0 on success, -1 on error
1633 ------------------
1639 :Returns: 0 on success, -1 on error
1653 ------------------
1655 :Capability: KVM_CAP_XSAVE and KVM_CAP_XSAVE2
1659 :Returns: 0 on success, -1 on error
1681 -----------------
1687 :Returns: 0 on success, -1 on error
1708 -----------------
1714 :Returns: 0 on success, -1 on error
1735 ----------------------------
1741 :Returns: 0 on success, -1 on error
1767 hardware and kvm in its default configuration. Userspace can use the
1769 KVM_SET_CPUID2) that is consistent with hardware, kernel, and
1770 userspace capabilities, and with user requirements (for example, the
1774 Dynamically-enabled feature bits need to be requested with
1784 with the 'nent' field indicating the number of entries in the variable-size
1787 the 'nent' field is adjusted and an error (ENOMEM) is returned. If the
1819 if that returns true and you use KVM_CREATE_IRQCHIP, or if you emulate the
1824 -----------------------
1854 ------------------------
1860 :Returns: 0 on success, -1 on error
1866 - GSI routing does not apply to KVM_IRQ_LINE but only to KVM_IRQFD.
1904 - KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI routing entry
1905 type, specifies that the devid field contains a valid value. The per-VM
1909 - zero otherwise
1934 address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
1968 --------------------
1974 :Returns: 0 on success, -1 on error
1984 --------------------
1990 :Returns: virtual tsc-khz on success, negative value on error
1993 KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
1998 ------------------
2004 :Returns: 0 on success, -1 on error
2013 Reads the Local APIC registers and copies them into the input argument. The
2014 data format and layout are the same as documented in the architecture manual.
2019 the APIC_ID register (bytes 32-35). xAPIC only allows an 8-bit APIC ID
2020 which is stored in bits 31-24 of the APIC register, or equivalently in
2029 ------------------
2035 :Returns: 0 on success, -1 on error
2045 and layout are the same as documented in the architecture manual.
2047 The format of the APIC ID register (bytes 32-35 of struct kvm_lapic_state's
2053 ------------------
2076 For the special case of virtio-ccw devices on s390, the ioevent is matched
2090 For virtio-ccw devices, addr contains the subchannel id and datamatch the
2093 With KVM_CAP_IOEVENTFD_ANY_LENGTH, a zero length ioeventfd is allowed, and
2094 the kernel will ignore the length of guest write and may get a faster vmexit.
2099 ------------------
2105 :Returns: 0 on success, -1 on error
2125 The array is little-endian: the bit 0 is the least significant bit of the
2130 should skip processing the bitmap and just invalidate everything. It must
2135 -------------------------
2144 is an IOMMU for PAPR-style virtual I/O. It is used to translate
2146 and provides a scatter/gather capability for PAPR virtual I/O.
2158 which this TCE table will translate - the table will contain one 64
2164 liobns will cause a vm exit and must be handled by userspace.
2168 the entries written by kernel-handled H_PUT_TCE calls, and also lets
2174 ---------------------
2183 time by the kernel. An RMA is a physically-contiguous, aligned region
2185 will be accessed by real-mode (MMU off) accesses in a KVM guest.
2187 includes 64MB, 128MB, 256MB and some larger powers of two.
2210 ------------
2216 :Returns: 0 on success, -1 on error
2220 between the virtual cpu core and virtual local APIC. After KVM_CREATE_IRQCHIP
2226 - pause the vcpu
2227 - read the local APIC's state (KVM_GET_LAPIC)
2228 - check whether changing LINT1 will queue an NMI (see the LVT entry for LINT1)
2229 - if so, issue KVM_NMI
2230 - resume the vcpu
2237 ----------------------
2259 ------------------------
2281 ------------------------
2299 --------------------
2330 refers to the register identifier as described below and addr is a pointer
2332 and architecture specific registers. Each have their own range of operation
2333 and their own constants and width. To keep track of the implemented
2542 ARM 32-bit CP15 registers have the following id bit patterns::
2546 ARM 64-bit CP15 registers have the following id bit patterns::
2554 ARM 32-bit VFP control registers have the following id bit patterns::
2558 ARM 64-bit FP registers have the following id bit patterns::
2562 ARM firmware pseudo-registers have the following bit pattern::
2570 arm64 core/FP-SIMD registers have the following id bit patterns. Note
2604 .. [1] These encodings are not accepted for SVE-enabled vcpus. See
2622 are KVM_REG_ARM_TIMER_CVAL and KVM_REG_ARM_TIMER_CNT, which map to
2623 system registers CNTV_CVAL_EL0 and CNTVCT_EL0 respectively. These
2625 derived from the register encoding for CNTVCT_EL0 and TIMER_CNT is
2629 arm64 firmware pseudo-registers have the following bit pattern::
2638 0x6060 0000 0015 ffff KVM_REG_ARM64_SVE_VLS pseudo-register
2641 ENOENT. max_vq is the vcpu's maximum supported vector length in 128-bit
2650 and KVM_ARM_VCPU_FINALIZE for more information about this procedure.
2652 KVM_REG_ARM64_SVE_VLS is a pseudo-register that allows the set of vector
2653 lengths supported by the vcpu to be discovered and configured by
2656 __u64[KVM_ARM64_SVE_VLS_WORDS], and encodes the set of vector lengths as
2662 ((vector_lengths[(vq - KVM_ARM64_SVE_VQ_MIN) / 64] >>
2663 ((vq - KVM_ARM64_SVE_VQ_MIN) % 64)) & 1))
2670 this vcpu, and determines which register slices are visible through
2685 is hardware-dependent and may not be available. Attempting to configure
2692 arm64 bitmap feature firmware pseudo-registers have the following bit pattern::
2700 discover the available services via KVM_GET_ONE_REG, and write back the
2706 a -EBUSY to userspace.
2719 patterns depending on whether they're 32-bit or 64-bit registers::
2721 0x7020 0000 0001 00 <reg:5> <sel:3> (32-bit)
2722 0x7030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2724 Note: KVM_REG_MIPS_CP0_ENTRYLO0 and KVM_REG_MIPS_CP0_ENTRYLO1 are the MIPS64
2726 hardware, host kernel, guest, and whether XPA is present in the guest, i.e.
2727 with the RI and XI bits (if they exist) in bits 63 and 62 respectively, and
2741 always accessed according to the current guest FPU mode (Status.FR and
2742 Config5.FRE), i.e. as the guest would see them, and they become unpredictable
2747 0x7020 0000 0003 00 <0:3> <reg:5> (32-bit FPU registers)
2748 0x7030 0000 0003 00 <0:3> <reg:5> (64-bit FPU registers)
2749 0x7040 0000 0003 00 <0:3> <reg:5> (128-bit MSA vector registers)
2761 RISC-V registers are mapped using the lower 32 bits. The upper 8 bits of
2764 RISC-V config registers are meant for configuring a Guest VCPU and it has
2770 Following are the RISC-V config registers:
2782 RISC-V core registers represent the general execution state of a Guest VCPU
2783 and it has the following id bit patterns::
2788 Following are the RISC-V core registers:
2825 0x80x0 0000 0200 0020 mode Privilege mode (1 = S-mode or 0 = U-mode)
2828 RISC-V csr registers represent the supervisor mode control/status registers
2829 of a Guest VCPU and it has the following id bit patterns::
2834 Following are the RISC-V csr registers:
2847 0x80x0 0000 0300 0008 satp Supervisor address translation and protection
2850 RISC-V timer registers represent the timer state of a Guest VCPU and it has
2855 Following are the RISC-V timer registers:
2860 0x8030 0000 0400 0000 frequency Time base frequency (read-only)
2862 0x8030 0000 0400 0002 compare Time compare programmed by Guest
2863 0x8030 0000 0400 0003 state Time compare state (1 = ON or 0 = OFF)
2866 RISC-V F-extension registers represent the single precision floating point
2867 state of a Guest VCPU and it has the following id bit patterns::
2871 Following are the RISC-V F-extension registers:
2879 0x8020 0000 0500 0020 fcsr Floating point control and status register
2882 RISC-V D-extension registers represent the double precision floating point
2883 state of a Guest VCPU and it has the following id bit patterns::
2886 0x8030 0000 06 <index into the __riscv_d_ext_state struct:24> (non-fcsr)
2888 Following are the RISC-V D-extension registers:
2896 0x8020 0000 0600 0020 fcsr Floating point control and status register
2903 cpu, and they have the following id bit patterns::
2905 0x9030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2908 such as set vcpu counter or reset vcpu, and they have the following id bit patterns::
2914 --------------------
2919 :Parameters: struct kvm_one_reg (in and out)
2944 ----------------------
2950 :Returns: 0 on success, -1 on error
2957 shared between guest and host, specifically the second bit of the flags
2959 the host and read/cleared exclusively by the guest. The guest operation of
2960 checking and clearing the flag must be an atomic operation so
2961 load-link/store-conditional, or equivalent must be used. There are two cases
2968 -------------------
2974 :Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error
2976 Directly inject a MSI message. Only valid with in-kernel irqchip that handles
2991 KVM_MSI_VALID_DEVID: devid contains a valid value. The per-VM
3002 address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
3007 --------------------
3013 :Returns: 0 on success, -1 on error
3015 Creates an in-kernel device model for the i8254 PIT. This call is only valid
3016 after enabling in-kernel irqchip support via KVM_CREATE_IRQCHIP. The following
3028 PIT timer interrupts may use a per-VM kernel thread for injection. If it
3031 kvm-pit/<owner-process-pid>
3040 -----------------
3046 :Returns: 0 on success, -1 on error
3048 Retrieves the state of the in-kernel PIT model. Only valid after
3068 -----------------
3074 :Returns: 0 on success, -1 on error
3076 Sets the state of the in-kernel PIT model. Only valid after KVM_CREATE_PIT2.
3083 --------------------------
3089 :Returns: 0 on success, -1 on error
3091 This populates and returns a structure describing the features of
3094 device-tree properties for the guest operating system.
3108 - KVM_PPC_PAGE_SIZES_REAL:
3113 - KVM_PPC_1T_SEGMENTS
3117 - KVM_PPC_NO_HASH
3145 8 entries sorted by increasing sizes and an entry with a "0" shift
3146 is an empty entry and a terminator::
3158 --------------
3164 :Returns: 0 on success, -1 on error
3167 kvm_irqfd.fd specifies the file descriptor to use as the eventfd and
3172 and kvm_irqfd.gsi.
3174 With KVM_CAP_IRQFD_RESAMPLE, KVM_IRQFD supports a de-assert and notify
3175 mechanism allowing emulation of level-triggered, irqfd-based
3180 as from an EOI, the gsi is de-asserted and the user is notified via
3181 kvm_irqfd.resamplefd. It is the user's responsibility to re-queue
3185 and need not be specified with KVM_IRQFD_FLAG_DEASSIGN.
3189 - in case no routing entry is associated to this gsi, injection fails
3190 - in case the gsi is associated to an irqchip routing entry,
3192 - in case the gsi is associated to an MSI routing entry, the MSI
3193 message and device ID are translated into an LPI (support restricted
3194 to GICv3 ITS in-kernel emulation).
3197 --------------------------
3203 :Returns: 0 on success, -1 on error
3208 virtualization. Otherwise the capability doesn't exist and the ioctl
3213 are, it will do nothing and return an EBUSY error.
3215 The parameter is a pointer to a 32-bit unsigned integer variable
3217 table, which must be between 18 and 46. On successful return from the
3222 default-sized hash table (16 MB).
3226 table will be freed and a new one allocated. If this is ioctl is
3230 real-mode area (VRMA) facility, the kernel will re-create the VMRA
3234 -----------------------
3240 :Returns: 0 on success, -1 on error
3256 - sigp stop; optional flags in parm
3258 - program check; code in parm
3260 - sigp set prefix; prefix address in parm
3262 - restart
3264 - clock comparator interrupt
3266 - CPU timer interrupt
3268 - virtio external interrupt; external interrupt
3269 parameters in parm and parm64
3271 - sclp external interrupt; sclp parameter in parm
3273 - sigp emergency; source cpu in parm
3275 - sigp external call; source cpu in parm
3277 - compound value to indicate an
3278 I/O interrupt (ai - adapter interrupt; cssid,ssid,schid - subchannel);
3279 I/O interruption parameters in parm (subchannel) and parm64 (intparm,
3282 - machine check interrupt; cr 14 bits in parm, machine check interrupt
3286 This is an asynchronous vcpu ioctl and can be invoked from any thread.
3289 ------------------------
3295 :Returns: file descriptor number (>= 0) on success, -1 on error
3300 KVM_GET_HTAB_WRITE bit is set in the flags field of the argument, and
3328 many valid HPT entries there are and how many invalid entries follow
3344 ----------------------
3350 :Returns: 0 on success, -1 on error
3356 EEXIST Device already created, and this type of device may not
3383 --------------------------------------------
3391 :Returns: 0 on success, -1 on error
3399 (e.g. read-only attribute, or attribute that only makes
3405 Gets/sets a specified piece of device configuration and/or state. The
3406 semantics are device-specific. See individual device documentation in
3414 __u32 group; /* device-defined */
3415 __u64 attr; /* group-defined */
3420 ------------------------
3427 :Returns: 0 on success, -1 on error
3444 ----------------------
3450 :Returns: 0 on success; -1 on error
3459 This tells KVM what type of CPU to present to the guest, and what
3465 - Processor state:
3466 * AArch64: EL1h, D, A, I and F bits set. All other bits
3468 * AArch32: SVC, A, I and F bits set. All other bits are
3470 - General Purpose registers, including PC and SP: set to 0
3471 - FPSIMD/NEON registers: set to 0
3472 - SVE registers: set to 0
3473 - System registers: Reset to their architecturally defined
3482 target and same set of feature flags, otherwise EINVAL will be returned.
3486 - KVM_ARM_VCPU_POWER_OFF: Starts the CPU in a power-off state.
3488 and execute guest code when KVM_RUN is called.
3489 - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
3491 - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
3494 - KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
3497 - KVM_ARM_VCPU_PTRAUTH_ADDRESS: Enables Address Pointer authentication
3500 If KVM_CAP_ARM_PTRAUTH_ADDRESS and KVM_CAP_ARM_PTRAUTH_GENERIC are
3501 both present, then both KVM_ARM_VCPU_PTRAUTH_ADDRESS and
3505 - KVM_ARM_VCPU_PTRAUTH_GENERIC: Enables Generic Pointer authentication
3508 If KVM_CAP_ARM_PTRAUTH_ADDRESS and KVM_CAP_ARM_PTRAUTH_GENERIC are
3509 both present, then both KVM_ARM_VCPU_PTRAUTH_ADDRESS and
3513 - KVM_ARM_VCPU_SVE: Enables SVE for the CPU (arm64 only).
3519 - KVM_REG_ARM64_SVE_VLS may be read using KVM_GET_ONE_REG: the
3520 initial value of this pseudo-register indicates the best set of
3525 - KVM_RUN and KVM_GET_REG_LIST are not available;
3527 - KVM_GET_ONE_REG and KVM_SET_ONE_REG cannot be used to access
3532 - KVM_REG_ARM64_SVE_VLS may optionally be written using
3538 - the KVM_REG_ARM64_SVE_VLS pseudo-register is immutable, and can
3542 -----------------------------
3548 :Returns: 0 on success; -1 on error
3560 about preferred CPU target type and recommended features for it. The
3561 kvm_vcpu_init->features bitmap returned will have feature bits set if
3571 ---------------------
3577 :Returns: 0 on success; -1 on error
3598 -----------------------------------------
3604 :Returns: 0 on success, -1 on error
3628 arm64 divides the id field into two parts, a device id and an
3634 arm64 currently only require this when using the in-kernel GIC
3637 mapping of the VGIC virtual CPU and distributor interface, the ioctl
3640 base addresses will return -EEXIST.
3642 Note, this IOCTL is deprecated and the more flexible SET/GET_DEVICE_ATTR API
3647 ------------------------------
3653 :Returns: 0 on success, -1 on error
3658 of a service that has a kernel-side implementation. If the token
3659 value is non-zero, it will be associated with that service, and
3662 associated with the service will be forgotten, and subsequent RTAS
3667 ------------------------
3673 :Returns: 0 on success; -1 on error
3683 Set up the processor specific debug registers and configure vcpu for
3688 - KVM_GUESTDBG_ENABLE: guest debugging is enabled
3689 - KVM_GUESTDBG_SINGLESTEP: the next run should single-step
3694 - KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86, arm64]
3695 - KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390]
3696 - KVM_GUESTDBG_USE_HW: using hardware debug events [arm64]
3697 - KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
3698 - KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
3699 - KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
3700 - KVM_GUESTDBG_BLOCKIRQ: avoid injecting interrupts/NMI/SMI [x86]
3704 correctly trapped and the KVM run loop exits at the breakpoint and not
3709 The second part of the structure is architecture specific and
3712 For arm64 the number of debug registers is implementation defined and
3713 can be determined by querying the KVM_CAP_GUEST_DEBUG_HW_BPS and
3718 the single-step debug event (KVM_GUESTDBG_SINGLESTEP) is supported.
3728 ---------------------------
3734 :Returns: 0 on success, -1 on error
3769 the variable-size array 'entries'. If the number of entries is too low
3771 number is too high, the 'nent' field is adjusted and an error (ENOMEM)
3782 emulated efficiently and thus not included here.
3803 --------------------
3810 < 0 on generic error (e.g. -EFAULT or -ENOMEM),
3838 field, and the length of the region in the "size" field (which must not
3844 Reserved and unused values are ignored. Future extension that add members must
3864 address given the state of the VCPU and use the absolute address as target of
3868 Logical accesses are permitted for non-protected guests only.
3878 In this case, "buf" is unused and can be NULL.
3886 translation-exception identifier (TEID) indicates suppression.
3889 protection is also in effect and may cause exceptions if accesses are
3893 Since the accessed memory may span multiple pages and those pages might have
3902 KVM_S390_MEMOP_F_SKEY_PROTECTION flag, to allow accessing memory and performing
3904 user space getting the storage keys, performing the checks, and accessing
3905 memory thereafter, which could lead to a delay between check and access).
3909 Absolute accesses are permitted for non-protected guests only.
3926 parameter. "size" must be a power of two up to and including 16.
3948 -----------------------
3972 whose storage keys to get. The count field must be at least 1 and the maximum
3974 will cause the ioctl to return -EINVAL.
3980 -----------------------
3996 whose storage keys to get. The count field must be at least 1 and the maximum
3998 will cause the ioctl to return -EINVAL.
4005 the ioctl will return -EINVAL.
4008 -----------------
4014 :Returns: 0 on success, -1 on error
4021 type is KVM_S390_SIGP_STOP and flag parameter is invalid value,
4022 type is KVM_S390_INT_EXTERNAL_CALL and code is bigger
4024 EBUSY type is KVM_S390_SIGP_SET_PREFIX and vcpu is not stopped,
4025 type is KVM_S390_SIGP_STOP and a stop irq is already pending,
4026 type is KVM_S390_INT_EXTERNAL_CALL and an external call interrupt
4055 - KVM_S390_SIGP_STOP - sigp stop; parameter in .stop
4056 - KVM_S390_PROGRAM_INT - program check; parameters in .pgm
4057 - KVM_S390_SIGP_SET_PREFIX - sigp set prefix; parameters in .prefix
4058 - KVM_S390_RESTART - restart; no parameters
4059 - KVM_S390_INT_CLOCK_COMP - clock comparator interrupt; no parameters
4060 - KVM_S390_INT_CPU_TIMER - CPU timer interrupt; no parameters
4061 - KVM_S390_INT_EMERGENCY - sigp emergency; parameters in .emerg
4062 - KVM_S390_INT_EXTERNAL_CALL - sigp external call; parameters in .extcall
4063 - KVM_S390_MCHK - machine check interrupt; parameters in .mchk
4065 This is an asynchronous vcpu ioctl and can be invoked from any thread.
4068 ---------------------------
4075 -EINVAL if buffer size is 0,
4076 -ENOBUFS if buffer size is too small to fit all pending interrupts,
4077 -EFAULT if the buffer address was invalid
4081 and introspection. The parameter structure contains the address of a
4082 userspace buffer and its length::
4091 Userspace passes in the above struct and for each pending interrupt a
4094 The structure contains a flags and a reserved field for future extensions. As
4095 the kernel never checked for flags == 0 and QEMU never pre-zeroed flags and
4099 If -ENOBUFS is returned the buffer provided was too small and userspace
4103 ---------------------------
4110 -EFAULT if the buffer address was invalid,
4111 -EINVAL for an invalid buffer length (see below),
4112 -EBUSY if there were already interrupts pending,
4116 This ioctl allows userspace to set the complete state of all cpu-local
4128 The restrictions for flags and reserved apply as well.
4137 and it must not exceed (max_vcpus + 32) * sizeof(struct kvm_s390_irq),
4138 which is the maximum number of possibly pending cpu-local interrupts.
4141 ------------
4147 :Returns: 0 on success, -1 on error
4152 ----------------------------
4221 If an MSR access is allowed by userspace, KVM will emulate and/or virtualize
4230 filtering. In that mode, ``KVM_MSR_FILTER_DEFAULT_DENY`` is invalid and causes
4236 RDMSR and WRMSR, and KVM mimics that behavior when emulating instructions
4241 part of VM-Enter/VM-Exit emulation.
4244 of VM-Enter/VM-Exit emulation. If an MSR access is denied on VM-Enter, KVM
4245 synthesizes a consistency check VM-Exit(EXIT_REASON_MSR_LOAD_FAIL). If an
4246 MSR access is denied on VM-Exit, KVM synthesizes a VM-Abort. In short, KVM
4248 the VM-Enter/VM-Exit MSR list. It is platform owner's responsibility to
4256 filter, e.g. MSRs with identical settings in both the old and new filter will
4260 KVM_MSR_EXIT_REASON_FILTER must be enabled before activating any filters, and
4265 ----------------------------
4289 KVM_CREATE_SPAPR_TCE_64 receives a 64bit window size, an IOMMU page shift and
4290 a bus offset of the corresponding DMA window, @size and @offset are numbers
4298 -------------------------
4305 -EFAULT if struct kvm_reinject_control cannot be read,
4306 -ENXIO if KVM_CREATE_PIT or KVM_CREATE_PIT2 didn't succeed earlier.
4308 i8254 (PIT) has two modes, reinject and !reinject. The default is reinject,
4309 where KVM queues elapsed i8254 ticks and monitors completion of interrupt from
4310 vector(s) that i8254 injects. Reinject mode dequeues a tick and injects its
4325 ------------------------------
4332 -EFAULT if struct kvm_ppc_mmuv3_cfg cannot be read,
4333 -EINVAL if the configuration is invalid
4336 page table) translation, and sets the pointer to the process table for
4346 There are two bits that can be set in flags; KVM_PPC_MMUV3_RADIX and
4348 to use radix tree translation, and if clear, to use HPT translation.
4349 KVM_PPC_MMUV3_GTSE, if set and if KVM permits it, configures the guest
4350 to be able to use the global TLB and SLB invalidation instructions;
4353 The process_table field specifies the address and size of the guest
4359 ---------------------------
4366 -EFAULT if struct kvm_ppc_rmmu_info cannot be written,
4367 -EINVAL if no useful information can be returned
4370 containing supported radix tree geometries, and (b) a list that maps
4387 size, and the number of bits indexed at each level of the tree, from
4391 The ap_encodings gives the supported page sizes and their AP field
4392 encodings, encoded with the AP value in the top 3 bits and the log
4396 --------------------------------
4405 -EFAULT if struct kvm_reinject_control cannot be read,
4406 -EINVAL if the supplied shift or flags are invalid,
4407 -ENOMEM if unable to allocate the new HPT,
4428 requested in the parameters, discards the existing pending HPT and
4439 If called with shift == 0, discards any currently pending HPT and
4440 returns 0 (i.e. cancels any in-progress preparation).
4443 flags will result in an -EINVAL.
4450 -------------------------------
4457 -EFAULT if struct kvm_reinject_control cannot be read,
4458 -EINVAL if the supplied shift or flags are invalid,
4459 -ENXIO is there is no pending HPT, or the pending HPT doesn't
4461 -EBUSY if the pending HPT is not fully prepared,
4462 -ENOSPC if there was a hash collision when moving existing
4464 -EIO on other error conditions
4481 KVM_PPC_RESIZE_HPT_COMMIT will return an error (usually -ENXIO or
4482 -EBUSY, though others may be possible if the preparation was started,
4490 HPT and the previous HPT will be discarded.
4495 -----------------------------------
4501 :Returns: 0 on success, -1 on error
4508 -----------------------
4515 -EFAULT if u64 mcg_cap cannot be read,
4516 -EINVAL if the requested number of banks is invalid,
4517 -EINVAL if requested MCE capability is not supported.
4520 has the same format as the MSR_IA32_MCG_CAP register and
4522 supported number of error-reporting banks can be retrieved when
4527 ---------------------
4534 -EFAULT if struct kvm_x86_mce cannot be read,
4535 -EINVAL if the bank number is invalid,
4536 -EINVAL if VAL bit is not set in status field.
4561 ----------------------------
4576 disabled (and thus migration mode was automatically disabled)
4584 - During live migration to save the CMMA values. Live migration needs
4586 - To non-destructively peek at the CMMA values, with the flag
4617 KVM_S390_SKEYS_MAX. KVM_S390_SKEYS_MAX is re-used for consistency with
4620 The result is written in the buffer pointed to by the field values, and
4632 It can (and very often will) be smaller than the input value, since the
4635 the base address and the length, for a total of 16 bytes, we will send
4645 mode, and no other action is performed;
4654 still remaining, or 0 if KVM_S390_CMMA_PEEK is set and migration mode is
4662 ----------------------------
4693 flags is not used and must be 0.
4701 This ioctl can fail with -ENOMEM if not enough memory can be allocated to
4702 complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
4704 if the flags field was not 0, with -EFAULT if the userspace address is
4710 --------------------------
4717 -EFAULT if struct kvm_ppc_cpu_char cannot be written
4720 of the CPU relating to speculative execution of instructions and
4722 CVE-2017-5715, CVE-2017-5753 and CVE-2017-5754). The information is
4732 For extensibility, the character_mask and behaviour_mask fields
4733 indicate which bits of character and behaviour have been filled in by
4739 with preventing inadvertent information disclosure - specifically,
4740 whether there is an instruction to flash-invalidate the L1 data cache
4743 them, whether the bcctr[l] instruction prevents speculation, and
4747 prevent inadvertent information disclosure, and thus describes which
4750 kernel, and whether a speculation barrier should be placed between an
4751 array bounds check and the array access.
4757 ---------------------------
4763 :Returns: 0 on success; -1 on error
4766 for issuing platform-specific memory encryption commands to manage those
4771 Documentation/virt/kvm/x86/amd-memory-encryption.rst.
4774 -----------------------------------
4780 :Returns: 0 on success; -1 on error
4785 It is used in the SEV-enabled guest. When encryption is enabled, a guest
4794 swap or migrate (move) ciphertext pages. Hence, for now we pin the guest
4798 -------------------------------------
4804 :Returns: 0 on success; -1 on error
4810 ------------------------
4818 the specified Hyper-V connection id through the SIGNAL_EVENT hypercall, without
4819 causing a user exit. SIGNAL_EVENT hypercall with non-zero event flag number
4820 (bits 24-31) still triggers a KVM_EXIT_HYPERV_HCALL user exit.
4840 -EINVAL if conn_id or flags is outside the allowed range,
4841 -ENOENT on deassign if the conn_id isn't registered,
4842 -EEXIST on assign if the conn_id is already registered
4845 --------------------------
4851 :Returns: 0 on success, -1 on error
4919 --------------------------
4925 :Returns: 0 on success, -1 on error
4931 -------------------------------------
4946 do not exit to userspace and their value is recorded in a ring buffer
4947 that is shared between kernel and userspace.
4951 register on the same device. This last access will cause a vmexit and
4956 between coalesced mmio and pio except that coalesced pio records accesses
4960 ------------------------------------
4966 :Returns: 0 on success, -1 on error
4984 memory slot, and num_pages is the size in bits of the input bitmap.
4988 in KVM's dirty bitmap, and dirty tracking is re-enabled for that page
4989 (for example via write-protection, or by clearing the dirty bit in
4992 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of slot field specifies
5002 --------------------------------
5008 :Returns: 0 on success, -1 on error
5029 This ioctl returns x86 cpuid features leaves related to Hyper-V emulation in
5031 cpuid information presented to guests consuming Hyper-V enlightenments (e.g.
5032 Windows or Hyper-V guests).
5034 CPUID feature leaves returned by this ioctl are defined by Hyper-V Top Level
5041 - HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS
5042 - HYPERV_CPUID_INTERFACE
5043 - HYPERV_CPUID_VERSION
5044 - HYPERV_CPUID_FEATURES
5045 - HYPERV_CPUID_ENLIGHTMENT_INFO
5046 - HYPERV_CPUID_IMPLEMENT_LIMITS
5047 - HYPERV_CPUID_NESTED_FEATURES
5048 - HYPERV_CPUID_SYNDBG_VENDOR_AND_MAX_FUNCTIONS
5049 - HYPERV_CPUID_SYNDBG_INTERFACE
5050 - HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES
5053 with the 'nent' field indicating the number of entries in the variable-size
5054 array 'entries'. If the number of entries is too low to describe all Hyper-V
5056 to the number of Hyper-V feature leaves, the 'nent' field is adjusted to the
5059 'index' and 'flags' fields in 'struct kvm_cpuid_entry2' are currently reserved,
5066 - HYPERV_CPUID_NESTED_FEATURES leaf and HV_X64_ENLIGHTENED_VMCS_RECOMMENDED
5069 - HV_STIMER_DIRECT_MODE_AVAILABLE bit is only exposed with in-kernel LAPIC.
5073 ---------------------------
5078 :Returns: 0 on success, -1 on error
5102 Between KVM_ARM_VCPU_INIT and KVM_ARM_VCPU_FINALIZE, the feature may be
5104 that should be performed and how to do it are feature-dependent.
5107 KVM_RUN, KVM_GET_REG_LIST, KVM_GET_ONE_REG and KVM_SET_ONE_REG, will fail with
5108 -EPERM unless the feature has already been finalized by means of a
5115 ------------------------------
5121 :Returns: 0 on success, -1 on error
5144 which event select and unit mask combinations are permitted.
5166 In this mode each filter event will contain an event select, mask, match, and
5174 ---- -----------
5187 2. If a match is found, match the guest's unit mask to the mask and match
5190 3. If a match is found, match the guest's unit mask to the mask and match
5194 a. If an included match is found and an excluded match is not found, filter
5198 a. If the event is filtered and it's an allow list, allow the guest to
5200 b. If the event is filtered and it's a deny list, do not allow the guest to
5203 When setting a new pmu event filter, -EINVAL will be returned if any of the
5213 counters (if any) by configuring the "action" and "fixed_counter_bitmap" fields.
5215 Specifically, KVM follows the following pseudo-code when determining whether to
5216 allow the guest FixCtr[i] to count its pre-defined fixed event::
5227 and unit_mask values. "fixed_counter_bitmap" has higher priority than "events"
5231 ---------------------
5251 unpins the VPA pages and releases all the device pages that are used to
5255 ---------------------------
5263 This ioctl resets VCPU registers and control structures according to
5267 ----------------------------
5275 This ioctl resets VCPU registers and control structures according to
5280 --------------------------
5288 This ioctl resets VCPU registers and control structures according to
5294 -------------------------
5324 Allocate memory and register the VM with the Ultravisor, thereby
5337 Deregister the VM from the Ultravisor and reclaim the memory that had
5339 All registered VCPUs are converted back to non-protected ones. If a
5341 KVM_PV_ASYNC_CLEANUP_PREPARE and not subsequently torn down with
5347 preparation of image unpacking and verification.
5350 Unpack (protect and decrypt) a page of the encrypted boot image.
5393 The installed calls and feature_indication members provide the
5394 installed UV calls and the UV's other feature indications.
5397 vcpus, PV guests and PV guest memory size.
5440 not succeed all other subcommands will fail with -EINVAL. This
5441 subcommand will return -EINVAL if a dump process has not yet been
5451 aligned and at least >= the `conf_dump_storage_state_len` value
5457 If the subcommand succeeds it completes the dump process and lets
5462 derivation seed, IV, tweak nonce and encryption keys as well as an
5472 resume execution immediately as non-protected. There can be at most
5491 command will terminate immediately without completing, and the normal
5497 --------------------------
5543 Sets the ABI mode of the VM to 32-bit or 64-bit (long mode). This
5550 and instead requires that KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO or
5577 re-mapped in guest physcial address space.
5583 This is the HVM-wide vector injected directly by the hypervisor
5594 trigger events on an eventfd. The vCPU and priority can be changed
5600 exclusive and cannot be combined as a bitmask.
5605 the 32-bit version code returned to the guest when it invokes the
5620 --------------------------
5628 Allows Xen VM attributes to be read. For the structure and types,
5633 ---------------------------
5684 an overlay on guest memory and remains at a fixed host address
5686 and hence unnecessary invalidation of an internal cache may be
5689 it is not guaranteed to remain at the same host address and
5705 KVM automatically accounts running and runnable time but blocked
5706 and offline states are only entered explicitly.
5718 other four times. The state field must be set to -1, or to a valid
5726 vCPU ID of the given vCPU, to allow timer-related VCPU operations to
5739 per-vCPU local APIC upcall vector, configured by a Xen guest with
5741 used by Windows guests, and is distinct from the HVM-wide upcall
5747 ---------------------------
5755 Allows Xen vCPU attributes to be read. For the structure and types,
5762 ---------------------------
5768 :Returns: number of bytes copied, < 0 on error (-EINVAL for incorrect
5769 arguments, -EFAULT if memory cannot be accessed).
5782 ``guest_ipa`` and ``length`` fields must be ``PAGE_SIZE`` aligned.
5783 ``length`` must not be bigger than 2^31 - PAGE_SIZE bytes. The ``addr``
5791 value. This matches the format of ``PTRACE_PEEKMTETAGS`` and
5800 --------------------
5806 :Returns: 0 on success, -1 on error
5833 --------------------
5839 :Returns: 0 on success, -1 on error
5846 ----------------------
5865 +-------------+
5867 +-------------+
5869 +-------------+
5871 +-------------+
5873 +-------------+
5877 the offsets of the id, descriptors and data blocks are found in the
5879 file and they do not overlap.
5882 only one time after retrieving the file descriptor, and then use ``pread`` or
5901 (including trailing '\0') which is contained in the "id string" block and
5959 The ``flags`` field contains the type and unit of the statistics data described
5963 Bits 0-3 of ``flags`` encode the type:
5978 of items in a hash table bucket, the longest time waited and so on.
5985 is [``hist_param``*(N-1), ``hist_param``*N), while the range of the last
5986 bucket is [``hist_param``*(``size``-1), +INF). (+INF means positive infinity
5991 [0, 1), while the range of the last bucket is [pow(2, ``size``-2), +INF).
5993 [pow(2, N-2), pow(2, N-1)).
5995 Bits 4-7 of ``flags`` encode the unit:
6018 Bits 8-11 of ``flags``, together with ``exponent``, encode the scale of the
6022 The scale is based on power of 10. It is used for measurement of time and
6023 CPU clock cycles. For example, an exponent of -9 can be used with
6039 bucket in the unit expressed by bits 4-11 of ``flags`` together with ``exponent``.
6045 The Stats Data block contains an array of 64-bit values in the same order
6049 --------------------
6055 :Returns: 0 on success, -1 on error
6076 -----------------------------
6096 -----------------------------
6105 for vcpus. It re-uses the kvm_s390_pv_dmp struct and hence also shares
6121 ----------------------
6129 Used to manage hardware-assisted virtualization features for zPCI devices.
6164 The "pad" and "reserved" fields may be used for future extensions and should be
6168 --------------------------------
6176 This capability indicates that userspace is able to apply a single VM-wide
6177 offset to both the virtual and physical counters as viewed by the guest
6178 using the KVM_ARM_SET_CNT_OFFSET ioctl and the following data structure:
6188 both virtual and physical counter views (similar to the effects of the
6189 CNTVOFF_EL2 and CNTPOFF_EL2 system registers, but only global). The offset
6197 (-EINVAL) being returned. This ioctl can also return -EBUSY if any vcpu
6201 writes to the CNTVCT_EL0 and CNTPCT_EL0 registers using the SET_ONE_REG
6208 -------------------------------------------
6238 All other values are reserved for future use and KVM may return an error.
6240 The ``reserved[13]`` array is reserved for future use and should be 0, or
6247 op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7}, op2=={0-7}.
6256 ---------------------------------
6262 :Returns: 0 on success, -1 on error
6269 must point at a file created via KVM_CREATE_GUEST_MEMFD on the current VM, and
6287 A KVM_MEM_GUEST_MEMFD region _must_ have a valid guest_memfd (private memory) and
6292 on-demand.
6303 Returns -EINVAL if the VM has the KVM_VM_S390_UCONTROL flag set.
6304 Returns -EINVAL if called on a protected VM.
6307 -------------------------------
6329 The address and size must be page aligned. The supported attributes can be
6340 The "flags" field is reserved for future extensions and must be '0'.
6343 ----------------------------
6351 KVM_CREATE_GUEST_MEMFD creates an anonymous file and returns a file descriptor
6354 and are automatically released when the last reference is dropped. Unlike
6357 and cannot be resized (guest_memfd files do however support PUNCH_HOLE).
6376 and more specifically via the guest_memfd and guest_memfd_offset fields in
6386 ---------------------------
6397 EINVAL The specified `gpa` and `size` were invalid (e.g. not
6400 EINTR An unmasked signal is pending and no page was processed.
6403 hypervisor, and/or for the current vCPU state/mode.
6418 KVM_PRE_FAULT_MEMORY populates KVM's stage-2 page tables used to map memory
6420 stage-2 read page fault, e.g. faults in memory as needed, but doesn't break
6421 CoW. However, KVM does not mark any newly created stage-2 PTE as Accessed.
6452 ioctl, and obtain information about the reason KVM_RUN returned by
6468 This field is polled once when KVM_RUN starts; if non-zero, KVM_RUN
6469 exits immediately, returning -EINTR. In the common scenario where a
6473 a signal handler that sets run->immediate_exit to a non-zero value.
6499 The value of the current interrupt flag. Only valid if in-kernel
6506 More architecture-specific flags detailing state of the VCPU that may
6524 The value of the cr8 register. Only valid if in-kernel local APIC is
6525 not used. Both input and output.
6531 The value of the APIC BASE msr. Only valid if in-kernel local
6532 APIC is not used. Both input and output.
6543 reasons. Further architecture-specific information is available in
6555 to unknown reasons. Further architecture-specific information is
6608 executed a memory-mapped I/O instruction which could not be satisfied
6610 true, and should be filled by application code otherwise.
6619 KVM_EXIT_EPR, KVM_EXIT_X86_RDMSR and KVM_EXIT_X86_WRMSR the corresponding
6620 operations are complete (and guest state is consistent) only after userspace
6621 has re-entered the kernel with KVM_RUN. The kernel side will first finish
6622 incomplete operations and then check for pending signals.
6626 completed before performing a live migration. Userspace can re-enter the
6649 ----------
6660 - ``KVM_HYPERCALL_EXIT_SMC``: Indicates that the guest used the SMC
6664 - ``KVM_HYPERCALL_EXIT_16BIT``: Indicates that the guest used a 16bit
6719 The program code and the translation exception code that were placed
6733 Deprecated - was used for 440 KVM.
6743 hypercalls and exit with this exit struct that contains all the guest gprs.
6746 Userspace can now handle the hypercall and when it's done modify the gprs as
6759 This is used on 64-bit PowerPC when emulating a pSeries partition,
6762 contains the hypercall number (from the guest R3), and 'args' contains
6763 the arguments (from the guest R4 - R12). Userspace should put the
6764 return code in 'ret' and any extra returned values in args[].
6782 and TEST SUBCHANNEL was intercepted. If dequeued is set, a pending I/O
6783 interrupt for the target subchannel has been dequeued and subchannel_id,
6784 subchannel_nr, io_int_parm and io_int_word contain the parameters for that
6797 the interrupt vector number and acknowledges the interrupt inside
6804 It gets triggered whenever both KVM_CAP_PPC_EPR are enabled and an
6824 a system-level event using some architecture specific mechanism (hypercall
6828 The 'type' field describes the system-level event type.
6831 - KVM_SYSTEM_EVENT_SHUTDOWN -- the guest has requested a shutdown of the
6832 VM. Userspace is not obliged to honour this, and if it does honour
6835 - KVM_SYSTEM_EVENT_RESET -- the guest has requested a reset of the VM.
6837 to schedule the reset to occur in the future and may call KVM_RUN again.
6838 - KVM_SYSTEM_EVENT_CRASH -- the guest crash occurred and the guest
6840 to ignore the request, or to gather VM memory core dump and/or
6842 - KVM_SYSTEM_EVENT_SEV_TERM -- an AMD SEV guest requested termination.
6844 - KVM_SYSTEM_EVENT_WAKEUP -- the exiting vCPU is in a suspended state and
6846 marking the exiting vCPU as runnable, or deny it and call KVM_RUN again.
6847 - KVM_SYSTEM_EVENT_SUSPEND -- the guest has requested a suspension of
6851 architecture specific information for the system-level event. Only
6854 - for arm64, data[0] is set to KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 if
6858 - for RISC-V, data[0] is set to the value of the second argument of the
6866 --------------
6876 the call parameters are left in-place in the vCPU registers.
6881 - Honor the guest request to suspend the VM. Userspace can request
6882 in-kernel emulation of suspension by setting the calling vCPU's
6888 - Deny the guest request to suspend the VM. See ARM DEN0022D.b 5.19.2
6898 Indicates that the VCPU's in-kernel local APIC received an EOI for a
6899 level-triggered IOAPIC interrupt. This exit only triggers when the
6901 the userspace IOAPIC should process the EOI and retrigger the interrupt if
6941 related to Hyper-V emulation.
6945 - KVM_EXIT_HYPERV_SYNIC -- synchronously notify user-space about
6947 Hyper-V SynIC state change. Notification is used to remap SynIC
6948 event/message pages and to enable/disable SynIC messages/events processing
6951 - KVM_EXIT_HYPERV_SYNDBG -- synchronously notify user-space about
6953 Hyper-V Synthetic debugger state change. Notification is used to either update
6966 KVM will typically return to userspace and ask it to do MMIO emulation on its
6968 (direction, length of memory access) is provided, and fetching and decoding
6971 Historically, when this situation occurred, KVM would print a warning and kill
6972 the VM. KVM assumed that if the guest accessed non-memslot memory, it was
6973 trying to do I/O, which just couldn't be emulated, and the warning message was
6976 meaningful warning message and an external abort in the guest, if the access
6979 Userspace implementations can query for KVM_CAP_ARM_NISV_TO_USER, and enable
6982 the ESR_EL2 in the esr_iss field, and the faulting IPA in the fault_ipa field.
6984 decoding the instruction from guest memory (if it's very brave) and continue
6989 if it decides to decode and emulate the instruction.
7002 __u8 error; /* user -> kernel */
7004 __u32 reason; /* kernel -> user */
7005 __u32 index; /* kernel -> user */
7006 __u64 data; /* kernel <-> user */
7011 may instead trigger a KVM_EXIT_X86_RDMSR exit for reads and KVM_EXIT_X86_WRMSR
7026 writes the respective data into the "data" field and must continue guest
7064 - KVM_EXIT_XEN_HCALL -- synchronously notify user-space about Xen hypercall.
7079 done a SBI call which is not handled by KVM RISC-V kernel module. The details
7083 array field of 'riscv_sbi' represents parameters for the SBI call and 'ret'
7085 values of SBI call before resuming the VCPU. For more details on RISC-V SBI
7086 spec refer, https://github.com/riscv/riscv-sbi-doc.
7099 could not be resolved by KVM. The 'gpa' and 'size' (in bytes) describe the
7103 - KVM_MEMORY_EXIT_FLAG_PRIVATE - When set, indicates the memory fault occurred
7108 accompanies a return code of '-1', not '0'! errno will always be set to EFAULT
7121 enabled, a VM exit generated if no event window occurs in VM non-root mode
7129 - KVM_NOTIFY_CONTEXT_INVALID -- the VM context is corrupted and not valid
7139 * shared registers between kvm and userspace.
7143 * bits for kvm_valid_regs and kvm_dirty_regs
7157 and usually define the validity of a groups of registers. (e.g. one bit
7170 Below you can find a list of capabilities and what their effect on the vCPU or
7177 x86 includes both i386 and x86_64.
7180 whether this is a per-vcpu or per-vm capability.
7191 -------------------
7196 :Returns: 0 on success; -1 on error
7200 were invented by Mac-on-Linux to have a standardized communication mechanism
7201 between the guest and the host.
7207 --------------------
7212 :Returns: 0 on success; -1 on error
7228 ------------------
7233 :Returns: 0 on success; -1 on error
7245 between userspace and KVM. The "params" and "array" fields are userspace
7246 addresses of mmu-type-specific data structures. The "array_len" field is an
7247 safety mechanism, and should be set to the size in bytes of the memory that
7249 by "mmu_type" and "params".
7252 contents are undefined, and any modification by userspace results in
7260 For mmu types KVM_MMU_FSL_BOOKE_NOHV and KVM_MMU_FSL_BOOKE_HV:
7262 - The "params" field is of type "struct kvm_book3e_206_tlb_params".
7263 - The "array" field points to an array of type "struct
7265 - The array consists of all entries in the first TLB, followed by all
7267 - Within a TLB, entries are ordered first by increasing set number. Within a
7269 - The hash for determining set number in TLB0 is: (MAS2 >> 12) & (num_sets - 1)
7271 - The tsize field of mas1 shall be set to 4K on TLB0, even though the
7275 ----------------------------
7280 :Returns: 0 on success; -1 on error
7284 TEST PENDING INTERRUPTION and the interrupt portion of TEST SUBCHANNEL are
7285 handled in-kernel, while the other I/O instructions are passed to userspace.
7290 Note that even though this capability is enabled per-vcpu, the complete
7294 -------------------
7299 :Returns: 0 on success; -1 on error
7313 --------------------
7319 This capability connects the vcpu to an in-kernel MPIC device.
7322 --------------------
7329 This capability connects the vcpu to an in-kernel XICS device.
7332 ------------------------
7338 This capability enables the in-kernel irqchip for s390. Please refer to
7342 --------------------
7350 done the ``KVM_REG_MIPS_FPR_*`` and ``KVM_REG_MIPS_FCR_*`` registers can be
7351 accessed (depending on the current guest FPU register mode), and the Status.FR,
7352 Config5.FRE bits are accessible via the KVM API and also from the guest,
7356 ---------------------
7364 Once this is done the ``KVM_REG_MIPS_VEC_*`` and ``KVM_REG_MIPS_MSA_*``
7365 registers can be accessed, and the Config5.MSAEn bit is accessible via the
7366 KVM API and also from the guest.
7369 ----------------------
7374 :Returns: x86: KVM_CHECK_EXTENSION returns a bit-array indicating which register
7381 repeated ioctl calls for setting and/or getting register values. This is
7383 modifications, e.g. when emulating and/or intercepting instructions in
7390 - the register sets to be copied out to kvm_run are selectable
7392 - vcpu_events are available in addition to regs and sregs.
7395 function as an input bit-array field set by userspace to indicate the
7415 -------------------------
7422 This capability connects the vcpu to an in-kernel XIVE device.
7429 you can find a list of capabilities and what their effect on the VM
7436 x86 includes both i386 and x86_64.
7447 ----------------------------
7451 args[1] is 0 to disable, 1 to enable in-kernel handling
7454 get handled by the kernel or not. Enabling or disabling in-kernel
7456 initial set of hcalls are enabled for in-kernel handling, which
7457 consists of those hcalls for which in-kernel handlers were implemented
7460 to handle it. Note that it may not make sense to enable some and
7464 If the hcall number specified is not one that has an in-kernel
7469 --------------------------
7478 - SENSE
7479 - SENSE RUNNING
7480 - EXTERNAL CALL
7481 - EMERGENCY SIGNAL
7482 - CONDITIONAL EMERGENCY SIGNAL
7488 old way of handling SIGP orders is used (partially in kernel and user space).
7491 ---------------------------------
7497 Allows use of the vector registers introduced with z13 processor, and
7498 provides for the synchronization between host and user space. Will
7499 return -EINVAL if the machine does not support vectors.
7502 --------------------------
7507 This capability allows post-handlers for the STSI instruction. After
7512 vcpu->run::
7523 @addr - guest address of STSI SYSIB
7524 @fc - function code
7525 @sel1 - selector 1
7526 @sel2 - selector 2
7527 @ar - access register number
7529 KVM handlers should exit to userspace with rc = -EREMOTE.
7532 -------------------------
7535 :Parameters: args[0] - number of routes reserved for userspace IOAPICs
7536 :Returns: 0 on success, -1 on error
7540 IOAPIC and PIC (and also the PIT, even though this has to be enabled
7553 -------------------
7558 Allows use of runtime-instrumentation introduced with zEC12 processor.
7559 Will return -EINVAL if the machine does not support runtime-instrumentation.
7560 Will return -EBUSY if a VCPU has already been created.
7563 ----------------------
7566 :Parameters: args[0] - features that should be enabled
7567 :Returns: 0 on success, -EINVAL when args[0] contains invalid features
7575 KVM_SET_GSI_ROUTING, KVM_SIGNAL_MSI, KVM_SET_LAPIC, and KVM_GET_LAPIC,
7576 allowing the use of 32-bit APIC IDs. See KVM_CAP_X2APIC_API in their
7583 where 0xff represents CPUs 0-7 in cluster 0.
7586 ----------------------------
7592 be intercepted and forwarded to user space. User space can use this
7593 mechanism e.g. to realize 2-byte software breakpoints. The kernel will
7598 created and are running.
7601 -------------------
7605 :Returns: 0 on success; -EINVAL if the machine does not support
7606 guarded storage; -EBUSY if a VCPU has already been created.
7611 ---------------------
7616 Allow use of adapter-interruption suppression.
7617 :Returns: 0 on success; -EBUSY if a VCPU has already been created.
7620 --------------------
7628 between 1 and 8. On POWER8, vsmt_mode must also be no greater than
7633 HV KVM, and can only be set before any VCPUs have been created.
7638 ----------------------
7645 enables QEMU to build error log and branch to guest kernel registered
7650 ------------------------------
7654 :Returns: 0 on success, -EINVAL when args[0] contains invalid exits
7665 workloads, and is suggested when vCPUs are associated to dedicated
7673 --------------------------
7677 :Returns: 0 on success, -EINVAL if hpage module parameter was not set
7683 enabled, cmma can't be enabled anymore and pfmfi and the storage key
7685 hpage module parameter is not set to 1, -EINVAL is returned.
7691 ------------------------------
7701 --------------------------
7705 :Returns: 0 on success, -EINVAL when the implementation doesn't support
7706 nested-HV virtualization.
7708 HV-KVM on POWER9 and later systems allows for "nested-HV"
7710 can run using the CPU's supervisor mode (privileged non-hypervisor
7712 the necessary functionality and on the facility being enabled with a
7713 kvm-hv module parameter.
7716 ------------------------------
7722 emulated VM-exit when L1 intercepts a #PF exception that occurs in
7723 L2. Similarly, for kvm-intel only, DR6 will not be modified prior to
7724 the emulated VM-exit when L1 intercepts a #DB exception that occurs in
7726 #DB) exception for L2, exception.has_payload will be set and the
7730 exception.has_payload and to put the faulting address - or the new DR6
7731 bits\ [#]_ - in the exception_payload field.
7735 and injected exceptions.
7742 --------------------------------------
7753 automatically clear and write-protect all pages that are returned as dirty.
7758 scalability and responsiveness for two reasons. First,
7759 KVM_CLEAR_DIRTY_LOG ioctl can operate on a 64-page granularity rather
7762 large amount of time can pass between a call to KVM_GET_DIRTY_LOG and
7764 during this time, which is inefficient for both the guest and userspace:
7767 helps reducing this time, improving guest performance and reducing the
7775 x86 and arm64 for now).
7784 ------------------------------
7789 ultravisor firmware and thus can support a secure guest. On such a
7793 notifies KVM when a guest requests to become a secure guest, and KVM
7801 ----------------------
7806 :Returns: 0 on success; -1 on error
7809 maximum halt-polling time for all vCPUs in the target VM. This capability can
7810 be invoked at any time and any number of times to dynamically change the
7811 maximum halt-polling time.
7813 See Documentation/virt/kvm/halt-polling.rst for more information on halt
7817 -------------------------------
7822 :Returns: 0 on success; -1 on error
7824 This capability allows userspace to intercept RDMSR and WRMSR instructions if
7833 args[0] and would trigger a #GP inside the guest will instead trigger
7834 KVM_EXIT_X86_RDMSR and KVM_EXIT_X86_WRMSR exit notifications. Userspace
7835 can then implement model specific MSR handling and/or user notifications
7843 invalid according to the vCPU model and/or mode
7849 -------------------------------
7854 :Returns: 0 on success, -EINVAL when args[0] contains invalid bits
7863 supported modes from the result of KVM_CHECK_EXTENSION and define it through
7864 the KVM_ENABLE_CAP. The supported modes are mutually-exclusive.
7867 guest, irrespective whether or not the host has enabled split-lock detection
7873 exit, although the host kernel's split-lock #AC detection still applies, if
7877 bus locks in the guest trigger a VM exit, and KVM exits to userspace for all
7878 such VM exits, e.g. to allow userspace to throttle the offending guest and/or
7879 apply some other policy-based mitigation. When exiting to userspace, KVM sets
7880 KVM_RUN_X86_BUS_LOCK in vcpu-run->flags, and conditionally sets the exit_reason
7888 ----------------------
7892 :Returns: 0 on success, -EINVAL when CPU doesn't support 2nd DAWR
7899 -------------------------------------
7909 This is intended to support in-guest workloads scheduled by the host. This
7910 allows the in-guest workload to maintain its own NPTs and keeps the two vms
7911 from accidentally clobbering each other with interrupts and the like (separate
7915 --------------------------
7920 :Returns: 0 on success, -EINVAL if the file handle is invalid or if a requested
7938 -------------------------------
7949 IBM pSeries (sPAPR) guest starts using it if "hcall-rpt-invalidate" is
7950 present in the "ibm,hypertas-functions" device-tree property.
7956 --------------------------------------
7970 set in the 'flags' field then both 'insn_size' and 'insn_bytes' have valid data
7974 --------------------
7979 This capability indicates that KVM (and the hardware) supports exposing the
7982 available to a guest running in AArch64 mode and enabling this capability will
7986 to the guest. KVM will ensure that the tags are maintained during swap or
7991 ``MAP_ANONYMOUS`` or with a RAM-based file mapping (``tmpfs``, ``memfd``),
7993 -EINVAL return.
7999 -------------------------------------
8009 This is intended to support intra-host migration of VMs between userspace VMMs,
8013 -------------------------------
8023 This capability allows a guest kernel to use a better-performance mode for
8024 handling interrupts and system calls.
8027 ----------------------------
8030 :Parameters: args[0] - set of KVM quirks to disable
8041 quirks to disable, and must be a subset of the bitmask returned by
8052 KVM_X86_QUIRK_CD_NW_CLEARED By default, KVM clears CR0.CD and CR0.NW on
8058 change the value of CR0.CD and CR0.NW.
8066 KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8069 KVM does not pre-increment %rip before
8092 is disabled and KVM_X86_DISABLE_EXITS_MWAIT
8102 invalidates all SPTEs in all memslots and
8113 ------------------------
8117 :Parameters: args[0] - maximum APIC ID value set for current VM
8118 :Returns: 0 on success, -EINVAL if args[0] is beyond KVM_MAX_VCPU_IDS
8134 ------------------------------
8139 :Returns: 0 on success, -EINVAL if args[0] contains invalid flags or notify
8149 in per-VM scope during VM creation. Notify VM exit is disabled by default.
8152 a VM exit if no event window occurs in VM non-root mode for a specified of
8159 cause CPU stuck (due to event windows don't open up) and make the CPU
8163 ------------------------------
8166 :Returns: Informational only, -EINVAL on direct KVM_ENABLE_CAP.
8169 kvm_run.memory_fault if KVM cannot resolve a guest page fault VM-Exit, e.g. if
8173 The information in kvm_run.memory_fault is valid if and only if KVM_RUN returns
8174 an error with errno=EFAULT or errno=EHWPOISON *and* kvm_run.exit_reason is set
8184 -----------------------------------
8189 :Returns: 0 on success, -EINVAL if args[0] contains an invalid value for the
8190 frequency or if any vCPUs have been created, -ENXIO if a virtual
8193 This capability sets the VM's APIC bus clock frequency, used by KVM's in-kernel
8198 core crystal clock frequency, if a non-zero CPUID 0x15 is exposed to the guest.
8201 ------------------------------
8204 :Returns: Informational only, -EINVAL on direct KVM_ENABLE_CAP.
8221 ---------------------
8227 H_RANDOM hypercall backed by a hardware random-number generator.
8232 ------------------------
8238 Hyper-V Synthetic interrupt controller(SynIC). Hyper-V SynIC is
8239 used to support Windows Hyper-V based guest paravirt drivers(VMBus).
8244 by the CPU, as it's incompatible with SynIC auto-EOI behavior.
8247 -------------------------
8257 ---------------------------
8264 the POWER9 processor), including in-memory segment tables.
8267 -------------------
8297 -------------------
8311 ----------------------
8316 supported register and address width.
8319 kvm VM handle correspond roughly to the CP0_Config.AT register field, and should
8325 Both registers and addresses are 32-bits wide.
8326 It will only be possible to run 32-bit guest code.
8328 1 MIPS64 or microMIPS64 with access only to 32-bit compatibility segments.
8329 Registers are 64-bits wide, but addresses are 32-bits wide.
8330 64-bit guest code may run but cannot access MIPS64 memory segments.
8331 It will also be possible to run 32-bit guest code.
8334 Both registers and addresses are 64-bits wide.
8335 It will be possible to run 64-bit or 32-bit guest code.
8339 ------------------------
8344 that if userspace creates a VM without an in-kernel interrupt controller, it
8345 will be notified of changes to the output level of in-kernel emulated devices,
8348 updates the vcpu's run->s.regs.device_irq_level field to represent the actual
8354 userspace can always sample the device output level and re-compute the state of
8356 of run->s.regs.device_irq_level on every kvm exit.
8357 The value in run->s.regs.device_irq_level can represent both level and edge
8359 signals will exit to userspace with the bit in run->s.regs.device_irq_level
8362 The field run->s.regs.device_irq_level is available independent of
8363 run->kvm_valid_regs or run->kvm_dirty_regs bits.
8367 and thereby which bits in run->s.regs.device_irq_level can signal values.
8373 KVM_ARM_DEV_EL1_VTIMER - EL1 virtual timer
8374 KVM_ARM_DEV_EL1_PTIMER - EL1 physical timer
8375 KVM_ARM_DEV_PMU - ARM PMU overflow interrupt signal
8378 indicated by returning a higher number from KVM_CHECK_EXTENSION and will be
8382 -----------------------------
8392 --------------------------
8396 This capability enables a newer version of Hyper-V Synthetic interrupt
8398 doesn't clear SynIC message and event flags pages when they are enabled by
8402 ----------------------------
8412 -------------------------------
8418 AIS states for migration via the KVM_DEV_FLIC_AISM_ALL attribute and allows
8422 ---------------------
8429 ----------------------
8435 aligned and sized to a segment (1MB) boundary.
8438 ---------------------
8443 use copy-on-write semantics as well as dirty pages tracking via read-only page
8447 ---------------------
8452 reset, migration and nested KVM for branch prediction blocking. The stfle
8456 ----------------------------
8460 This capability indicates that KVM supports paravirtualized Hyper-V TLB Flush
8466 ----------------------------------
8481 ----------------------------
8485 This capability indicates that KVM supports paravirtualized Hyper-V IPI send
8490 -----------------------------------
8494 This capability indicates that KVM running on top of Hyper-V hypervisor
8496 hypercalls are handled by Level 0 hypervisor (Hyper-V) bypassing KVM.
8497 Due to the different ABI for hypercall parameters between Hyper-V and
8500 flush hypercalls by Hyper-V) so userspace should disable KVM identification
8501 in CPUID and only exposes Hyper-V identification. In this case, guest
8502 thinks it's running on Hyper-V and only use Hyper-V hypercalls.
8505 -----------------------------
8509 This capability indicates that the KVM_S390_NORMAL_RESET and
8513 ---------------------------
8517 This capability indicates that the Ultravisor has been initialized and
8519 This capability governs the KVM_S390_PV_COMMAND ioctl and the
8524 -----------------------
8530 architecture-specific interfaces. This capability and the architecture-
8532 is supported, than the other should as well and vice versa. For arm64
8537 -------------------------
8542 (i.e. guest kernel type and version). The information is helpful during
8547 an 8-byte value consisting of a one-byte Control Program Name Code (CPNC) and
8548 a 7-byte Control Program Version Code (CPVC). The CPNC determines what
8549 environment the control program is running in (e.g. Linux, z/VM...), and the
8553 If this capability is available, then the CPNC and CPVC can be synchronized
8554 between KVM and userspace via the sync regs mechanism (KVM_SYNC_DIAG318).
8557 -------------------------------
8561 This capability indicates that KVM supports deflection of MSR reads and
8564 instead get bounced to user space through the KVM_EXIT_X86_RDMSR and
8568 ---------------------------
8578 trap and emulate MSRs that are outside of the scope of KVM as well as
8582 -------------------------------------
8592 ----------------------------------------------------------
8595 :Parameters: args[0] - size of the dirty log ring
8617 ioctl to enable this capability for the new guest and set the size of
8619 vCPU, and the size of the ring must be a power of two. The larger the
8620 ring buffer, the less likely the ring is full and the VM is forced to
8635 00 -----------> 01 -------------> 1X -------+
8638 +------------------------------------------+
8643 The userspace should harvest this GFN and mark the flags from state
8645 to show that this GFN is harvested and waiting for a reset), and move
8651 ring buffer (and more specifically the 'flags' field) must be ordered,
8652 using load-acquire/store-release accessors when available, or any
8679 reading the state of an entry and mutating it from DIRTY to HARVESTED.
8680 Architecture with TSO-like ordering (such as x86) are allowed to
8681 expose both KVM_CAP_DIRTY_LOG_RING and KVM_CAP_DIRTY_LOG_RING_ACQ_REL
8686 ring structures can be backed by per-slot bitmaps. With this capability
8694 use of the ring and bitmap combination is only beneficial if there is
8696 context. Otherwise, the stand-alone per-slot bitmap mechanism needs to
8704 state is final and avoid missing dirty pages from another ioctl ordered
8709 KVM device "kvm-arm-vgic-its". (2) restore vgic/its tables through
8711 "kvm-arm-vgic-its". VGICv3 LPI pending status is restored. (3) save
8713 command on KVM device "kvm-arm-vgic-v3".
8716 --------------------
8738 and also enable interception of guest hypercalls with KVM_EXIT_XEN.
8741 KVM_XEN_HVM_SET_ATTR, KVM_XEN_HVM_GET_ATTR, KVM_XEN_VCPU_SET_ATTR and
8746 The KVM_XEN_HVM_CONFIG_RUNSTATE flag indicates that the runstate-related
8757 KVM_XEN_ATTR_TYPE_EVTCHN/XEN_VERSION HVM attributes and the
8759 related to event channel delivery, timers, and the XENVER_version
8764 and KVM_XEN_GET_ATTR ioctls. This controls whether KVM will set the
8780 -------------------------
8787 H_PUT_TCE_INDIRECT and H_STUFF_TCE without passing those into the user
8793 In order to enable H_PUT_TCE_INDIRECT and H_STUFF_TCE use in the guest,
8795 IBM pSeries (sPAPR) guest starts using them if "hcall-multi-tce" is
8796 present in the "ibm,hypertas-functions" device-tree property.
8806 --------------------
8815 ---------------------------------
8819 When enabled, KVM will disable emulated Hyper-V features provided to the
8820 guest according to the bits Hyper-V CPUID feature leaves. Otherwise, all
8821 currently implemented Hyper-V features are provided unconditionally when
8822 Hyper-V identification is set in the HYPERV_CPUID_INTERFACE (0x40000001)
8826 ---------------------------
8839 The argument to KVM_ENABLE_CAP is also a bitmask, and must be a subset
8841 the hypercalls whose corresponding bit is in the argument, and return
8845 ---------------------------
8851 :Returns: 0 on success, -EINVAL when arg[0] contains invalid bits
8858 The argument to KVM_ENABLE_CAP is also a bitmask and selects specific
8867 -------------------------------
8877 --------------------------------
8883 This capability indicates that KVM and the Ultravisor support dumping
8885 `KVM_S390_PV_COMMAND` ioctl and the `KVM_PV_INFO` command provides
8887 available and supports the `KVM_PV_DUMP_CPU` subcommand.
8890 -------------------------------------
8896 :Returns: 0 on success, -EPERM if the userspace process does not
8897 have CAP_SYS_BOOT, -EINVAL if args[0] is not 0 or any vCPUs have been
8907 ------------------------------
8915 the function code 2 along with interception and forwarding of both the
8916 PTF instruction with function codes 0 or 1 and the STSI(15,1,x)
8928 When getting the Modified Change Topology Report value, the attr->addr
8932 ---------------------------------------
8938 :Returns: 0 on success, -EINVAL if any memslot was already created.
8942 Eager Page Splitting improves the performance of dirty-logging (used
8943 in live migrations) when guest memory is backed by huge-pages. It
8944 avoids splitting huge-pages (into PAGE_SIZE pages) on fault, by doing
8955 64-bit bitmap (each bit describing a block size). The default value is
8959 ---------------------
8965 This capability returns a bitmap of support VM types. The 1-setting of bit @n
8973 Note, KVM_X86_SW_PROTECTED_VM is currently only for development and testing.
8974 Do not use KVM_X86_SW_PROTECTED_VM for "real" VMs, and especially not in
8975 production. The behavior and effective ABI for software-protected VMs is
8989 --------
8995 to take its result and pass it directly to ``KVM_SET_CPUID2``. This section
9003 ``KVM_ENABLE_CAP(KVM_CAP_IRQCHIP_SPLIT)`` are used to enable in-kernel emulation of
9009 It can be enabled if ``KVM_CAP_TSC_DEADLINE_TIMER`` is present and the kernel
9010 has enabled in-kernel emulation of the local APIC.
9016 0x0b and 0x1f for Intel systems, 0x8000001e for AMD systems. Different
9017 versions of KVM return different values for this information and userspace
9022 the APIC ID is found in EDX for all subleaves of 0x0b and 0x1f, and in EAX
9023 for 0x8000001e; the latter also encodes the core id and node id in bits
9024 7:0 of EBX and ECX respectively.
9026 Obsolete ioctls and capabilities