Skip to content

Commit dca01b0

Browse files
committed
Documentation: kvm: fix formatting of the quirks table
A recently added quirk does not fit in the left column of the table, so it all has to be reformatted and realigned. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent 6b1ca26 commit dca01b0

1 file changed

Lines changed: 115 additions & 115 deletions

File tree

Documentation/virt/kvm/api.rst

Lines changed: 115 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -8435,123 +8435,123 @@ KVM_CHECK_EXTENSION.
84358435

84368436
The 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

85478547
KVM_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

85568556
7.32 KVM_CAP_MAX_VCPU_ID
85578557
------------------------

0 commit comments

Comments
 (0)