Lines Matching +full:psci +full:- +full:0
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 -----------------
148 You probably want to use 0 as machine type.
178 address used by the VM. The IPA_Bits is encoded in bits[7-0] of the
188 0 Implies default size, 40bits (for backward compatibility)
196 ioctl() at run-time.
208 ----------------------------------------------------------
214 :Returns: 0 on success; -1 on error
228 __u32 indices[0];
250 -----------------------
256 :Returns: 0 if unsupported; 1 (or some other positive integer) if supported
261 Generally 0 means no and 1 means yes, but some extensions may report
269 --------------------------
282 the VCPU file descriptor can be mmap-ed, including:
284 - if KVM_CAP_COALESCED_MMIO is available, a page at
289 - if KVM_CAP_DIRTY_LOG_RING is available, a number of pages at
295 -------------------
301 :Returns: vcpu fd on success, -1 on error
304 The vcpu id is an integer in the range [0, max_vcpu_id).
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
363 since the last call to this ioctl. Bit 0 is the first page in the
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
401 obtained by mmap()ing the vcpu fd at offset 0, with the size given by
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 ------------------
538 :Returns: 0 on success, negative on failure.
556 0 on success,
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
656 struct kvm_msr_entry entries[0];
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
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...
728 struct kvm_cpuid_entry entries[0];
733 ------------------------
739 :Returns: 0 on success, -1 on error
744 their traditional behaviour) will cause KVM_RUN to return with -EINTR.
754 __u8 sigset[0];
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
868 interrupts require the level to be set to 1 and then back to 0.
870 On real hardware, interrupt pins can be active-low or active-high. This
872 means active (asserted), 0 means inactive (deasserted).
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
889 bits: | 31 ... 28 | 27 ... 24 | 23 ... 16 | 15 ... 0 |
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
921 __u32 level; /* 0 or 1 */
926 --------------------
932 :Returns: 0 on success, -1 on error
940 __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
951 --------------------
957 :Returns: 0 on success, -1 on error
965 __u32 chip_id; /* 0 = PIC1, 1 = PIC2, 2 = IOAPIC */
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
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.
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
1319 ----------------------
1325 :Returns: 0 on success, -1 on error
1334 -------------------------------
1340 :Returns: 0 on success, -1 on error
1353 #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0)
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
1470 A bitfield indicating future enhancements. Has to be 0 for now.
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
1608 Setting the address to 0 will result in resetting the address to its default
1609 (0xfffbc000).
1611 This ioctl is required on Intel-based hosts. This is needed on Intel hardware
1618 ------------------------
1624 :Returns: 0 on success, -1 on error
1628 is vcpu 0. This ioctl has to be called before vcpu creation,
1633 ------------------
1639 :Returns: 0 on success, -1 on error
1646 __u32 extra[0];
1653 ------------------
1659 :Returns: 0 on success, -1 on error
1666 __u32 extra[0];
1677 contents of CPUID leaf 0xD on the host.
1681 -----------------
1687 :Returns: 0 on success, -1 on error
1708 -----------------
1714 :Returns: 0 on success, -1 on error
1735 ----------------------------
1741 :Returns: 0 on success, -1 on error
1748 struct kvm_cpuid_entry2 entries[0];
1751 #define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
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 -----------------------
1830 :Returns: 0 on success, !0 on error
1851 #define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
1854 ------------------------
1860 :Returns: 0 on success, -1 on error
1866 - GSI routing does not apply to KVM_IRQ_LINE but only to KVM_IRQFD.
1873 struct kvm_irq_routing_entry entries[0];
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
2008 #define KVM_APIC_REG_SIZE 0x400
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
2039 #define KVM_APIC_REG_SIZE 0x400
2047 The format of the APIC ID register (bytes 32-35 of struct kvm_lapic_state's
2053 ------------------
2059 :Returns: 0 on success, !0 on error
2070 __u32 len; /* 0, 1, 2, 4, or 8 bytes */
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 ----------------------
2243 :Returns: 0 in case of success
2259 ------------------------
2265 :Returns: 0 in case of success
2281 ------------------------
2287 :Returns: 0 in case of success
2299 --------------------
2305 :Returns: 0 on success, negative value on failure
2522 MIPS KVM_REG_MIPS_CP0_MAAR(0..63) 64
2526 MIPS KVM_REG_MIPS_FPR_32(0..31) 32
2527 MIPS KVM_REG_MIPS_FPR_64(0..31) 64
2528 MIPS KVM_REG_MIPS_VEC_128(0..31) 128
2540 0x4020 0000 0010 <index into the kvm_regs struct:16>
2542 ARM 32-bit CP15 registers have the following id bit patterns::
2544 0x4020 0000 000F <zero:1> <crn:4> <crm:4> <opc1:4> <opc2:3>
2546 ARM 64-bit CP15 registers have the following id bit patterns::
2548 0x4030 0000 000F <zero:1> <zero:4> <crm:4> <opc1:4> <zero:3>
2552 0x4020 0000 0011 00 <csselr:8>
2554 ARM 32-bit VFP control registers have the following id bit patterns::
2556 0x4020 0000 0012 1 <regno:12>
2558 ARM 64-bit FP registers have the following id bit patterns::
2560 0x4030 0000 0012 0 <regno:12>
2562 ARM firmware pseudo-registers have the following bit pattern::
2564 0x4030 0000 0014 <regno:16>
2570 arm64 core/FP-SIMD registers have the following id bit patterns. Note
2575 0x60x0 0000 0010 <index into the kvm_regs struct:16>
2582 0x6030 0000 0010 0000 X0 64 regs.regs[0]
2583 0x6030 0000 0010 0002 X1 64 regs.regs[1]
2585 0x6030 0000 0010 003c X30 64 regs.regs[30]
2586 0x6030 0000 0010 003e SP 64 regs.sp
2587 0x6030 0000 0010 0040 PC 64 regs.pc
2588 0x6030 0000 0010 0042 PSTATE 64 regs.pstate
2589 0x6030 0000 0010 0044 SP_EL1 64 sp_el1
2590 0x6030 0000 0010 0046 ELR_EL1 64 elr_el1
2591 0x6030 0000 0010 0048 SPSR_EL1 64 spsr[KVM_SPSR_EL1] (alias SPSR_SVC)
2592 0x6030 0000 0010 004a SPSR_ABT 64 spsr[KVM_SPSR_ABT]
2593 0x6030 0000 0010 004c SPSR_UND 64 spsr[KVM_SPSR_UND]
2594 0x6030 0000 0010 004e SPSR_IRQ 64 spsr[KVM_SPSR_IRQ]
2595 0x6030 0000 0010 0050 SPSR_FIQ 64 spsr[KVM_SPSR_FIQ]
2596 0x6040 0000 0010 0054 V0 128 fp_regs.vregs[0] [1]_
2597 0x6040 0000 0010 0058 V1 128 fp_regs.vregs[1] [1]_
2599 0x6040 0000 0010 00d0 V31 128 fp_regs.vregs[31] [1]_
2600 0x6020 0000 0010 00d4 FPSR 32 fp_regs.fpsr
2601 0x6020 0000 0010 00d5 FPCR 32 fp_regs.fpcr
2604 .. [1] These encodings are not accepted for SVE-enabled vcpus. See
2607 The equivalent register content can be accessed via bits [127:0] of
2613 0x6020 0000 0011 00 <csselr:8>
2617 0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>
2629 arm64 firmware pseudo-registers have the following bit pattern::
2631 0x6030 0000 0014 <regno:16>
2635 0x6080 0000 0015 00 <n:5> <slice:5> Zn bits[2048*slice + 2047 : 2048*slice]
2636 0x6050 0000 0015 04 <n:4> <slice:5> Pn bits[256*slice + 255 : 256*slice]
2637 0x6050 0000 0015 060 <slice:5> FFR bits[256*slice + 255 : 256*slice]
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::
2694 0x6030 0000 0016 <regno:16>
2706 a -EBUSY to userspace.
2716 0x7030 0000 0000 <reg:16>
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)
2733 0x7030 0000 0001 01 <reg:8>
2737 0x7030 0000 0002 <reg:16>
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)
2754 0x7020 0000 0003 01 <0:3> <reg:5>
2759 0x7020 0000 0003 02 <0:3> <reg:5>
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
2767 0x8020 0000 01 <index into the kvm_riscv_config struct:24> (32bit Host)
2768 0x8030 0000 01 <index into the kvm_riscv_config struct:24> (64bit Host)
2770 Following are the RISC-V config registers:
2775 0x80x0 0000 0100 0000 isa ISA feature bitmap of Guest VCPU
2782 RISC-V core registers represent the general execution state of a Guest VCPU
2785 0x8020 0000 02 <index into the kvm_riscv_core struct:24> (32bit Host)
2786 0x8030 0000 02 <index into the kvm_riscv_core struct:24> (64bit Host)
2788 Following are the RISC-V core registers:
2793 0x80x0 0000 0200 0000 regs.pc Program counter
2794 0x80x0 0000 0200 0001 regs.ra Return address
2795 0x80x0 0000 0200 0002 regs.sp Stack pointer
2796 0x80x0 0000 0200 0003 regs.gp Global pointer
2797 0x80x0 0000 0200 0004 regs.tp Task pointer
2798 0x80x0 0000 0200 0005 regs.t0 Caller saved register 0
2799 0x80x0 0000 0200 0006 regs.t1 Caller saved register 1
2800 0x80x0 0000 0200 0007 regs.t2 Caller saved register 2
2801 0x80x0 0000 0200 0008 regs.s0 Callee saved register 0
2802 0x80x0 0000 0200 0009 regs.s1 Callee saved register 1
2803 0x80x0 0000 0200 000a regs.a0 Function argument (or return value) 0
2804 0x80x0 0000 0200 000b regs.a1 Function argument (or return value) 1
2805 0x80x0 0000 0200 000c regs.a2 Function argument 2
2806 0x80x0 0000 0200 000d regs.a3 Function argument 3
2807 0x80x0 0000 0200 000e regs.a4 Function argument 4
2808 0x80x0 0000 0200 000f regs.a5 Function argument 5
2809 0x80x0 0000 0200 0010 regs.a6 Function argument 6
2810 0x80x0 0000 0200 0011 regs.a7 Function argument 7
2811 0x80x0 0000 0200 0012 regs.s2 Callee saved register 2
2812 0x80x0 0000 0200 0013 regs.s3 Callee saved register 3
2813 0x80x0 0000 0200 0014 regs.s4 Callee saved register 4
2814 0x80x0 0000 0200 0015 regs.s5 Callee saved register 5
2815 0x80x0 0000 0200 0016 regs.s6 Callee saved register 6
2816 0x80x0 0000 0200 0017 regs.s7 Callee saved register 7
2817 0x80x0 0000 0200 0018 regs.s8 Callee saved register 8
2818 0x80x0 0000 0200 0019 regs.s9 Callee saved register 9
2819 0x80x0 0000 0200 001a regs.s10 Callee saved register 10
2820 0x80x0 0000 0200 001b regs.s11 Callee saved register 11
2821 0x80x0 0000 0200 001c regs.t3 Caller saved register 3
2822 0x80x0 0000 0200 001d regs.t4 Caller saved register 4
2823 0x80x0 0000 0200 001e regs.t5 Caller saved register 5
2824 0x80x0 0000 0200 001f regs.t6 Caller saved register 6
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
2831 0x8020 0000 03 <index into the kvm_riscv_csr struct:24> (32bit Host)
2832 0x8030 0000 03 <index into the kvm_riscv_csr struct:24> (64bit Host)
2834 Following are the RISC-V csr registers:
2839 0x80x0 0000 0300 0000 sstatus Supervisor status
2840 0x80x0 0000 0300 0001 sie Supervisor interrupt enable
2841 0x80x0 0000 0300 0002 stvec Supervisor trap vector base
2842 0x80x0 0000 0300 0003 sscratch Supervisor scratch register
2843 0x80x0 0000 0300 0004 sepc Supervisor exception program counter
2844 0x80x0 0000 0300 0005 scause Supervisor trap cause
2845 0x80x0 0000 0300 0006 stval Supervisor bad address or instruction
2846 0x80x0 0000 0300 0007 sip Supervisor interrupt pending
2847 0x80x0 0000 0300 0008 satp Supervisor address translation and protection
2850 RISC-V timer registers represent the timer state of a Guest VCPU and it has
2853 0x8030 0000 04 <index into the kvm_riscv_timer struct:24>
2855 Following are the RISC-V timer registers:
2860 0x8030 0000 0400 0000 frequency Time base frequency (read-only)
2861 0x8030 0000 0400 0001 time Time value visible to Guest
2862 0x8030 0000 0400 0002 compare Time compare programmed by Guest
2863 0x8030 0000 0400 0003 state Time compare state (1 = ON or 0 = OFF)
2866 RISC-V F-extension registers represent the single precision floating point
2869 0x8020 0000 05 <index into the __riscv_f_ext_state struct:24>
2871 Following are the RISC-V F-extension registers:
2876 0x8020 0000 0500 0000 f[0] Floating point register 0
2878 0x8020 0000 0500 001f f[31] Floating point register 31
2879 0x8020 0000 0500 0020 fcsr Floating point control and status register
2882 RISC-V D-extension registers represent the double precision floating point
2885 0x8020 0000 06 <index into the __riscv_d_ext_state struct:24> (fcsr)
2886 0x8030 0000 06 <index into the __riscv_d_ext_state struct:24> (non-fcsr)
2888 Following are the RISC-V D-extension registers:
2893 0x8030 0000 0600 0000 f[0] Floating point register 0
2895 0x8030 0000 0600 001f f[31] Floating point register 31
2896 0x8020 0000 0600 0020 fcsr Floating point control and status register
2905 0x9030 0000 0001 00 <reg:5> <sel:3> (64-bit)
2910 0x9030 0000 0002 <reg:16>
2914 --------------------
2920 :Returns: 0 on success, negative value on failure
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
3060 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
3062 #define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
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
3128 __u32 page_shift; /* Base page shift of segment (or 0) */
3133 An entry with a "page_shift" of 0 is unused. Because the array is
3145 8 entries sorted by increasing sizes and an entry with a "0" shift
3149 __u32 page_shift; /* Page shift (or 0) */
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
3312 #define KVM_GET_HTAB_BOLTED_ONLY ((__u64)0x1)
3313 #define KVM_GET_HTAB_WRITE ((__u64)0x2)
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
3590 __u64 reg[0];
3598 -----------------------------------------
3604 :Returns: 0 on success, -1 on error
3631 bits: | 63 ... 32 | 31 ... 16 | 15 ... 0 |
3632 field: | 0x00000000 | device id | addr type id |
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
3661 handled by the kernel. If the token value is 0, then any token
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
3741 struct kvm_cpuid_entry2 entries[0];
3748 #define KVM_CPUID_FLAG_SIGNIFCANT_INDEX BIT(0)
3769 the variable-size array 'entries'. If the number of entries is too low
3803 --------------------
3809 :Returns: = 0 on success,
3810 < 0 on generic error (e.g. -EFAULT or -ENOMEM),
3839 be 0). The maximum value for "size" can be obtained by checking the
3849 be set to 0.
3866 range is 0..15.
3868 Logical accesses are permitted for non-protected guests only.
3886 translation-exception identifier (TEID) indicates suppression.
3890 prohibited given the access key designated by "key"; the valid range is 0..15.
3892 is > 0.
3909 Absolute accesses are permitted for non-protected guests only.
3948 -----------------------
3954 :Returns: 0 on success, KVM_S390_GET_SKEYS_NONE if guest is not using storage
3974 will cause the ioctl to return -EINVAL.
3980 -----------------------
3986 :Returns: 0 on success, negative value on error
3998 will cause the ioctl to return -EINVAL.
4005 the ioctl will return -EINVAL.
4008 -----------------
4014 :Returns: 0 on success, -1 on error
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
4095 the kernel never checked for flags == 0 and QEMU never pre-zeroed flags and
4099 If -ENOBUFS is returned the buffer provided was too small and userspace
4103 ---------------------------
4109 :Returns: 0 on success,
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
4136 len must be a multiple of sizeof(struct kvm_s390_irq). It must be > 0
4138 which is the maximum number of possibly pending cpu-local interrupts.
4141 ------------
4147 :Returns: 0 on success, -1 on error
4152 ----------------------------
4158 :Returns: 0 on success, < 0 on error
4163 #define KVM_MSR_FILTER_READ (1 << 0)
4168 __u8 *bitmap; /* a 1 bit allows the operations in flags, 0 denies */
4173 #define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0)
4174 #define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0)
4183 Filter read accesses to MSRs using the given bitmap. A 0 in the bitmap
4190 Filter write accesses to MSRs using the given bitmap. A 0 in the bitmap
4229 Calling this ioctl with an empty set of ranges (all nmsrs == 0) disables MSR
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 -------------------------
4304 :Returns: 0 on success,
4305 -EFAULT if struct kvm_reinject_control cannot be read,
4306 -ENXIO if KVM_CREATE_PIT or KVM_CREATE_PIT2 didn't succeed earlier.
4321 pit_reinject = 0 (!reinject mode) is recommended, unless running an old
4325 ------------------------------
4331 :Returns: 0 on success,
4332 -EFAULT if struct kvm_ppc_mmuv3_cfg cannot be read,
4333 -EINVAL if the configuration is invalid
4359 ---------------------------
4365 :Returns: 0 on success,
4366 -EFAULT if struct kvm_ppc_rmmu_info cannot be written,
4367 -EINVAL if no useful information can be returned
4389 will have 0 in the page_shift field.
4396 --------------------------------
4402 :Returns: 0 on successful completion,
4403 >0 if a new HPT is being prepared, the value is an estimated
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,
4422 If called with shift > 0 when there is no pending HPT for the guest,
4433 * If preparation of the pending HPT is already complete, return 0
4439 If called with shift == 0, discards any currently pending HPT and
4440 returns 0 (i.e. cancels any in-progress preparation).
4443 flags will result in an -EINVAL.
4446 it returns <= 0. The first call will initiate preparation, subsequent
4450 -------------------------------
4456 :Returns: 0 on successful completion,
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
4480 returned 0 with the same parameters. In other cases
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 -----------------------
4514 :Returns: 0 on success,
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 ---------------------
4533 :Returns: 0 on success,
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 ----------------------------
4567 :Returns: 0 on success, a negative value on error
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
4654 still remaining, or 0 if KVM_S390_CMMA_PEEK is set and migration mode is
4662 ----------------------------
4668 :Returns: 0 on success, a negative value on error
4693 flags is not used and must be 0.
4701 This ioctl can fail with -ENOMEM if not enough memory can be allocated to
4702 complete the task, with -ENXIO if CMMA is not enabled, with -EINVAL if
4704 if the flags field was not 0, with -EFAULT if the userspace address is
4710 --------------------------
4716 :Returns: 0 on successful completion,
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
4741 (ori 30,30,0 or mtspr SPRN_TRIG2,rN), whether the L1 data cache is set
4744 whether a speculation barrier instruction (ori 31,31,0) is provided.
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.
4833 #define KVM_HYPERV_CONN_ID_MASK 0x00ffffff
4837 #define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0)
4839 :Returns: 0 on success,
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
4876 struct kvm_vmx_nested_state_data vmx[0];
4877 struct kvm_svm_nested_state_data svm[0];
4881 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
4882 #define KVM_STATE_NESTED_RUN_PENDING 0x00000002
4883 #define KVM_STATE_NESTED_EVMCS 0x00000004
4885 #define KVM_STATE_NESTED_FORMAT_VMX 0
4888 #define KVM_STATE_NESTED_VMX_VMCS_SIZE 0x1000
4890 #define KVM_STATE_NESTED_VMX_SMM_GUEST_MODE 0x00000001
4891 #define KVM_STATE_NESTED_VMX_SMM_VMXON 0x00000002
4893 #define KVM_STATE_VMX_PREEMPTION_TIMER_DEADLINE 0x00000001
4919 --------------------------
4925 :Returns: 0 on success, -1 on error
4931 -------------------------------------
4938 :Returns: 0 on success, < 0 on error
4960 ------------------------------------
4966 :Returns: 0 on success, -1 on error
4983 field. Bit 0 of the bitmap corresponds to page "first_page" in the
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
5015 struct kvm_cpuid_entry2 entries[0];
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
5037 leaves (0x40000000, 0x40000001).
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
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
5126 EFAULT args[0] cannot be accessed
5127 EINVAL args[0] contains invalid data in the filter or filter events
5140 __u64 events[0];
5153 ``0``
5174 ---- -----------
5175 7:0 event select (low bits)
5203 When setting a new pmu event filter, -EINVAL will be returned if any of the
5209 #define KVM_PMU_EVENT_ALLOW 0
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 ---------------------
5237 :Returns: 0 on successful completion,
5255 ---------------------------
5261 :Returns: 0
5267 ----------------------------
5273 :Returns: 0
5280 --------------------------
5286 :Returns: 0
5294 -------------------------
5300 :Returns: 0 on success, < 0 on error
5309 __u32 flags; /* flags for future extensions. Must be 0 for now */
5317 code. If KVM changes `rc`, its value will always be greater than 0
5318 hence setting it to 0 before issuing a PV command is advised to be
5339 All registered VCPUs are converted back to non-protected ones. If a
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 --------------------------
5503 :Returns: 0 on success, < 0 on error
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 --------------------------
5626 :Returns: 0 on success, < 0 on error
5633 ---------------------------
5639 :Returns: 0 on success, < 0 on error
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 ---------------------------
5753 :Returns: 0 on success, < 0 on error
5762 ---------------------------
5768 :Returns: number of bytes copied, < 0 on error (-EINVAL for incorrect
5769 arguments, -EFAULT if memory cannot be accessed).
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 ----------------------
5852 :Returns: statistics file descriptor on success, < 0 on error
5865 +-------------+
5867 +-------------+
5869 +-------------+
5871 +-------------+
5873 +-------------+
5875 Apart from the header starting at offset 0, please be aware that it is
5898 The ``flags`` field is not used at the moment. It is always read as 0.
5901 (including trailing '\0') which is contained in the "id string" block and
5919 trailing ``'\0'``, is indicated by the ``name_size`` field in the header.
5926 #define KVM_STATS_TYPE_SHIFT 0
5927 #define KVM_STATS_TYPE_MASK (0xF << KVM_STATS_TYPE_SHIFT)
5928 #define KVM_STATS_TYPE_CUMULATIVE (0x0 << KVM_STATS_TYPE_SHIFT)
5929 #define KVM_STATS_TYPE_INSTANT (0x1 << KVM_STATS_TYPE_SHIFT)
5930 #define KVM_STATS_TYPE_PEAK (0x2 << KVM_STATS_TYPE_SHIFT)
5931 #define KVM_STATS_TYPE_LINEAR_HIST (0x3 << KVM_STATS_TYPE_SHIFT)
5932 #define KVM_STATS_TYPE_LOG_HIST (0x4 << KVM_STATS_TYPE_SHIFT)
5936 #define KVM_STATS_UNIT_MASK (0xF << KVM_STATS_UNIT_SHIFT)
5937 #define KVM_STATS_UNIT_NONE (0x0 << KVM_STATS_UNIT_SHIFT)
5938 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
5939 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
5940 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
5941 #define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
5945 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
5946 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
5947 #define KVM_STATS_BASE_POW2 (0x1 << KVM_STATS_BASE_SHIFT)
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:
6009 It indicates that the statistic will always be either 0 or 1. Boolean
6010 statistics of "peak" type will never go back from 1 to 0. Boolean
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``.
6043 the trailing ``'\0'``, is indicated by ``name_size`` in the header.
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
6062 __u32 extra[0];
6073 of CPUID leaf 0xD on the host.
6076 -----------------------------
6082 :Returns: 0 on success, < 0 on error
6096 -----------------------------
6102 :Returns: 0 on success, < 0 on error
6105 for vcpus. It re-uses the kvm_s390_pv_dmp struct and hence also shares
6121 ----------------------
6127 :Returns: 0 on success, <0 on error
6129 Used to manage hardware-assisted virtualization features for zPCI devices.
6165 set to 0s by userspace.
6168 --------------------------------
6174 :Returns: 0 on success, < 0 on error
6176 This capability indicates that userspace is able to apply a single VM-wide
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 -------------------------------------------
6214 :Returns: 0 on success, < 0 on error
6219 #define KVM_ARM_FEATURE_ID_RANGE 0
6240 The ``reserved[13]`` array is reserved for future use and should be 0, or
6243 KVM_ARM_FEATURE_ID_RANGE (0)
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.
6297 is '0' for all gfns. Userspace can control whether memory is shared/private by
6303 Returns -EINVAL if the VM has the KVM_VM_S390_UCONTROL flag set.
6304 Returns -EINVAL if called on a protected VM.
6307 -------------------------------
6313 :Returns: 0 on success, <0 on error
6340 The "flags" field is reserved for future extensions and must be '0'.
6343 ----------------------------
6349 :Returns: A file descriptor on success, <0 on error
6386 ---------------------------
6392 :Returns: 0 if at least one page is processed, < 0 on error
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.
6433 remaining range. If `size` > 0 on return, the caller can just issue
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.
6484 When KVM_RUN has returned successfully (return value 0), this informs
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
6510 #define KVM_RUN_X86_SMM (1 << 0)
6517 #define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
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
6572 #define KVM_EXIT_IO_IN 0
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
6661 conduit to initiate the SMCCC call. If this bit is 0 then the guest
6664 - ``KVM_HYPERCALL_EXIT_16BIT``: Indicates that the guest used a 16bit
6665 instruction to initiate the SMCCC call. If this bit is 0 then the
6667 bit set to 0.
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
6826 HVC instruction based PSCI call from the vcpu.
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.
6843 The guest physical address of the guest's GHCB is stored in `data[0]`.
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
6855 the guest issued a SYSTEM_RESET2 call according to v1.1 of the PSCI
6858 - for RISC-V, data[0] is set to the value of the second argument of the
6862 field is now aliased to `data[0]`. Userspace can assume that it is only
6863 written if ndata is greater than 0.
6866 --------------
6869 KVM_CAP_ARM_SYSTEM_SUSPEND VM capability. If a guest invokes the PSCI
6873 It is the sole responsibility of userspace to implement the PSCI
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
6884 state according to the parameters passed to the PSCI function when
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 */
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
7116 #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
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 ------------------
7232 :Parameters: args[0] is the address of a struct kvm_config_tlb
7233 :Returns: 0 on success; -1 on error
7246 addresses of mmu-type-specific data structures. The "array_len" field is an
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 -------------------
7298 :Parameters: args[0] defines whether the proxy facility is active
7299 :Returns: 0 on success; -1 on error
7304 When enabled (args[0] != 0), every time the guest gets an external interrupt
7308 When disabled (args[0] == 0), behavior is as if this facility is unsupported.
7313 --------------------
7316 :Parameters: args[0] is the MPIC device fd;
7319 This capability connects the vcpu to an in-kernel MPIC device.
7322 --------------------
7326 :Parameters: args[0] is the XICS device fd;
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 -------------------------
7419 :Parameters: args[0] is the XIVE device fd;
7422 This capability connects the vcpu to an in-kernel XIVE device.
7447 ----------------------------
7450 :Parameters: args[0] is the sPAPR hcall number;
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 ---------------------------------
7495 :Returns: 0 on success, negative value on error
7499 return -EINVAL if the machine does not support vectors.
7502 --------------------------
7507 This capability allows post-handlers for the STSI instruction. After
7512 vcpu->run::
7523 @addr - guest address of STSI SYSIB
7524 @fc - function code
7525 @sel1 - selector 1
7526 @sel2 - selector 2
7527 @ar - access register number
7529 KVM handlers should exit to userspace with rc = -EREMOTE.
7532 -------------------------
7535 :Parameters: args[0] - number of routes reserved for userspace IOAPICs
7536 :Returns: 0 on success, -1 on error
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
7569 Valid feature flags in args[0] are::
7571 #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
7576 allowing the use of 32-bit APIC IDs. See KVM_CAP_X2APIC_API in their
7580 in logical mode or with more than 255 VCPUs. Otherwise, KVM treats 0xff
7583 where 0xff represents CPUs 0-7 in cluster 0.
7586 ----------------------------
7591 With this capability enabled, all illegal instructions 0x0000 (2 bytes) will
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 --------------------
7630 be 0. A successful call to enable this capability will result in
7638 ----------------------
7647 branch to guests' 0x200 interrupt vector.
7650 ------------------------------
7653 :Parameters: args[0] defines which exits are disabled
7654 :Returns: 0 on success, -EINVAL when args[0] contains invalid exits
7656 Valid bits in args[0] are::
7658 #define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
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 ------------------------------
7694 :Parameters: args[0] whether feature should be enabled or not
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 ------------------------------
7719 :Parameters: args[0] whether feature should be enabled or not
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 --------------------------------------
7745 :Parameters: args[0] whether feature should be enabled or not
7749 #define KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE (1 << 0)
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 ----------------------
7805 :Parameters: args[0] is the maximum poll time in nanoseconds
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 -------------------------------
7821 :Parameters: args[0] contains the mask of KVM_MSR_EXIT_REASON_* events to report
7822 :Returns: 0 on success; -1 on error
7833 args[0] and would trigger a #GP inside the guest will instead trigger
7849 -------------------------------
7853 :Parameters: args[0] defines the policy used when bus locks detected in guest
7854 :Returns: 0 on success, -EINVAL when args[0] contains invalid bits
7856 Valid bits in args[0] are::
7858 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
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 -------------------------------------
7903 Parameters: args[0] is the fd of the source vm
7904 Returns: 0 on success; ENOTTY on error
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 --------------------------
7919 :Parameters: args[0] is a file handle of a SGX attribute file in securityfs
7920 :Returns: 0 on success, -EINVAL if the file handle is invalid or if a requested
7924 more privileged enclave attributes. args[0] must hold a file handle to a valid
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 --------------------------------------
7959 :Parameters: args[0] whether the feature should be enabled or not
7974 --------------------
7991 ``MAP_ANONYMOUS`` or with a RAM-based file mapping (``tmpfs``, ``memfd``),
7993 -EINVAL return.
7999 -------------------------------------
8003 :Parameters: args[0] is the fd of the source vm
8004 :Returns: 0 on success
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
8044 The valid bits in cap.args[0] are:
8048 LINT0 register is 0x700 (APIC_MODE_EXTINT).
8050 is 0x10000 (APIC_LVT_MASKED).
8066 KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8068 to port 0x7e. When this quirk is disabled,
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 ------------------------------
8138 :Parameters: args[0] is the value of notify window as well as some flags
8139 :Returns: 0 on success, -EINVAL if args[0] contains invalid flags or notify
8142 Bits 63:32 of args[0] are used for notify window.
8143 Bits 31:0 of args[0] are for some flags. Valid bits are::
8145 #define KVM_X86_NOTIFY_VMEXIT_ENABLED (1 << 0)
8149 in per-VM scope during VM creation. Notify VM exit is disabled by default.
8150 When userspace sets KVM_X86_NOTIFY_VMEXIT_ENABLED bit in args[0], VMM will
8152 a VM exit if no event window occurs in VM non-root mode for a specified of
8155 If KVM_X86_NOTIFY_VMEXIT_USER is set in args[0], upon notify VM exits happen,
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 -----------------------------------
8188 :Parameters: args[0] is the desired APIC bus clock rate, in nanoseconds
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
8197 Note: Userspace is responsible for correctly configuring CPUID 0x15, a.k.a. the
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 -------------------
8288 0 The trap & emulate implementation is in use to run guest code in user
8297 -------------------
8304 assisted virtualisation is also available. KVM_VM_MIPS_TE (0) must be passed
8311 ----------------------
8324 0 MIPS32 or microMIPS32.
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.
8366 number larger than 0 indicating the version of this capability is implemented
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 -------------------------
8546 The information is associated with the DIAGNOSE 0x318 instruction, which sets
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 -------------------------------------
8588 (0x40000001). Otherwise, a guest may use the paravirtual features
8592 ----------------------------------------------------------
8595 :Parameters: args[0] - size of the dirty log ring
8612 #define KVM_DIRTY_GFN_F_DIRTY BIT(0)
8614 #define KVM_DIRTY_GFN_F_MASK 0x3
8635 00 -----------> 01 -------------> 1X -------+
8638 +------------------------------------------+
8644 ``01b`` to ``1Xb`` (bit 0 will be ignored by KVM, but bit 1 must be set
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 --------------------
8723 #define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0)
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 ---------------------------
8850 :Parameters: arg[0] is bitmask of PMU virtualization capabilities.
8851 :Returns: 0 on success, -EINVAL when arg[0] contains invalid bits
8864 should adjust CPUID leaf 0xA to reflect that the PMU is disabled.
8867 -------------------------------
8877 --------------------------------
8890 -------------------------------------
8895 :Parameters: arg[0] must be 0.
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 ------------------------------
8916 PTF instruction with function codes 0 or 1 and the STSI(15,1,x)
8928 When getting the Modified Change Topology Report value, the attr->addr
8932 ---------------------------------------
8937 :Parameters: arg[0] is the new split chunk size.
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
8956 0, to disable the eager page splitting.
8959 ---------------------
8965 This capability returns a bitmap of support VM types. The 1-setting of bit @n
8968 #define KVM_X86_DEFAULT_VM 0
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.
9016 0x0b and 0x1f for Intel systems, 0x8000001e for AMD systems. Different
9022 the APIC ID is found in EDX for all subleaves of 0x0b and 0x1f, and in EAX
9023 for 0x8000001e; the latter also encodes the core id and node id in bits
9024 7:0 of EBX and ECX respectively.