@@ -8435,123 +8435,123 @@ KVM_CHECK_EXTENSION.
84358435
84368436The valid bits in cap.args[0] are:
84378437
8438- =================================== ============================================
8439- KVM_X86_QUIRK_LINT0_REENABLED By default, the reset value for the LVT
8440- LINT0 register is 0x700 (APIC_MODE_EXTINT).
8441- When this quirk is disabled, the reset value
8442- is 0x10000 (APIC_LVT_MASKED).
8443-
8444- KVM_X86_QUIRK_CD_NW_CLEARED By default, KVM clears CR0.CD and CR0.NW on
8445- AMD CPUs to workaround buggy guest firmware
8446- that runs in perpetuity with CR0.CD, i.e.
8447- with caches in "no fill" mode.
8448-
8449- When this quirk is disabled, KVM does not
8450- change the value of CR0.CD and CR0.NW.
8451-
8452- KVM_X86_QUIRK_LAPIC_MMIO_HOLE By default, the MMIO LAPIC interface is
8453- available even when configured for x2APIC
8454- mode. When this quirk is disabled, KVM
8455- disables the MMIO LAPIC interface if the
8456- LAPIC is in x2APIC mode.
8457-
8458- KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8459- exiting to userspace for an OUT instruction
8460- to port 0x7e. When this quirk is disabled,
8461- KVM does not pre-increment %rip before
8462- exiting to userspace.
8463-
8464- KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT When this quirk is disabled, KVM sets
8465- CPUID.01H:ECX[bit 3] (MONITOR/MWAIT) if
8466- IA32_MISC_ENABLE[bit 18] (MWAIT) is set.
8467- Additionally, when this quirk is disabled,
8468- KVM clears CPUID.01H:ECX[bit 3] if
8469- IA32_MISC_ENABLE[bit 18] is cleared.
8470-
8471- KVM_X86_QUIRK_FIX_HYPERCALL_INSN By default, KVM rewrites guest
8472- VMMCALL/VMCALL instructions to match the
8473- vendor's hypercall instruction for the
8474- system. When this quirk is disabled, KVM
8475- will no longer rewrite invalid guest
8476- hypercall instructions. Executing the
8477- incorrect hypercall instruction will
8478- generate a #UD within the guest.
8479-
8480- KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS By default, KVM emulates MONITOR/MWAIT (if
8481- they are intercepted) as NOPs regardless of
8482- whether or not MONITOR/MWAIT are supported
8483- according to guest CPUID. When this quirk
8484- is disabled and KVM_X86_DISABLE_EXITS_MWAIT
8485- is not set (MONITOR/MWAIT are intercepted),
8486- KVM will inject a #UD on MONITOR/MWAIT if
8487- they're unsupported per guest CPUID. Note,
8488- KVM will modify MONITOR/MWAIT support in
8489- guest CPUID on writes to MISC_ENABLE if
8490- KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT is
8491- disabled.
8492-
8493- KVM_X86_QUIRK_SLOT_ZAP_ALL By default, for KVM_X86_DEFAULT_VM VMs, KVM
8494- invalidates all SPTEs in all memslots and
8495- address spaces when a memslot is deleted or
8496- moved. When this quirk is disabled (or the
8497- VM type isn't KVM_X86_DEFAULT_VM), KVM only
8498- ensures the backing memory of the deleted
8499- or moved memslot isn't reachable, i.e KVM
8500- _may_ invalidate only SPTEs related to the
8501- memslot.
8502-
8503- KVM_X86_QUIRK_STUFF_FEATURE_MSRS By default, at vCPU creation, KVM sets the
8504- vCPU's MSR_IA32_PERF_CAPABILITIES (0x345),
8505- MSR_IA32_ARCH_CAPABILITIES (0x10a),
8506- MSR_PLATFORM_INFO (0xce), and all VMX MSRs
8507- (0x480..0x492) to the maximal capabilities
8508- supported by KVM. KVM also sets
8509- MSR_IA32_UCODE_REV (0x8b) to an arbitrary
8510- value (which is different for Intel vs.
8511- AMD). Lastly, when guest CPUID is set (by
8512- userspace), KVM modifies select VMX MSR
8513- fields to force consistency between guest
8514- CPUID and L2's effective ISA. When this
8515- quirk is disabled, KVM zeroes the vCPU's MSR
8516- values (with two exceptions, see below),
8517- i.e. treats the feature MSRs like CPUID
8518- leaves and gives userspace full control of
8519- the vCPU model definition. This quirk does
8520- not affect VMX MSRs CR0/CR4_FIXED1 (0x487
8521- and 0x489), as KVM does now allow them to
8522- be set by userspace (KVM sets them based on
8523- guest CPUID, for safety purposes).
8524-
8525- KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores
8526- guest PAT and forces the effective memory
8527- type to WB in EPT. The quirk is not available
8528- on Intel platforms which are incapable of
8529- safely honoring guest PAT (i.e., without CPU
8530- self-snoop, KVM always ignores guest PAT and
8531- forces effective memory type to WB). It is
8532- also ignored on AMD platforms or, on Intel,
8533- when a VM has non-coherent DMA devices
8534- assigned; KVM always honors guest PAT in
8535- such case. The quirk is needed to avoid
8536- slowdowns on certain Intel Xeon platforms
8537- (e.g. ICX, SPR) where self-snoop feature is
8538- supported but UC is slow enough to cause
8539- issues with some older guests that use
8540- UC instead of WC to map the video RAM.
8541- Userspace can disable the quirk to honor
8542- guest PAT if it knows that there is no such
8543- guest software, for example if it does not
8544- expose a bochs graphics device (which is
8545- known to have had a buggy driver).
8438+ ======================================== ==== ============================================
8439+ KVM_X86_QUIRK_LINT0_REENABLED By default, the reset value for the LVT
8440+ LINT0 register is 0x700 (APIC_MODE_EXTINT).
8441+ When this quirk is disabled, the reset value
8442+ is 0x10000 (APIC_LVT_MASKED).
8443+
8444+ KVM_X86_QUIRK_CD_NW_CLEARED By default, KVM clears CR0.CD and CR0.NW on
8445+ AMD CPUs to workaround buggy guest firmware
8446+ that runs in perpetuity with CR0.CD, i.e.
8447+ with caches in "no fill" mode.
8448+
8449+ When this quirk is disabled, KVM does not
8450+ change the value of CR0.CD and CR0.NW.
8451+
8452+ KVM_X86_QUIRK_LAPIC_MMIO_HOLE By default, the MMIO LAPIC interface is
8453+ available even when configured for x2APIC
8454+ mode. When this quirk is disabled, KVM
8455+ disables the MMIO LAPIC interface if the
8456+ LAPIC is in x2APIC mode.
8457+
8458+ KVM_X86_QUIRK_OUT_7E_INC_RIP By default, KVM pre-increments %rip before
8459+ exiting to userspace for an OUT instruction
8460+ to port 0x7e. When this quirk is disabled,
8461+ KVM does not pre-increment %rip before
8462+ exiting to userspace.
8463+
8464+ KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT When this quirk is disabled, KVM sets
8465+ CPUID.01H:ECX[bit 3] (MONITOR/MWAIT) if
8466+ IA32_MISC_ENABLE[bit 18] (MWAIT) is set.
8467+ Additionally, when this quirk is disabled,
8468+ KVM clears CPUID.01H:ECX[bit 3] if
8469+ IA32_MISC_ENABLE[bit 18] is cleared.
8470+
8471+ KVM_X86_QUIRK_FIX_HYPERCALL_INSN By default, KVM rewrites guest
8472+ VMMCALL/VMCALL instructions to match the
8473+ vendor's hypercall instruction for the
8474+ system. When this quirk is disabled, KVM
8475+ will no longer rewrite invalid guest
8476+ hypercall instructions. Executing the
8477+ incorrect hypercall instruction will
8478+ generate a #UD within the guest.
8479+
8480+ KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS By default, KVM emulates MONITOR/MWAIT (if
8481+ they are intercepted) as NOPs regardless of
8482+ whether or not MONITOR/MWAIT are supported
8483+ according to guest CPUID. When this quirk
8484+ is disabled and KVM_X86_DISABLE_EXITS_MWAIT
8485+ is not set (MONITOR/MWAIT are intercepted),
8486+ KVM will inject a #UD on MONITOR/MWAIT if
8487+ they're unsupported per guest CPUID. Note,
8488+ KVM will modify MONITOR/MWAIT support in
8489+ guest CPUID on writes to MISC_ENABLE if
8490+ KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT is
8491+ disabled.
8492+
8493+ KVM_X86_QUIRK_SLOT_ZAP_ALL By default, for KVM_X86_DEFAULT_VM VMs, KVM
8494+ invalidates all SPTEs in all memslots and
8495+ address spaces when a memslot is deleted or
8496+ moved. When this quirk is disabled (or the
8497+ VM type isn't KVM_X86_DEFAULT_VM), KVM only
8498+ ensures the backing memory of the deleted
8499+ or moved memslot isn't reachable, i.e KVM
8500+ _may_ invalidate only SPTEs related to the
8501+ memslot.
8502+
8503+ KVM_X86_QUIRK_STUFF_FEATURE_MSRS By default, at vCPU creation, KVM sets the
8504+ vCPU's MSR_IA32_PERF_CAPABILITIES (0x345),
8505+ MSR_IA32_ARCH_CAPABILITIES (0x10a),
8506+ MSR_PLATFORM_INFO (0xce), and all VMX MSRs
8507+ (0x480..0x492) to the maximal capabilities
8508+ supported by KVM. KVM also sets
8509+ MSR_IA32_UCODE_REV (0x8b) to an arbitrary
8510+ value (which is different for Intel vs.
8511+ AMD). Lastly, when guest CPUID is set (by
8512+ userspace), KVM modifies select VMX MSR
8513+ fields to force consistency between guest
8514+ CPUID and L2's effective ISA. When this
8515+ quirk is disabled, KVM zeroes the vCPU's MSR
8516+ values (with two exceptions, see below),
8517+ i.e. treats the feature MSRs like CPUID
8518+ leaves and gives userspace full control of
8519+ the vCPU model definition. This quirk does
8520+ not affect VMX MSRs CR0/CR4_FIXED1 (0x487
8521+ and 0x489), as KVM does now allow them to
8522+ be set by userspace (KVM sets them based on
8523+ guest CPUID, for safety purposes).
8524+
8525+ KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores
8526+ guest PAT and forces the effective memory
8527+ type to WB in EPT. The quirk is not available
8528+ on Intel platforms which are incapable of
8529+ safely honoring guest PAT (i.e., without CPU
8530+ self-snoop, KVM always ignores guest PAT and
8531+ forces effective memory type to WB). It is
8532+ also ignored on AMD platforms or, on Intel,
8533+ when a VM has non-coherent DMA devices
8534+ assigned; KVM always honors guest PAT in
8535+ such case. The quirk is needed to avoid
8536+ slowdowns on certain Intel Xeon platforms
8537+ (e.g. ICX, SPR) where self-snoop feature is
8538+ supported but UC is slow enough to cause
8539+ issues with some older guests that use
8540+ UC instead of WC to map the video RAM.
8541+ Userspace can disable the quirk to honor
8542+ guest PAT if it knows that there is no such
8543+ guest software, for example if it does not
8544+ expose a bochs graphics device (which is
8545+ known to have had a buggy driver).
85468546
85478547KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM By default, KVM relaxes the consistency
8548- check for GUEST_IA32_DEBUGCTL in vmcs12
8549- to allow FREEZE_IN_SMM to be set. When
8550- this quirk is disabled, KVM requires this
8551- bit to be cleared. Note that the vmcs02
8552- bit is still completely controlled by the
8553- host, regardless of the quirk setting.
8554- =================================== ============================================
8548+ check for GUEST_IA32_DEBUGCTL in vmcs12
8549+ to allow FREEZE_IN_SMM to be set. When
8550+ this quirk is disabled, KVM requires this
8551+ bit to be cleared. Note that the vmcs02
8552+ bit is still completely controlled by the
8553+ host, regardless of the quirk setting.
8554+ ======================================== ==== ============================================
85558555
855685567.32 KVM_CAP_MAX_VCPU_ID
85578557------------------------
0 commit comments