Lines Matching +full:reserved +full:- +full:ipi +full:- +full:vectors
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
24 - vcpu ioctls: These query and set attributes that control the operation
32 - device ioctls: These query and set attributes that control the operation
80 facility that allows backward-compatible extensions to the API to be
104 the ioctl returns -ENOTTY.
122 -----------------------
139 -----------------
178 address used by the VM. The IPA_Bits is encoded in bits[7-0] of the
196 ioctl() at run-time.
208 ----------------------------------------------------------
214 :Returns: 0 on success; -1 on error
250 -----------------------
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
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.
604 RISC-V:
631 -----------------
638 -1 on error
641 Reads the values of MSR-based features that are available for the VM. This
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
661 __u32 reserved;
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
687 fails, e.g., due to setting reserved bits, the MSR isn't supported/emulated
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
744 their traditional behaviour) will cause KVM_RUN to return with -EINTR.
759 ----------------
765 :Returns: 0 on success, -1 on error
797 ----------------
803 :Returns: 0 on success, -1 on error
835 -----------------------
841 :Returns: 0 on success, -1 on error
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
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
987 page of a blob (32- or 64-bit, depending on the vcpu mode) to guest
1022 ------------------
1028 :Returns: 0 on success, -1 on error
1072 ------------------
1078 :Returns: 0 on success, -1 on error
1107 ------------------------
1114 :Returns: 0 on success, -1 on error
1152 __u8 reserved[27];
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
1170 - KVM_VCPUEVENT_VALID_TRIPLE_FAULT may be set to signal that the
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
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.
1226 __u32 reserved[12];
1230 ------------------------
1237 :Returns: 0 on success, -1 on error
1250 suppress overwriting the current in-kernel state. The bits are:
1255 KVM_VCPUEVENT_VALID_SMM transfer the smi sub-struct.
1297 ----------------------
1303 :Returns: 0 on success, -1 on error
1314 __u64 reserved[9];
1319 ----------------------
1325 :Returns: 0 on success, -1 on error
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"
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
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
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
1529 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1569 ---------------------
1575 :Returns: 0 on success; -1 on error
1581 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1594 ------------------------------
1600 :Returns: 0 on success, -1 on error
1602 This ioctl defines the physical address of a one-page region in the guest
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 ------------------
1659 :Returns: 0 on success, -1 on error
1681 -----------------
1687 :Returns: 0 on success, -1 on error
1693 __u32 reserved;
1708 -----------------
1714 :Returns: 0 on success, -1 on error
1720 __u32 reserved;
1735 ----------------------------
1741 :Returns: 0 on success, -1 on error
1774 Dynamically-enabled feature bits need to be requested with
1784 with the 'nent' field indicating the number of entries in the variable-size
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
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
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
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
2135 -------------------------
2144 is an IOMMU for PAPR-style virtual I/O. It is used to translate
2158 which this TCE table will translate - the table will contain one 64
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.
2210 ------------
2216 :Returns: 0 on success, -1 on error
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 --------------------
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
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
2652 KVM_REG_ARM64_SVE_VLS is a pseudo-register that allows the set of vector
2662 ((vector_lengths[(vq - KVM_ARM64_SVE_VQ_MIN) / 64] >>
2663 ((vq - KVM_ARM64_SVE_VQ_MIN) % 64)) & 1))
2685 is hardware-dependent and may not be available. Attempting to configure
2692 arm64 bitmap feature firmware pseudo-registers have the following bit pattern::
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)
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
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
2834 Following are the RISC-V csr registers:
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)
2866 RISC-V F-extension registers represent the single precision floating point
2871 Following are the RISC-V F-extension registers:
2882 RISC-V D-extension registers represent the double precision floating point
2886 0x8030 0000 06 <index into the __riscv_d_ext_state struct:24> (non-fcsr)
2888 Following are the RISC-V D-extension registers:
2905 0x9030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2914 --------------------
2944 ----------------------
2950 :Returns: 0 on success, -1 on error
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
3054 __u32 reserved[9];
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
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
3158 --------------
3164 :Returns: 0 on success, -1 on error
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
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
3194 to GICv3 ITS in-kernel emulation).
3197 --------------------------
3203 :Returns: 0 on success, -1 on error
3215 The parameter is a pointer to a 32-bit unsigned integer variable
3222 default-sized hash table (16 MB).
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
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);
3282 - machine check interrupt; cr 14 bits in parm, machine check interrupt
3289 ------------------------
3295 :Returns: file descriptor number (>= 0) on success, -1 on error
3308 __u64 reserved[2];
3344 ----------------------
3350 :Returns: 0 on success, -1 on error
3383 --------------------------------------------
3391 :Returns: 0 on success, -1 on error
3399 (e.g. read-only attribute, or attribute that only makes
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
3465 - Processor state:
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
3486 - KVM_ARM_VCPU_POWER_OFF: Starts the CPU in a power-off state.
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
3505 - KVM_ARM_VCPU_PTRAUTH_GENERIC: Enables Generic Pointer authentication
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
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
3634 arm64 currently only require this when using the in-kernel GIC
3640 base addresses will return -EEXIST.
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
3667 ------------------------
3673 :Returns: 0 on success; -1 on error
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]
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
3803 --------------------
3810 < 0 on generic error (e.g. -EFAULT or -ENOMEM),
3833 __u8 reserved[32]; /* ignored */
3843 a write access. The "reserved" field is meant for future extensions.
3844 Reserved and unused values are ignored. Future extension that add members must
3868 Logical accesses are permitted for non-protected guests only.
3886 translation-exception identifier (TEID) indicates suppression.
3909 Absolute accesses are permitted for non-protected guests only.
3948 -----------------------
3965 __u32 reserved[9];
3974 will cause the ioctl to return -EINVAL.
3980 -----------------------
3998 will cause the ioctl to return -EINVAL.
4005 the ioctl will return -EINVAL.
4008 -----------------
4014 :Returns: 0 on success, -1 on error
4049 char reserved[64];
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
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
4088 __u32 reserved[4]; /* will stay unused for compatibility reasons */
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
4096 reserved, these fields can not be used in the future without breaking
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
4125 __u32 reserved[4]; /* will stay unused for compatibility reasons */
4128 The restrictions for flags and reserved apply as well.
4138 which is the maximum number of possibly pending cpu-local interrupts.
4141 ------------
4147 :Returns: 0 on success, -1 on error
4152 ----------------------------
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
4265 ----------------------------
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.
4318 __u8 reserved[31];
4325 ------------------------------
4332 -EFAULT if struct kvm_ppc_mmuv3_cfg cannot be read,
4333 -EINVAL if the configuration is invalid
4359 ---------------------------
4366 -EFAULT if struct kvm_ppc_rmmu_info cannot be written,
4367 -EINVAL if no useful information can be returned
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,
4440 returns 0 (i.e. cancels any in-progress preparation).
4442 flags is reserved for future expansion, currently setting any bits in
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,
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.
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 ----------------------------
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
4662 ----------------------------
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
4722 CVE-2017-5715, CVE-2017-5753 and CVE-2017-5754). The information is
4739 with preventing inadvertent information disclosure - specifically,
4740 whether there is an instruction to flash-invalidate the L1 data cache
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
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 -------------------------------------
4960 ------------------------------------
4966 :Returns: 0 on success, -1 on error
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
5104 that should be performed and how to do it are feature-dependent.
5108 -EPERM unless the feature has already been finalized by means of a
5115 ------------------------------
5121 :Returns: 0 on success, -1 on error
5174 ---- -----------
5203 When setting a new pmu event filter, -EINVAL will be returned if any of the
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::
5231 ---------------------
5255 ---------------------------
5267 ----------------------------
5280 --------------------------
5294 -------------------------
5310 __u32 reserved[3];
5339 All registered VCPUs are converted back to non-protected ones. If a
5376 __u32 reserved;
5440 not succeed all other subcommands will fail with -EINVAL. This
5441 subcommand will return -EINVAL if a dump process has not yet been
5472 resume execution immediately as non-protected. There can be at most
5497 --------------------------
5543 Sets the ABI mode of the VM to 32-bit or 64-bit (long mode). This
5577 re-mapped in guest physcial address space.
5583 This is the HVM-wide vector injected directly by the hypervisor
5605 the 32-bit version code returned to the guest when it invokes the
5620 --------------------------
5633 ---------------------------
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 ---------------------------
5762 ---------------------------
5768 :Returns: number of bytes copied, < 0 on error (-EINVAL for incorrect
5769 arguments, -EFAULT if memory cannot be accessed).
5778 __u64 reserved[2];
5783 ``length`` must not be bigger than 2^31 - PAGE_SIZE bytes. The ``addr``
5800 --------------------
5806 :Returns: 0 on success, -1 on error
5833 --------------------
5839 :Returns: 0 on success, -1 on error
5846 ----------------------
5865 +-------------+
5867 +-------------+
5869 +-------------+
5871 +-------------+
5873 +-------------+
5963 Bits 0-3 of ``flags`` encode the type:
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
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.
6149 __u64 reserved[8];
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
6184 __u64 reserved;
6196 Any value other than 0 for the "reserved" field may result in an error
6197 (-EINVAL) being returned. This ioctl can also return -EBUSY if any vcpu
6208 -------------------------------------------
6225 __u32 reserved[13];
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
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 -------------------------------
6340 The "flags" field is reserved for future extensions and must be '0'.
6343 ----------------------------
6364 __u64 reserved[6];
6386 ---------------------------
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.
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
6531 The value of the APIC BASE msr. Only valid if in-kernel local
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
6621 has re-entered the kernel with KVM_RUN. The kernel side will first finish
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
6733 Deprecated - was used for 440 KVM.
6759 This is used on 64-bit PowerPC when emulating a pSeries partition,
6763 the arguments (from the guest R4 - R12). Userspace should put the
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
6835 - KVM_SYSTEM_EVENT_RESET -- the guest has requested a reset of the VM.
6838 - KVM_SYSTEM_EVENT_CRASH -- the guest crash occurred and the guest
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
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
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
6951 - KVM_EXIT_HYPERV_SYNDBG -- synchronously notify user-space about
6953 Hyper-V Synthetic debugger state change. Notification is used to either update
6972 the VM. KVM assumed that if the guest accessed non-memslot memory, it was
7002 __u8 error; /* user -> kernel */
7004 __u32 reason; /* kernel -> user */
7005 __u32 index; /* kernel -> user */
7006 __u64 data; /* kernel <-> user */
7020 KVM_MSR_EXIT_REASON_INVAL access to invalid MSRs or reserved bits
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
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.
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
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
7207 --------------------
7212 :Returns: 0 on success; -1 on error
7228 ------------------
7233 :Returns: 0 on success; -1 on error
7246 addresses of mmu-type-specific data structures. The "array_len" field is an
7248 userspace has reserved for the array. It must be at least the size dictated
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
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 --------------------
7346 :Parameters: args[0] is reserved for future use (should be 0).
7356 ---------------------
7360 :Parameters: args[0] is reserved for future use (should be 0).
7369 ----------------------
7374 :Returns: x86: KVM_CHECK_EXTENSION returns a bit-array indicating which register
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.
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
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
7491 ---------------------------------
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::
7517 __u8 reserved;
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
7545 used in the IRQ routing table. The first args[0] MSI routes are reserved
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
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 ----------------------------
7593 mechanism e.g. to realize 2-byte software breakpoints. The kernel will
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 --------------------
7638 ----------------------
7650 ------------------------------
7654 :Returns: 0 on success, -EINVAL when args[0] contains invalid exits
7673 --------------------------
7677 :Returns: 0 on success, -EINVAL if hpage module parameter was not set
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
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
7730 exception.has_payload and to put the faulting address - or the new DR6
7731 bits\ [#]_ - in the exception_payload field.
7742 --------------------------------------
7753 automatically clear and write-protect all pages that are returned as dirty.
7759 KVM_CLEAR_DIRTY_LOG ioctl can operate on a 64-page granularity rather
7784 ------------------------------
7801 ----------------------
7806 :Returns: 0 on success; -1 on error
7809 maximum halt-polling time for all vCPUs in the target VM. This capability can
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
7849 -------------------------------
7854 :Returns: 0 on success, -EINVAL when args[0] contains invalid bits
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
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
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 --------------------------------------
7974 --------------------
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
8027 ----------------------------
8030 :Parameters: args[0] - set of KVM quirks to disable
8066 KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8069 KVM does not pre-increment %rip before
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
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
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 -------------------
8283 values (see below). All other values are reserved. This is to allow for the
8297 -------------------
8311 ----------------------
8321 reserved.
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
8382 -----------------------------
8392 --------------------------
8396 This capability enables a newer version of Hyper-V Synthetic interrupt
8402 ----------------------------
8412 -------------------------------
8422 ---------------------
8429 ----------------------
8438 ---------------------
8443 use copy-on-write semantics as well as dirty pages tracking via read-only page
8447 ---------------------
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 -----------------------------
8513 ---------------------------
8524 -----------------------
8530 architecture-specific interfaces. This capability and the architecture-
8537 -------------------------
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
8557 -------------------------------
8568 ---------------------------
8582 -------------------------------------
8592 ----------------------------------------------------------
8595 :Parameters: args[0] - size of the dirty log ring
8635 00 -----------> 01 -------------> 1X -------+
8638 +------------------------------------------+
8652 using load-acquire/store-release accessors when available, or any
8680 Architecture with TSO-like ordering (such as x86) are allowed to
8686 ring structures can be backed by per-slot bitmaps. With this capability
8696 context. Otherwise, the stand-alone per-slot bitmap mechanism needs to
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 --------------------
8742 KVM_XEN_VCPU_GET_ATTR ioctls, as well as the delivery of exception vectors
8746 The KVM_XEN_HVM_CONFIG_RUNSTATE flag indicates that the runstate-related
8780 -------------------------
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 ---------------------------
8845 ---------------------------
8851 :Returns: 0 on success, -EINVAL when arg[0] contains invalid bits
8867 -------------------------------
8877 --------------------------------
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 ------------------------------
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
8975 production. The behavior and effective ABI for software-protected VMs is
8989 --------
9003 ``KVM_ENABLE_CAP(KVM_CAP_IRQCHIP_SPLIT)`` are used to enable in-kernel emulation of
9010 has enabled in-kernel emulation of the local APIC.