Lines Matching +full:mips +full:- +full:hpt +full:- +full:frequency
1 .. SPDX-License-Identifier: GPL-2.0
4 The Definitive KVM (Kernel-based Virtual Machine) API Documentation
24 - System ioctls: These query and set global attributes which affect the
28 - VM ioctls: These query and set attributes that affect an entire virtual
35 - vcpu ioctls: These query and set attributes that control the operation
43 - device ioctls: These query and set attributes that control the operation
92 facility that allows backward-compatible extensions to the API to be
133 -----------------------
150 -----------------
173 MIPS:
176 To use hardware assisted virtualization on MIPS (VZ ASE) rather than
189 address used by the VM. The IPA_Bits is encoded in bits[7-0] of the
207 ioctl() at run-time.
219 ----------------------------------------------------------
225 :Returns: 0 on success; -1 on error
263 -----------------------
282 --------------------------
295 the VCPU file descriptor can be mmap-ed, including:
297 - if KVM_CAP_COALESCED_MMIO is available, a page at
302 - if KVM_CAP_DIRTY_LOG_RING is available, a number of pages at
308 -------------------
314 :Returns: vcpu fd on success, -1 on error
320 the KVM_CHECK_EXTENSION ioctl() at run-time.
322 KVM_CAP_MAX_VCPUS of the KVM_CHECK_EXTENSION ioctl() at run-time.
330 KVM_CAP_MAX_VCPU_ID of the KVM_CHECK_EXTENSION ioctl() at run-time.
345 single-threaded guest vcpus, it should make all vcpu ids be a multiple
355 ---------------------
361 :Returns: 0 on success, -1 on error
380 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of slot field specifies
393 ------------
399 :Returns: 0 on success, -1 on error
420 -----------------
426 :Returns: 0 on success, -1 on error
442 /* mips */
460 -----------------
466 :Returns: 0 on success, -1 on error
474 ------------------
480 :Returns: 0 on success, -1 on error
497 /* ppc -- see arch/powerpc/include/uapi/asm/kvm.h */
505 ------------------
511 :Returns: 0 on success, -1 on error
518 ------------------
524 :Returns: 0 on success, -1 on error
545 ------------------
548 :Architectures: x86, ppc, mips, riscv, loongarch
570 -EEXIST if an interrupt is already enqueued
571 -EINVAL the irq number is invalid
572 -ENXIO if the PIC is in the kernel
573 -EFAULT if the pointer is invalid
577 ioctl is useful if the in-kernel PIC is not used.
609 MIPS:
617 RISC-V:
644 -----------------
651 -1 on error
654 Reads the values of MSR-based features that are available for the VM. This
656 The list of msr-based features can be obtained using KVM_GET_MSR_FEATURE_INDEX_LIST
660 Reads model-specific registers from the vcpu. Supported msr indices can
684 -----------------
690 :Returns: number of msrs successfully set (see below), -1 on error
692 Writes model-specific registers to the vcpu. See KVM_GET_MSRS for the
706 ------------------
712 :Returns: 0 on success, -1 on error
718 - If this IOCTL fails, KVM gives no guarantees that previous valid CPUID
721 - Using KVM_SET_CPUID{,2} after KVM_RUN, i.e. changing the guest vCPU model
723 - Using heterogeneous CPUID configurations, modulo APIC IDs, topology, etc...
746 ------------------------
752 :Returns: 0 on success, -1 on error
757 their traditional behaviour) will cause KVM_RUN to return with -EINTR.
772 ----------------
778 :Returns: 0 on success, -1 on error
810 ----------------
816 :Returns: 0 on success, -1 on error
848 -----------------------
854 :Returns: 0 on success, -1 on error
858 future vcpus to have a local APIC. IRQ routing for GSIs 0-15 is set to both
859 PIC and IOAPIC; GSI 16-23 only go to the IOAPIC.
870 -----------------
876 :Returns: 0 on success, -1 on error
880 been previously created with KVM_CREATE_IRQCHIP. Note that edge-triggered
883 On real hardware, interrupt pins can be active-low or active-high. This
888 (active-low/active-high) for level-triggered interrupts, and KVM used
890 active-low interrupts, the above convention is now valid on x86 too.
892 should not present interrupts to the guest as active-low unless this
893 capability is present (or unless it is not using the in-kernel irqchip,
898 in-kernel irqchip (GIC), and for in-kernel irqchip can tell the GIC to
907 - KVM_ARM_IRQ_TYPE_CPU:
908 out-of-kernel GIC: irq_id 0 is IRQ, irq_id 1 is FIQ
909 - KVM_ARM_IRQ_TYPE_SPI:
910 in-kernel GIC: SPI, irq_id between 32 and 1019 (incl.)
912 - KVM_ARM_IRQ_TYPE_PPI:
913 in-kernel GIC: PPI, irq_id between 16 and 31 (incl.)
924 injection of interrupts for the in-kernel irqchip. KVM_IRQ_LINE can always
939 --------------------
945 :Returns: 0 on success, -1 on error
964 --------------------
970 :Returns: 0 on success, -1 on error
989 -----------------------
995 :Returns: 0 on success, -1 on error
1000 page of a blob (32- or 64-bit, depending on the vcpu mode) to guest
1039 ------------------
1045 :Returns: 0 on success, -1 on error
1089 ------------------
1095 :Returns: 0 on success, -1 on error
1124 ------------------------
1131 :Returns: 0 on success, -1 on error
1176 - KVM_VCPUEVENT_VALID_SHADOW may be set to signal that
1179 - KVM_VCPUEVENT_VALID_SMM may be set to signal that smi contains a
1182 - KVM_VCPUEVENT_VALID_PAYLOAD may be set to signal that the
1187 - KVM_VCPUEVENT_VALID_TRIPLE_FAULT may be set to signal that the
1206 guest-visible registers. It is not possible to 'cancel' an SError that has been
1209 A device being emulated in user-space may also wish to generate an SError. To do
1210 this the events structure can be populated by user-space. The current state
1219 always have a non-zero value when read, and the agent making an SError pending
1221 the system supports KVM_CAP_ARM_INJECT_SERROR_ESR, but user-space sets the events
1225 -EINVAL. Setting anything other than the lower 24bits of exception.serror_esr
1226 will return -EINVAL.
1247 ------------------------
1254 :Returns: 0 on success, -1 on error
1267 suppress overwriting the current in-kernel state. The bits are:
1272 KVM_VCPUEVENT_VALID_SMM transfer the smi sub-struct.
1314 ----------------------
1320 :Returns: 0 on success, -1 on error
1336 ----------------------
1342 :Returns: 0 on success, -1 on error
1351 -------------------------------
1357 :Returns: 0 on success, -1 on error
1374 memory slot. Bits 0-15 of "slot" specify the slot id and this value
1379 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of "slot"
1406 to make a new slot read-only. In this case, writes to this memory will be
1414 Note: On arm64, a write generated by the page-table walker (to update
1418 page-table walker, making it impossible to emulate the access.
1419 Instead, an abort (data abort if the cause of the page-table update
1426 Returns -EINVAL or -EEXIST if the VM has the KVM_VM_S390_UCONTROL flag set.
1427 Returns -EINVAL if called on a protected VM.
1430 ---------------------
1436 :Returns: 0 on success, -1 on error
1438 This ioctl defines the physical address of a three-page region in the guest
1444 This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1452 -------------------
1455 :Architectures: mips, ppc, s390, x86, loongarch
1458 :Returns: 0 on success; -1 on error
1464 :Returns: 0 on success; -1 on error
1503 The vcpu ioctl should be used for vcpu-specific capabilities, the vm ioctl
1504 for vm-wide capabilities.
1507 ---------------------
1513 :Returns: 0 on success; -1 on error
1548 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1588 ---------------------
1594 :Returns: 0 on success; -1 on error
1600 in-kernel irqchip, the multiprocessing state must be maintained by userspace on
1613 ------------------------------
1619 :Returns: 0 on success, -1 on error
1621 This ioctl defines the physical address of a one-page region in the guest
1630 This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1637 ------------------------
1643 :Returns: 0 on success, -1 on error
1652 ------------------
1658 :Returns: 0 on success, -1 on error
1672 ------------------
1678 :Returns: 0 on success, -1 on error
1700 -----------------
1706 :Returns: 0 on success, -1 on error
1727 -----------------
1733 :Returns: 0 on success, -1 on error
1754 ----------------------------
1760 :Returns: 0 on success, -1 on error
1793 Dynamically-enabled feature bits need to be requested with
1803 with the 'nent' field indicating the number of entries in the variable-size
1833 may be returned as true, but they depend on KVM_CREATE_IRQCHIP for in-kernel
1846 -----------------------
1876 ------------------------
1882 :Returns: 0 on success, -1 on error
1888 - GSI routing does not apply to KVM_IRQ_LINE but only to KVM_IRQFD.
1925 error -EINVAL.
1929 - KVM_MSI_VALID_DEVID: used along with KVM_IRQ_ROUTING_MSI routing entry
1930 type, specifies that the devid field contains a valid value. The per-VM
1934 - zero otherwise
1959 address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
1993 --------------------
1999 :Returns: 0 on success, -1 on error
2001 Specifies the tsc frequency for the virtual machine. The unit of the
2002 frequency is KHz.
2005 be used as a vm ioctl to set the initial tsc frequency of subsequently
2009 --------------------
2015 :Returns: virtual tsc-khz on success, negative value on error
2017 Returns the tsc frequency of the guest. The unit of the return value is
2018 KHz. If the host has unstable tsc this ioctl returns -EIO instead as an
2023 ------------------
2029 :Returns: 0 on success, -1 on error
2044 the APIC_ID register (bytes 32-35). xAPIC only allows an 8-bit APIC ID
2045 which is stored in bits 31-24 of the APIC register, or equivalently in
2054 ------------------
2060 :Returns: 0 on success, -1 on error
2072 The format of the APIC ID register (bytes 32-35 of struct kvm_lapic_state's
2078 ------------------
2101 For the special case of virtio-ccw devices on s390, the ioevent is matched
2115 For virtio-ccw devices, addr contains the subchannel id and datamatch the
2124 ------------------
2130 :Returns: 0 on success, -1 on error
2150 The array is little-endian: the bit 0 is the least significant bit of the
2160 -------------------------
2169 is an IOMMU for PAPR-style virtual I/O. It is used to translate
2183 which this TCE table will translate - the table will contain one 64
2193 the entries written by kernel-handled H_PUT_TCE calls, and also lets
2199 ------------
2205 :Returns: 0 on success, -1 on error
2215 - pause the vcpu
2216 - read the local APIC's state (KVM_GET_LAPIC)
2217 - check whether changing LINT1 will queue an NMI (see the LVT entry for LINT1)
2218 - if so, issue KVM_NMI
2219 - resume the vcpu
2226 ----------------------
2248 ------------------------
2270 ------------------------
2288 --------------------
2460 MIPS KVM_REG_MIPS_R0 64
2462 MIPS KVM_REG_MIPS_R31 64
2463 MIPS KVM_REG_MIPS_HI 64
2464 MIPS KVM_REG_MIPS_LO 64
2465 MIPS KVM_REG_MIPS_PC 64
2466 MIPS KVM_REG_MIPS_CP0_INDEX 32
2467 MIPS KVM_REG_MIPS_CP0_ENTRYLO0 64
2468 MIPS KVM_REG_MIPS_CP0_ENTRYLO1 64
2469 MIPS KVM_REG_MIPS_CP0_CONTEXT 64
2470 MIPS KVM_REG_MIPS_CP0_CONTEXTCONFIG 32
2471 MIPS KVM_REG_MIPS_CP0_USERLOCAL 64
2472 MIPS KVM_REG_MIPS_CP0_XCONTEXTCONFIG 64
2473 MIPS KVM_REG_MIPS_CP0_PAGEMASK 32
2474 MIPS KVM_REG_MIPS_CP0_PAGEGRAIN 32
2475 MIPS KVM_REG_MIPS_CP0_SEGCTL0 64
2476 MIPS KVM_REG_MIPS_CP0_SEGCTL1 64
2477 MIPS KVM_REG_MIPS_CP0_SEGCTL2 64
2478 MIPS KVM_REG_MIPS_CP0_PWBASE 64
2479 MIPS KVM_REG_MIPS_CP0_PWFIELD 64
2480 MIPS KVM_REG_MIPS_CP0_PWSIZE 64
2481 MIPS KVM_REG_MIPS_CP0_WIRED 32
2482 MIPS KVM_REG_MIPS_CP0_PWCTL 32
2483 MIPS KVM_REG_MIPS_CP0_HWRENA 32
2484 MIPS KVM_REG_MIPS_CP0_BADVADDR 64
2485 MIPS KVM_REG_MIPS_CP0_BADINSTR 32
2486 MIPS KVM_REG_MIPS_CP0_BADINSTRP 32
2487 MIPS KVM_REG_MIPS_CP0_COUNT 32
2488 MIPS KVM_REG_MIPS_CP0_ENTRYHI 64
2489 MIPS KVM_REG_MIPS_CP0_COMPARE 32
2490 MIPS KVM_REG_MIPS_CP0_STATUS 32
2491 MIPS KVM_REG_MIPS_CP0_INTCTL 32
2492 MIPS KVM_REG_MIPS_CP0_CAUSE 32
2493 MIPS KVM_REG_MIPS_CP0_EPC 64
2494 MIPS KVM_REG_MIPS_CP0_PRID 32
2495 MIPS KVM_REG_MIPS_CP0_EBASE 64
2496 MIPS KVM_REG_MIPS_CP0_CONFIG 32
2497 MIPS KVM_REG_MIPS_CP0_CONFIG1 32
2498 MIPS KVM_REG_MIPS_CP0_CONFIG2 32
2499 MIPS KVM_REG_MIPS_CP0_CONFIG3 32
2500 MIPS KVM_REG_MIPS_CP0_CONFIG4 32
2501 MIPS KVM_REG_MIPS_CP0_CONFIG5 32
2502 MIPS KVM_REG_MIPS_CP0_CONFIG7 32
2503 MIPS KVM_REG_MIPS_CP0_XCONTEXT 64
2504 MIPS KVM_REG_MIPS_CP0_ERROREPC 64
2505 MIPS KVM_REG_MIPS_CP0_KSCRATCH1 64
2506 MIPS KVM_REG_MIPS_CP0_KSCRATCH2 64
2507 MIPS KVM_REG_MIPS_CP0_KSCRATCH3 64
2508 MIPS KVM_REG_MIPS_CP0_KSCRATCH4 64
2509 MIPS KVM_REG_MIPS_CP0_KSCRATCH5 64
2510 MIPS KVM_REG_MIPS_CP0_KSCRATCH6 64
2511 MIPS KVM_REG_MIPS_CP0_MAAR(0..63) 64
2512 MIPS KVM_REG_MIPS_COUNT_CTL 64
2513 MIPS KVM_REG_MIPS_COUNT_RESUME 64
2514 MIPS KVM_REG_MIPS_COUNT_HZ 64
2515 MIPS KVM_REG_MIPS_FPR_32(0..31) 32
2516 MIPS KVM_REG_MIPS_FPR_64(0..31) 64
2517 MIPS KVM_REG_MIPS_VEC_128(0..31) 128
2518 MIPS KVM_REG_MIPS_FCR_IR 32
2519 MIPS KVM_REG_MIPS_FCR_CSR 32
2520 MIPS KVM_REG_MIPS_MSA_IR 32
2521 MIPS KVM_REG_MIPS_MSA_CSR 32
2531 ARM 32-bit CP15 registers have the following id bit patterns::
2535 ARM 64-bit CP15 registers have the following id bit patterns::
2543 ARM 32-bit VFP control registers have the following id bit patterns::
2547 ARM 64-bit FP registers have the following id bit patterns::
2551 ARM firmware pseudo-registers have the following bit pattern::
2559 arm64 core/FP-SIMD registers have the following id bit patterns. Note
2593 .. [1] These encodings are not accepted for SVE-enabled vcpus. See
2618 arm64 firmware pseudo-registers have the following bit pattern::
2627 0x6060 0000 0015 ffff KVM_REG_ARM64_SVE_VLS pseudo-register
2630 ENOENT. max_vq is the vcpu's maximum supported vector length in 128-bit
2641 KVM_REG_ARM64_SVE_VLS is a pseudo-register that allows the set of vector
2651 ((vector_lengths[(vq - KVM_ARM64_SVE_VQ_MIN) / 64] >>
2652 ((vq - KVM_ARM64_SVE_VQ_MIN) % 64)) & 1))
2674 is hardware-dependent and may not be available. Attempting to configure
2681 arm64 bitmap feature firmware pseudo-registers have the following bit pattern::
2695 a -EBUSY to userspace.
2700 MIPS registers are mapped using the lower 32 bits. The upper 16 of that is
2703 MIPS core registers (see above) have the following id bit patterns::
2707 MIPS CP0 registers (see KVM_REG_MIPS_CP0_* above) have the following id bit
2708 patterns depending on whether they're 32-bit or 64-bit registers::
2710 0x7020 0000 0001 00 <reg:5> <sel:3> (32-bit)
2711 0x7030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2719 MIPS MAARs (see KVM_REG_MIPS_CP0_MAAR(*) above) have the following id bit
2724 MIPS KVM control registers (see above) have the following id bit patterns::
2728 MIPS FPU registers (see KVM_REG_MIPS_FPR_{32,64}() above) have the following
2732 if the guest FPU mode is changed. MIPS SIMD Architecture (MSA) vector
2736 0x7020 0000 0003 00 <0:3> <reg:5> (32-bit FPU registers)
2737 0x7030 0000 0003 00 <0:3> <reg:5> (64-bit FPU registers)
2738 0x7040 0000 0003 00 <0:3> <reg:5> (128-bit MSA vector registers)
2740 MIPS FPU control registers (see KVM_REG_MIPS_FCR_{IR,CSR} above) have the
2745 MIPS MSA control registers (see KVM_REG_MIPS_MSA_{IR,CSR} above) have the
2750 RISC-V registers are mapped using the lower 32 bits. The upper 8 bits of
2753 RISC-V config registers are meant for configuring a Guest VCPU and it has
2759 Following are the RISC-V config registers:
2771 RISC-V core registers represent the general execution state of a Guest VCPU
2777 Following are the RISC-V core registers:
2814 0x80x0 0000 0200 0020 mode Privilege mode (1 = S-mode or 0 = U-mode)
2817 RISC-V csr registers represent the supervisor mode control/status registers
2823 Following are the RISC-V csr registers:
2839 RISC-V timer registers represent the timer state of a Guest VCPU and it has
2844 Following are the RISC-V timer registers:
2849 0x8030 0000 0400 0000 frequency Time base frequency (read-only)
2855 RISC-V F-extension registers represent the single precision floating point
2860 Following are the RISC-V F-extension registers:
2871 RISC-V D-extension registers represent the double precision floating point
2875 0x8030 0000 06 <index into the __riscv_d_ext_state struct:24> (non-fcsr)
2877 Following are the RISC-V D-extension registers:
2894 0x9030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2903 --------------------
2933 ----------------------
2939 :Returns: 0 on success, -1 on error
2950 load-link/store-conditional, or equivalent must be used. There are two cases
2957 -------------------
2963 :Returns: >0 on delivery, 0 if guest blocked the MSI, and -1 on error
2965 Directly inject a MSI message. Only valid with in-kernel irqchip that handles
2980 KVM_MSI_VALID_DEVID: devid contains a valid value. The per-VM
2991 address_hi bits 31-8 provide bits 31-8 of the destination id. Bits 7-0 of
2996 --------------------
3002 :Returns: 0 on success, -1 on error
3004 Creates an in-kernel device model for the i8254 PIT. This call is only valid
3005 after enabling in-kernel irqchip support via KVM_CREATE_IRQCHIP. The following
3017 PIT timer interrupts may use a per-VM kernel thread for injection. If it
3020 kvm-pit/<owner-process-pid>
3029 -----------------
3035 :Returns: 0 on success, -1 on error
3037 Retrieves the state of the in-kernel PIT model. Only valid after
3057 -----------------
3063 :Returns: 0 on success, -1 on error
3065 Sets the state of the in-kernel PIT model. Only valid after KVM_CREATE_PIT2.
3072 --------------------------
3078 :Returns: 0 on success, -1 on error
3083 device-tree properties for the guest operating system.
3097 - KVM_PPC_PAGE_SIZES_REAL:
3102 - KVM_PPC_1T_SEGMENTS
3106 - KVM_PPC_NO_HASH
3107 This flag indicates that HPT guests are not supported by KVM,
3147 --------------
3153 :Returns: 0 on success, -1 on error
3163 With KVM_CAP_IRQFD_RESAMPLE, KVM_IRQFD supports a de-assert and notify
3164 mechanism allowing emulation of level-triggered, irqfd-based
3169 as from an EOI, the gsi is de-asserted and the user is notified via
3170 kvm_irqfd.resamplefd. It is the user's responsibility to re-queue
3178 - in case no routing entry is associated to this gsi, injection fails
3179 - in case the gsi is associated to an irqchip routing entry,
3181 - in case the gsi is associated to an MSI routing entry, the MSI
3183 to GICv3 ITS in-kernel emulation).
3186 --------------------------
3192 :Returns: 0 on success, -1 on error
3204 The parameter is a pointer to a 32-bit unsigned integer variable
3211 default-sized hash table (16 MB).
3219 real-mode area (VRMA) facility, the kernel will re-create the VMRA
3223 -----------------------
3229 :Returns: 0 on success, -1 on error
3245 - sigp stop; optional flags in parm
3247 - program check; code in parm
3249 - sigp set prefix; prefix address in parm
3251 - restart
3253 - clock comparator interrupt
3255 - CPU timer interrupt
3257 - virtio external interrupt; external interrupt
3260 - sclp external interrupt; sclp parameter in parm
3262 - sigp emergency; source cpu in parm
3264 - sigp external call; source cpu in parm
3266 - compound value to indicate an
3267 I/O interrupt (ai - adapter interrupt; cssid,ssid,schid - subchannel);
3271 - machine check interrupt; cr 14 bits in parm, machine check interrupt
3278 ------------------------
3284 :Returns: file descriptor number (>= 0) on success, -1 on error
3287 entries in the guest's hashed page table (HPT), or to write entries to
3288 initialize the HPT. The returned fd can only be written to if the
3304 The 'start_index' field gives the index in the HPT of the entry at
3308 "interesting" HPT entries. Interesting entries are those with the
3310 all entries. When the end of the HPT is reached, the read() will
3312 the beginning of the HPT, but will only return HPT entries that have
3316 series of valid HPT entries (16 bytes) each. The header indicates how
3317 many valid HPT entries there are and how many invalid entries follow
3327 Writes to the fd create HPT entries starting at the index given in the
3333 ----------------------
3339 :Returns: 0 on success, -1 on error
3372 --------------------------------------------
3380 :Returns: 0 on success, -1 on error
3388 (e.g. read-only attribute, or attribute that only makes
3395 semantics are device-specific. See individual device documentation in
3403 __u32 group; /* device-defined */
3404 __u64 attr; /* group-defined */
3409 ------------------------
3416 :Returns: 0 on success, -1 on error
3433 ----------------------
3439 :Returns: 0 on success; -1 on error
3454 - Processor state:
3459 - General Purpose registers, including PC and SP: set to 0
3460 - FPSIMD/NEON registers: set to 0
3461 - SVE registers: set to 0
3462 - System registers: Reset to their architecturally defined
3475 - KVM_ARM_VCPU_POWER_OFF: Starts the CPU in a power-off state.
3478 - KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
3480 - KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
3483 - KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
3486 - KVM_ARM_VCPU_PTRAUTH_ADDRESS: Enables Address Pointer authentication
3494 - KVM_ARM_VCPU_PTRAUTH_GENERIC: Enables Generic Pointer authentication
3502 - KVM_ARM_VCPU_SVE: Enables SVE for the CPU (arm64 only).
3508 - KVM_REG_ARM64_SVE_VLS may be read using KVM_GET_ONE_REG: the
3509 initial value of this pseudo-register indicates the best set of
3514 - KVM_RUN and KVM_GET_REG_LIST are not available;
3516 - KVM_GET_ONE_REG and KVM_SET_ONE_REG cannot be used to access
3521 - KVM_REG_ARM64_SVE_VLS may optionally be written using
3527 - the KVM_REG_ARM64_SVE_VLS pseudo-register is immutable, and can
3531 -----------------------------
3537 :Returns: 0 on success; -1 on error
3550 kvm_vcpu_init->features bitmap returned will have feature bits set if
3560 ---------------------
3563 :Architectures: arm64, mips, riscv
3566 :Returns: 0 on success; -1 on error
3588 - KVM_REG_S390_TODPR
3590 - KVM_REG_S390_EPOCHDIFF
3592 - KVM_REG_S390_CPU_TIMER
3594 - KVM_REG_S390_CLOCK_COMP
3596 - KVM_REG_S390_PFTOKEN
3598 - KVM_REG_S390_PFCOMPARE
3600 - KVM_REG_S390_PFSELECT
3602 - KVM_REG_S390_PP
3604 - KVM_REG_S390_GBEA
3608 -----------------------------------------
3614 :Returns: 0 on success, -1 on error
3644 arm64 currently only require this when using the in-kernel GIC
3650 base addresses will return -EEXIST.
3657 ------------------------------
3663 :Returns: 0 on success, -1 on error
3668 of a service that has a kernel-side implementation. If the token
3669 value is non-zero, it will be associated with that service, and
3677 ------------------------
3683 :Returns: 0 on success; -1 on error
3698 - KVM_GUESTDBG_ENABLE: guest debugging is enabled
3699 - KVM_GUESTDBG_SINGLESTEP: the next run should single-step
3704 - KVM_GUESTDBG_USE_SW_BP: using software breakpoints [x86, arm64]
3705 - KVM_GUESTDBG_USE_HW_BP: using hardware breakpoints [x86, s390]
3706 - KVM_GUESTDBG_USE_HW: using hardware debug events [arm64]
3707 - KVM_GUESTDBG_INJECT_DB: inject DB type exception [x86]
3708 - KVM_GUESTDBG_INJECT_BP: inject BP type exception [x86]
3709 - KVM_GUESTDBG_EXIT_PENDING: trigger an immediate guest exit [s390]
3710 - KVM_GUESTDBG_BLOCKIRQ: avoid injecting interrupts/NMI/SMI [x86]
3728 the single-step debug event (KVM_GUESTDBG_SINGLESTEP) is supported.
3738 ---------------------------
3744 :Returns: 0 on success, -1 on error
3779 the variable-size array 'entries'. If the number of entries is too low
3813 --------------------
3820 < 0 on generic error (e.g. -EFAULT or -ENOMEM),
3878 Logical accesses are permitted for non-protected guests only.
3896 translation-exception identifier (TEID) indicates suppression.
3919 Absolute accesses are permitted for non-protected guests only.
3958 -----------------------
3984 will cause the ioctl to return -EINVAL.
3990 -----------------------
4008 will cause the ioctl to return -EINVAL.
4015 the ioctl will return -EINVAL.
4018 -----------------
4024 :Returns: 0 on success, -1 on error
4065 - KVM_S390_SIGP_STOP - sigp stop; parameter in .stop
4066 - KVM_S390_PROGRAM_INT - program check; parameters in .pgm
4067 - KVM_S390_SIGP_SET_PREFIX - sigp set prefix; parameters in .prefix
4068 - KVM_S390_RESTART - restart; no parameters
4069 - KVM_S390_INT_CLOCK_COMP - clock comparator interrupt; no parameters
4070 - KVM_S390_INT_CPU_TIMER - CPU timer interrupt; no parameters
4071 - KVM_S390_INT_EMERGENCY - sigp emergency; parameters in .emerg
4072 - KVM_S390_INT_EXTERNAL_CALL - sigp external call; parameters in .extcall
4073 - KVM_S390_MCHK - machine check interrupt; parameters in .mchk
4078 ---------------------------
4085 -EINVAL if buffer size is 0,
4086 -ENOBUFS if buffer size is too small to fit all pending interrupts,
4087 -EFAULT if the buffer address was invalid
4105 the kernel never checked for flags == 0 and QEMU never pre-zeroed flags and
4109 If -ENOBUFS is returned the buffer provided was too small and userspace
4113 ---------------------------
4120 -EFAULT if the buffer address was invalid,
4121 -EINVAL for an invalid buffer length (see below),
4122 -EBUSY if there were already interrupts pending,
4126 This ioctl allows userspace to set the complete state of all cpu-local
4148 which is the maximum number of possibly pending cpu-local interrupts.
4151 ------------
4157 :Returns: 0 on success, -1 on error
4162 ----------------------------
4251 part of VM-Enter/VM-Exit emulation.
4254 of VM-Enter/VM-Exit emulation. If an MSR access is denied on VM-Enter, KVM
4255 synthesizes a consistency check VM-Exit(EXIT_REASON_MSR_LOAD_FAIL). If an
4256 MSR access is denied on VM-Exit, KVM synthesizes a VM-Abort. In short, KVM
4258 the VM-Enter/VM-Exit MSR list. It is platform owner's responsibility to
4275 ----------------------------
4308 -------------------------
4315 -EFAULT if struct kvm_reinject_control cannot be read,
4316 -ENXIO if KVM_CREATE_PIT or KVM_CREATE_PIT2 didn't succeed earlier.
4335 ------------------------------
4342 -EFAULT if struct kvm_ppc_mmuv3_cfg cannot be read,
4343 -EINVAL if the configuration is invalid
4345 This ioctl controls whether the guest will use radix or HPT (hashed
4358 to use radix tree translation, and if clear, to use HPT translation.
4369 ---------------------------
4376 -EFAULT if struct kvm_ppc_rmmu_info cannot be written,
4377 -EINVAL if no useful information can be returned
4406 --------------------------------
4413 >0 if a new HPT is being prepared, the value is an estimated
4415 -EFAULT if struct kvm_reinject_control cannot be read,
4416 -EINVAL if the supplied shift or flags are invalid,
4417 -ENOMEM if unable to allocate the new HPT,
4420 Hashed Page Table (HPT). Specifically this starts, stops or monitors
4421 the preparation of a new potential HPT for the guest, essentially
4432 If called with shift > 0 when there is no pending HPT for the guest,
4433 this begins preparation of a new pending HPT of size 2^(shift) bytes.
4437 If called when there is a pending HPT whose size does not match that
4438 requested in the parameters, discards the existing pending HPT and
4441 If called when there is a pending HPT of the size requested, will:
4443 * If preparation of the pending HPT is already complete, return 0
4444 * If preparation of the pending HPT has failed, return an error
4445 code, then discard the pending HPT.
4446 * If preparation of the pending HPT is still in progress, return an
4449 If called with shift == 0, discards any currently pending HPT and
4450 returns 0 (i.e. cancels any in-progress preparation).
4453 flags will result in an -EINVAL.
4460 -------------------------------
4467 -EFAULT if struct kvm_reinject_control cannot be read,
4468 -EINVAL if the supplied shift or flags are invalid,
4469 -ENXIO is there is no pending HPT, or the pending HPT doesn't
4471 -EBUSY if the pending HPT is not fully prepared,
4472 -ENOSPC if there was a hash collision when moving existing
4473 HPT entries to the new HPT,
4474 -EIO on other error conditions
4477 Hashed Page Table (HPT). Specifically this requests that the guest be
4478 transferred to working with the new HPT, essentially implementing the
4491 KVM_PPC_RESIZE_HPT_COMMIT will return an error (usually -ENXIO or
4492 -EBUSY, though others may be possible if the preparation was started,
4499 On successful completion, the pending HPT will become the guest's active
4500 HPT and the previous HPT will be discarded.
4502 On failure, the guest will still be operating on its previous HPT.
4505 -----------------------------------
4511 :Returns: 0 on success, -1 on error
4518 -----------------------
4525 -EFAULT if u64 mcg_cap cannot be read,
4526 -EINVAL if the requested number of banks is invalid,
4527 -EINVAL if requested MCE capability is not supported.
4532 supported number of error-reporting banks can be retrieved when
4537 ---------------------
4544 -EFAULT if struct kvm_x86_mce cannot be read,
4545 -EINVAL if the bank number is invalid,
4546 -EINVAL if VAL bit is not set in status field.
4571 ----------------------------
4594 - During live migration to save the CMMA values. Live migration needs
4596 - To non-destructively peek at the CMMA values, with the flag
4627 KVM_S390_SKEYS_MAX. KVM_S390_SKEYS_MAX is re-used for consistency with
4672 ----------------------------
4711 This ioctl can fail with -ENOMEM if not enough memory can be allocated to
4712 complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
4714 if the flags field was not 0, with -EFAULT if the userspace address is
4720 --------------------------
4727 -EFAULT if struct kvm_ppc_cpu_char cannot be written
4732 CVE-2017-5715, CVE-2017-5753 and CVE-2017-5754). The information is
4749 with preventing inadvertent information disclosure - specifically,
4750 whether there is an instruction to flash-invalidate the L1 data cache
4767 ---------------------------
4773 :Returns: 0 on success; -1 on error
4776 for issuing platform-specific memory encryption commands to manage those
4781 Documentation/virt/kvm/x86/amd-memory-encryption.rst.
4784 -----------------------------------
4790 :Returns: 0 on success; -1 on error
4795 It is used in the SEV-enabled guest. When encryption is enabled, a guest
4808 -------------------------------------
4814 :Returns: 0 on success; -1 on error
4820 ------------------------
4828 the specified Hyper-V connection id through the SIGNAL_EVENT hypercall, without
4829 causing a user exit. SIGNAL_EVENT hypercall with non-zero event flag number
4830 (bits 24-31) still triggers a KVM_EXIT_HYPERV_HCALL user exit.
4850 -EINVAL if conn_id or flags is outside the allowed range,
4851 -ENOENT on deassign if the conn_id isn't registered,
4852 -EEXIST on assign if the conn_id is already registered
4855 --------------------------
4861 :Returns: 0 on success, -1 on error
4929 --------------------------
4935 :Returns: 0 on success, -1 on error
4941 -------------------------------------
4970 -------------------------
4973 :Architectures: x86, arm64, mips
4976 :Returns: 0 on success, -1 on error
4998 in KVM's dirty bitmap, and dirty tracking is re-enabled for that page
4999 (for example via write-protection, or by clearing the dirty bit in
5002 If KVM_CAP_MULTI_ADDRESS_SPACE is available, bits 16-31 of slot field specifies
5012 --------------------------------
5018 :Returns: 0 on success, -1 on error
5039 This ioctl returns x86 cpuid features leaves related to Hyper-V emulation in
5041 cpuid information presented to guests consuming Hyper-V enlightenments (e.g.
5042 Windows or Hyper-V guests).
5044 CPUID feature leaves returned by this ioctl are defined by Hyper-V Top Level
5051 - HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS
5052 - HYPERV_CPUID_INTERFACE
5053 - HYPERV_CPUID_VERSION
5054 - HYPERV_CPUID_FEATURES
5055 - HYPERV_CPUID_ENLIGHTMENT_INFO
5056 - HYPERV_CPUID_IMPLEMENT_LIMITS
5057 - HYPERV_CPUID_NESTED_FEATURES
5058 - HYPERV_CPUID_SYNDBG_VENDOR_AND_MAX_FUNCTIONS
5059 - HYPERV_CPUID_SYNDBG_INTERFACE
5060 - HYPERV_CPUID_SYNDBG_PLATFORM_CAPABILITIES
5063 with the 'nent' field indicating the number of entries in the variable-size
5064 array 'entries'. If the number of entries is too low to describe all Hyper-V
5066 to the number of Hyper-V feature leaves, the 'nent' field is adjusted to the
5076 - HYPERV_CPUID_NESTED_FEATURES leaf and HV_X64_ENLIGHTENED_VMCS_RECOMMENDED
5079 - HV_STIMER_DIRECT_MODE_AVAILABLE bit is only exposed with in-kernel LAPIC.
5083 ---------------------------
5088 :Returns: 0 on success, -1 on error
5114 that should be performed and how to do it are feature-dependent.
5118 -EPERM unless the feature has already been finalized by means of a
5125 ------------------------------
5131 :Returns: 0 on success, -1 on error
5184 ---- -----------
5213 When setting a new pmu event filter, -EINVAL will be returned if any of the
5225 Specifically, KVM follows the following pseudo-code when determining whether to
5226 allow the guest FixCtr[i] to count its pre-defined fixed event::
5241 ---------------------
5265 ---------------------------
5277 ----------------------------
5290 --------------------------
5304 -------------------------
5349 All registered VCPUs are converted back to non-protected ones. If a
5450 not succeed all other subcommands will fail with -EINVAL. This
5451 subcommand will return -EINVAL if a dump process has not yet been
5482 resume execution immediately as non-protected. There can be at most
5507 --------------------------
5553 Sets the ABI mode of the VM to 32-bit or 64-bit (long mode). This
5587 re-mapped in guest physical address space.
5593 This is the HVM-wide vector injected directly by the hypervisor
5615 the 32-bit version code returned to the guest when it invokes the
5630 --------------------------
5643 ---------------------------
5728 other four times. The state field must be set to -1, or to a valid
5736 vCPU ID of the given vCPU, to allow timer-related VCPU operations to
5749 per-vCPU local APIC upcall vector, configured by a Xen guest with
5751 used by Windows guests, and is distinct from the HVM-wide upcall
5757 ---------------------------
5772 ---------------------------
5778 :Returns: number of bytes copied, < 0 on error (-EINVAL for incorrect
5779 arguments, -EFAULT if memory cannot be accessed).
5793 ``length`` must not be bigger than 2^31 - PAGE_SIZE bytes. The ``addr``
5810 --------------------
5816 :Returns: 0 on success, -1 on error
5843 --------------------
5849 :Returns: 0 on success, -1 on error
5856 ----------------------
5875 +-------------+
5877 +-------------+
5879 +-------------+
5881 +-------------+
5883 +-------------+
5973 Bits 0-3 of ``flags`` encode the type:
5995 is [``hist_param``*(N-1), ``hist_param``*N), while the range of the last
5996 bucket is [``hist_param``*(``size``-1), +INF). (+INF means positive infinity
6001 [0, 1), while the range of the last bucket is [pow(2, ``size``-2), +INF).
6003 [pow(2, N-2), pow(2, N-1)).
6005 Bits 4-7 of ``flags`` encode the unit:
6028 Bits 8-11 of ``flags``, together with ``exponent``, encode the scale of the
6033 CPU clock cycles. For example, an exponent of -9 can be used with
6049 bucket in the unit expressed by bits 4-11 of ``flags`` together with ``exponent``.
6055 The Stats Data block contains an array of 64-bit values in the same order
6059 --------------------
6065 :Returns: 0 on success, -1 on error
6086 -----------------------------
6106 -----------------------------
6115 for vcpus. It re-uses the kvm_s390_pv_dmp struct and hence also shares
6131 ----------------------
6139 Used to manage hardware-assisted virtualization features for zPCI devices.
6178 --------------------------------
6186 This capability indicates that userspace is able to apply a single VM-wide
6207 (-EINVAL) being returned. This ioctl can also return -EBUSY if any vcpu
6218 ------------------------------------
6257 op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7}, op2=={0-7}.
6266 ---------------------------------
6272 :Returns: 0 on success, -1 on error
6302 on-demand.
6313 Returns -EINVAL if the VM has the KVM_VM_S390_UCONTROL flag set.
6314 Returns -EINVAL if called on a protected VM.
6317 -------------------------------
6353 ----------------------------
6396 ---------------------------
6428 KVM_PRE_FAULT_MEMORY populates KVM's stage-2 page tables used to map memory
6430 stage-2 read page fault, e.g. faults in memory as needed, but doesn't break
6431 CoW. However, KVM does not mark any newly created stage-2 PTE as Accessed.
6480 This field is polled once when KVM_RUN starts; if non-zero, KVM_RUN
6481 exits immediately, returning -EINTR. In the common scenario where a
6485 a signal handler that sets run->immediate_exit to a non-zero value.
6511 The value of the current interrupt flag. Only valid if in-kernel
6518 More architecture-specific flags detailing state of the VCPU that may
6536 The value of the cr8 register. Only valid if in-kernel local APIC is
6543 The value of the APIC BASE msr. Only valid if in-kernel local
6555 reasons. Further architecture-specific information is available in
6567 to unknown reasons. Further architecture-specific information is
6620 executed a memory-mapped I/O instruction which could not be satisfied
6633 has re-entered the kernel with KVM_RUN. The kernel side will first finish
6638 completed before performing a live migration. Userspace can re-enter the
6661 ----------
6672 - ``KVM_HYPERCALL_EXIT_SMC``: Indicates that the guest used the SMC
6676 - ``KVM_HYPERCALL_EXIT_16BIT``: Indicates that the guest used a 16bit
6745 Deprecated - was used for 440 KVM.
6771 This is used on 64-bit PowerPC when emulating a pSeries partition,
6775 the arguments (from the guest R4 - R12). Userspace should put the
6836 a system-level event using some architecture specific mechanism (hypercall
6840 The 'type' field describes the system-level event type.
6843 - KVM_SYSTEM_EVENT_SHUTDOWN -- the guest has requested a shutdown of the
6847 - KVM_SYSTEM_EVENT_RESET -- the guest has requested a reset of the VM.
6850 - KVM_SYSTEM_EVENT_CRASH -- the guest crash occurred and the guest
6854 - KVM_SYSTEM_EVENT_SEV_TERM -- an AMD SEV guest requested termination.
6856 - KVM_SYSTEM_EVENT_WAKEUP -- the exiting vCPU is in a suspended state and
6859 - KVM_SYSTEM_EVENT_SUSPEND -- the guest has requested a suspension of
6863 architecture specific information for the system-level event. Only
6866 - for arm64, data[0] is set to KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 if
6870 - for arm64, data[0] is set to KVM_SYSTEM_EVENT_SHUTDOWN_FLAG_PSCI_OFF2
6874 - for RISC-V, data[0] is set to the value of the second argument of the
6882 --------------
6892 the call parameters are left in-place in the vCPU registers.
6897 - Honor the guest request to suspend the VM. Userspace can request
6898 in-kernel emulation of suspension by setting the calling vCPU's
6904 - Deny the guest request to suspend the VM. See ARM DEN0022D.b 5.19.2
6920 Indicates that the VCPU's in-kernel local APIC received an EOI for a
6921 level-triggered IOAPIC interrupt. This exit only triggers when the
6963 related to Hyper-V emulation.
6967 - KVM_EXIT_HYPERV_SYNIC -- synchronously notify user-space about
6969 Hyper-V SynIC state change. Notification is used to remap SynIC
6973 - KVM_EXIT_HYPERV_SYNDBG -- synchronously notify user-space about
6975 Hyper-V Synthetic debugger state change. Notification is used to either update
6994 the VM. KVM assumed that if the guest accessed non-memslot memory, it was
7024 __u8 error; /* user -> kernel */
7026 __u32 reason; /* kernel -> user */
7027 __u32 index; /* kernel -> user */
7028 __u64 data; /* kernel <-> user */
7086 - KVM_EXIT_XEN_HCALL -- synchronously notify user-space about Xen hypercall.
7101 done a SBI call which is not handled by KVM RISC-V kernel module. The details
7107 values of SBI call before resuming the VCPU. For more details on RISC-V SBI
7108 spec refer, https://github.com/riscv/riscv-sbi-doc.
7125 - KVM_MEMORY_EXIT_FLAG_PRIVATE - When set, indicates the memory fault occurred
7130 accompanies a return code of '-1', not '0'! errno will always be set to EFAULT
7143 enabled, a VM exit generated if no event window occurs in VM non-root mode
7151 - KVM_NOTIFY_CONTEXT_INVALID -- the VM context is corrupted and not valid
7206 whether this is a per-vcpu or per-vm capability.
7217 -------------------
7222 :Returns: 0 on success; -1 on error
7226 were invented by Mac-on-Linux to have a standardized communication mechanism
7233 --------------------
7238 :Returns: 0 on success; -1 on error
7254 ------------------
7259 :Returns: 0 on success; -1 on error
7272 addresses of mmu-type-specific data structures. The "array_len" field is an
7288 - The "params" field is of type "struct kvm_book3e_206_tlb_params".
7289 - The "array" field points to an array of type "struct
7291 - The array consists of all entries in the first TLB, followed by all
7293 - Within a TLB, entries are ordered first by increasing set number. Within a
7295 - The hash for determining set number in TLB0 is: (MAS2 >> 12) & (num_sets - 1)
7297 - The tsize field of mas1 shall be set to 4K on TLB0, even though the
7301 ----------------------------
7306 :Returns: 0 on success; -1 on error
7311 handled in-kernel, while the other I/O instructions are passed to userspace.
7316 Note that even though this capability is enabled per-vcpu, the complete
7320 -------------------
7325 :Returns: 0 on success; -1 on error
7339 --------------------
7345 This capability connects the vcpu to an in-kernel MPIC device.
7348 --------------------
7355 This capability connects the vcpu to an in-kernel XICS device.
7358 ------------------------
7364 This capability enables the in-kernel irqchip for s390. Please refer to
7368 --------------------
7370 :Architectures: mips
7382 ---------------------
7384 :Architectures: mips
7388 This capability allows the use of the MIPS SIMD Architecture (MSA) by the guest.
7395 ----------------------
7400 :Returns: x86: KVM_CHECK_EXTENSION returns a bit-array indicating which register
7416 - the register sets to be copied out to kvm_run are selectable
7418 - vcpu_events are available in addition to regs and sregs.
7421 function as an input bit-array field set by userspace to indicate the
7441 -------------------------
7448 This capability connects the vcpu to an in-kernel XIVE device.
7451 -------------------------
7458 Hyper-V Synthetic interrupt controller(SynIC). Hyper-V SynIC is
7459 used to support Windows Hyper-V based guest paravirt drivers(VMBus).
7464 by the CPU, as it's incompatible with SynIC auto-EOI behavior.
7467 --------------------------
7472 This capability enables a newer version of Hyper-V Synthetic interrupt
7478 -----------------------------------
7483 This capability indicates that KVM running on top of Hyper-V hypervisor
7485 hypercalls are handled by Level 0 hypervisor (Hyper-V) bypassing KVM.
7486 Due to the different ABI for hypercall parameters between Hyper-V and
7489 flush hypercalls by Hyper-V) so userspace should disable KVM identification
7490 in CPUID and only exposes Hyper-V identification. In this case, guest
7491 thinks it's running on Hyper-V and only use Hyper-V hypercalls.
7494 ---------------------------------
7499 When enabled, KVM will disable emulated Hyper-V features provided to the
7500 guest according to the bits Hyper-V CPUID feature leaves. Otherwise, all
7501 currently implemented Hyper-V features are provided unconditionally when
7502 Hyper-V identification is set in the HYPERV_CPUID_INTERFACE (0x40000001)
7506 -------------------------------------
7544 ----------------------------
7548 args[1] is 0 to disable, 1 to enable in-kernel handling
7551 get handled by the kernel or not. Enabling or disabling in-kernel
7553 initial set of hcalls are enabled for in-kernel handling, which
7554 consists of those hcalls for which in-kernel handlers were implemented
7561 If the hcall number specified is not one that has an in-kernel
7566 --------------------------
7575 - SENSE
7576 - SENSE RUNNING
7577 - EXTERNAL CALL
7578 - EMERGENCY SIGNAL
7579 - CONDITIONAL EMERGENCY SIGNAL
7588 ---------------------------------
7596 return -EINVAL if the machine does not support vectors.
7599 --------------------------
7604 This capability allows post-handlers for the STSI instruction. After
7609 vcpu->run::
7620 @addr - guest address of STSI SYSIB
7621 @fc - function code
7622 @sel1 - selector 1
7623 @sel2 - selector 2
7624 @ar - access register number
7626 KVM handlers should exit to userspace with rc = -EREMOTE.
7629 -------------------------
7632 :Parameters: args[0] - number of routes reserved for userspace IOAPICs
7633 :Returns: 0 on success, -1 on error
7650 -------------------
7655 Allows use of runtime-instrumentation introduced with zEC12 processor.
7656 Will return -EINVAL if the machine does not support runtime-instrumentation.
7657 Will return -EBUSY if a VCPU has already been created.
7660 ----------------------
7663 :Parameters: args[0] - features that should be enabled
7664 :Returns: 0 on success, -EINVAL when args[0] contains invalid features
7673 allowing the use of 32-bit APIC IDs. See KVM_CAP_X2APIC_API in their
7680 where 0xff represents CPUs 0-7 in cluster 0.
7683 ----------------------------
7690 mechanism e.g. to realize 2-byte software breakpoints. The kernel will
7698 -------------------
7702 :Returns: 0 on success; -EINVAL if the machine does not support
7703 guarded storage; -EBUSY if a VCPU has already been created.
7708 ---------------------
7713 Allow use of adapter-interruption suppression.
7714 :Returns: 0 on success; -EBUSY if a VCPU has already been created.
7717 --------------------
7735 ----------------------
7747 ------------------------------
7751 :Returns: 0 on success, -EINVAL when args[0] contains invalid exits
7771 --------------------------
7775 :Returns: 0 on success, -EINVAL if hpage module parameter was not set
7783 hpage module parameter is not set to 1, -EINVAL is returned.
7789 ------------------------------
7799 --------------------------
7803 :Returns: 0 on success, -EINVAL when the implementation doesn't support
7804 nested-HV virtualization.
7806 HV-KVM on POWER9 and later systems allows for "nested-HV"
7808 can run using the CPU's supervisor mode (privileged non-hypervisor
7811 kvm-hv module parameter.
7814 ------------------------------
7820 emulated VM-exit when L1 intercepts a #PF exception that occurs in
7821 L2. Similarly, for kvm-intel only, DR6 will not be modified prior to
7822 the emulated VM-exit when L1 intercepts a #DB exception that occurs in
7828 exception.has_payload and to put the faulting address - or the new DR6
7829 bits\ [#]_ - in the exception_payload field.
7840 --------------------------------------
7842 :Architectures: x86, arm64, mips
7851 automatically clear and write-protect all pages that are returned as dirty.
7857 KVM_CLEAR_DIRTY_LOG ioctl can operate on a 64-page granularity rather
7882 ------------------------------
7899 ----------------------
7904 :Returns: 0 on success; -1 on error
7907 maximum halt-polling time for all vCPUs in the target VM. This capability can
7909 maximum halt-polling time.
7911 See Documentation/virt/kvm/halt-polling.rst for more information on halt
7915 -------------------------------
7920 :Returns: 0 on success; -1 on error
7947 -------------------------------
7952 :Returns: 0 on success, -EINVAL when args[0] contains invalid bits
7962 the KVM_ENABLE_CAP. The supported modes are mutually-exclusive.
7965 guest, irrespective whether or not the host has enabled split-lock detection
7971 exit, although the host kernel's split-lock #AC detection still applies, if
7977 apply some other policy-based mitigation. When exiting to userspace, KVM sets
7978 KVM_RUN_X86_BUS_LOCK in vcpu-run->flags, and conditionally sets the exit_reason
7986 ----------------------
7990 :Returns: 0 on success, -EINVAL when CPU doesn't support 2nd DAWR
7997 -------------------------------------
8007 This is intended to support in-guest workloads scheduled by the host. This
8008 allows the in-guest workload to maintain its own NPTs and keeps the two vms
8013 --------------------------
8018 :Returns: 0 on success, -EINVAL if the file handle is invalid or if a requested
8036 --------------------------------------
8054 --------------------
8071 ``MAP_ANONYMOUS`` or with a RAM-based file mapping (``tmpfs``, ``memfd``),
8073 -EINVAL return.
8079 -------------------------------------
8089 This is intended to support intra-host migration of VMs between userspace VMMs,
8093 ----------------------------
8095 :Parameters: args[0] - set of KVM quirks to disable
8131 KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8134 KVM does not pre-increment %rip before
8200 ------------------------
8204 :Parameters: args[0] - maximum APIC ID value set for current VM
8205 :Returns: 0 on success, -EINVAL if args[0] is beyond KVM_MAX_VCPU_IDS
8221 ------------------------------
8226 :Returns: 0 on success, -EINVAL if args[0] contains invalid flags or notify
8236 in per-VM scope during VM creation. Notify VM exit is disabled by default.
8239 a VM exit if no event window occurs in VM non-root mode for a specified of
8250 -----------------------------------
8255 :Returns: 0 on success, -EINVAL if args[0] contains an invalid value for the
8256 frequency or if any vCPUs have been created, -ENXIO if a virtual
8259 This capability sets the VM's APIC bus clock frequency, used by KVM's in-kernel
8264 core crystal clock frequency, if a non-zero CPUID 0x15 is exposed to the guest.
8267 ----------------------------------------------------------
8271 :Parameters: args[0] - size of the dirty log ring
8311 00 -----------> 01 -------------> 1X -------+
8314 +------------------------------------------+
8328 using load-acquire/store-release accessors when available, or any
8356 Architecture with TSO-like ordering (such as x86) are allowed to
8362 ring structures can be backed by per-slot bitmaps. With this capability
8372 context. Otherwise, the stand-alone per-slot bitmap mechanism needs to
8385 KVM device "kvm-arm-vgic-its". (2) restore vgic/its tables through
8387 "kvm-arm-vgic-its". VGICv3 LPI pending status is restored. (3) save
8389 command on KVM device "kvm-arm-vgic-v3".
8392 ---------------------------
8397 :Returns: 0 on success, -EINVAL when arg[0] contains invalid bits
8413 -------------------------------------
8418 :Returns: 0 on success, -EPERM if the userspace process does not
8419 have CAP_SYS_BOOT, -EINVAL if args[0] is not 0 or any vCPUs have been
8429 ---------------------------------------
8434 :Returns: 0 on success, -EINVAL if any memslot was already created.
8438 Eager Page Splitting improves the performance of dirty-logging (used
8439 in live migrations) when guest memory is backed by huge-pages. It
8440 avoids splitting huge-pages (into PAGE_SIZE pages) on fault, by doing
8451 64-bit bitmap (each bit describing a block size). The default value is
8455 ---------------------------
8473 -------------------------------
8482 -------------------------------------
8487 :Returns: 0 on success, -EINVAL if vCPUs have been created before enabling this
8506 ---------------------
8512 H_RANDOM hypercall backed by a hardware random-number generator.
8517 -------------------------
8527 ---------------------------
8534 the POWER9 processor), including in-memory segment tables.
8537 -------------------
8539 :Architectures: mips
8555 may be incompatible with the MIPS VZ ASE.
8562 1 The MIPS VZ ASE is in use, providing full hardware assisted
8567 ----------------------
8569 :Architectures: mips
8581 Both registers and addresses are 32-bits wide.
8582 It will only be possible to run 32-bit guest code.
8584 1 MIPS64 or microMIPS64 with access only to 32-bit compatibility segments.
8585 Registers are 64-bits wide, but addresses are 32-bits wide.
8586 64-bit guest code may run but cannot access MIPS64 memory segments.
8587 It will also be possible to run 32-bit guest code.
8590 Both registers and addresses are 64-bits wide.
8591 It will be possible to run 64-bit or 32-bit guest code.
8595 ------------------------
8600 that if userspace creates a VM without an in-kernel interrupt controller, it
8601 will be notified of changes to the output level of in-kernel emulated devices,
8604 updates the vcpu's run->s.regs.device_irq_level field to represent the actual
8610 userspace can always sample the device output level and re-compute the state of
8612 of run->s.regs.device_irq_level on every kvm exit.
8613 The value in run->s.regs.device_irq_level can represent both level and edge
8615 signals will exit to userspace with the bit in run->s.regs.device_irq_level
8618 The field run->s.regs.device_irq_level is available independent of
8619 run->kvm_valid_regs or run->kvm_dirty_regs bits.
8623 and thereby which bits in run->s.regs.device_irq_level can signal values.
8629 KVM_ARM_DEV_EL1_VTIMER - EL1 virtual timer
8630 KVM_ARM_DEV_EL1_PTIMER - EL1 physical timer
8631 KVM_ARM_DEV_PMU - ARM PMU overflow interrupt signal
8638 -----------------------------
8648 ----------------------------
8658 -------------------------------
8667 ---------------------
8674 ----------------------
8683 ---------------------
8688 use copy-on-write semantics as well as dirty pages tracking via read-only page
8692 ---------------------
8701 ----------------------------
8705 This capability indicates that KVM supports paravirtualized Hyper-V TLB Flush
8711 ----------------------------------
8726 ----------------------------
8730 This capability indicates that KVM supports paravirtualized Hyper-V IPI send
8735 -----------------------------
8743 ---------------------------
8754 -----------------------
8760 architecture-specific interfaces. This capability and the architecture-
8767 -------------------------
8777 an 8-byte value consisting of a one-byte Control Program Name Code (CPNC) and
8778 a 7-byte Control Program Version Code (CPVC). The CPNC determines what
8787 -------------------------------
8798 ---------------------------
8812 --------------------
8842 The KVM_XEN_HVM_CONFIG_RUNSTATE flag indicates that the runstate-related
8876 ---------------------------
8890 IBM pSeries (sPAPR) guest starts using them if "hcall-multi-tce" is
8891 present in the "ibm,hypertas-functions" device-tree property.
8901 --------------------
8910 --------------------------------
8922 ------------------------------
8942 When getting the Modified Change Topology Report value, the attr->addr
8946 ---------------------
8951 This capability returns a bitmap of support VM types. The 1-setting of bit @n
8961 production. The behavior and effective ABI for software-protected VMs is
8965 -------------------------------
8974 IBM pSeries (sPAPR) guest starts using it if "hcall-rpt-invalidate" is
8975 present in the "ibm,hypertas-functions" device-tree property.
8981 ---------------------------
8989 This capability allows a guest kernel to use a better-performance mode for
8993 ------------------------------
8998 kvm_run.memory_fault if KVM cannot resolve a guest page fault VM-Exit, e.g. if
9013 ---------------------------
9036 --------
9050 ``KVM_ENABLE_CAP(KVM_CAP_IRQCHIP_SPLIT)`` are used to enable in-kernel emulation of
9057 is present and the kernel has enabled in-kernel emulation of the local APIC.