mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
Merge tag 'kvm-x86-misc-6.17' of https://github.com/kvm-x86/linux into HEAD
KVM x86 misc changes for 6.17 - Prevert the host's DEBUGCTL.FREEZE_IN_SMM (Intel only) when running the guest. Failure to honor FREEZE_IN_SMM can bleed host state into the guest. - Explicitly check vmcs12.GUEST_DEBUGCTL on nested VM-Enter (Intel only) to prevent L1 from running L2 with features that KVM doesn't support, e.g. BTF. - Intercept SPEC_CTRL on AMD if the MSR shouldn't exist according to the vCPU's CPUID model. - Rework the MSR interception code so that the SVM and VMX APIs are more or less identical. - Recalculate all MSR intercepts from the "source" on MSR filter changes, and drop the dedicated "shadow" bitmaps (and their awful "max" size defines). - WARN and reject loading kvm-amd.ko instead of panicking the kernel if the nested SVM MSRPM offsets tracker can't handle an MSR. - Advertise support for LKGS (Load Kernel GS base), a new instruction that's loosely related to FRED, but is supported and enumerated independently. - Fix a user-triggerable WARN that syzkaller found by stuffing INIT_RECEIVED, a.k.a. WFS, and then putting the vCPU into VMX Root Mode (post-VMXON). Use the same approach KVM uses for dealing with "impossible" emulation when running a !URG guest, and simply wait until KVM_RUN to detect that the vCPU has architecturally impossible state. - Add KVM_X86_DISABLE_EXITS_APERFMPERF to allow disabling interception of APERF/MPERF reads, so that a "properly" configured VM can "virtualize" APERF/MPERF (with many caveats). - Reject KVM_SET_TSC_KHZ if vCPUs have been created, as changing the "default" frequency is unsupported for VMs with a "secure" TSC, and there's no known use case for changing the default frequency for other VM types.
This commit is contained in:
@@ -2006,7 +2006,7 @@ frequency is KHz.
|
||||
|
||||
If the KVM_CAP_VM_TSC_CONTROL capability is advertised, this can also
|
||||
be used as a vm ioctl to set the initial tsc frequency of subsequently
|
||||
created vCPUs.
|
||||
created vCPUs. Note, the vm ioctl is only allowed prior to creating vCPUs.
|
||||
|
||||
For TSC protected Confidential Computing (CoCo) VMs where TSC frequency
|
||||
is configured once at VM scope and remains unchanged during VM's
|
||||
@@ -7851,6 +7851,7 @@ Valid bits in args[0] are::
|
||||
#define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
|
||||
#define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
|
||||
#define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
|
||||
#define KVM_X86_DISABLE_EXITS_APERFMPERF (1 << 4)
|
||||
|
||||
Enabling this capability on a VM provides userspace with a way to no
|
||||
longer intercept some instructions for improved latency in some
|
||||
@@ -7861,6 +7862,28 @@ all such vmexits.
|
||||
|
||||
Do not enable KVM_FEATURE_PV_UNHALT if you disable HLT exits.
|
||||
|
||||
Virtualizing the ``IA32_APERF`` and ``IA32_MPERF`` MSRs requires more
|
||||
than just disabling APERF/MPERF exits. While both Intel and AMD
|
||||
document strict usage conditions for these MSRs--emphasizing that only
|
||||
the ratio of their deltas over a time interval (T0 to T1) is
|
||||
architecturally defined--simply passing through the MSRs can still
|
||||
produce an incorrect ratio.
|
||||
|
||||
This erroneous ratio can occur if, between T0 and T1:
|
||||
|
||||
1. The vCPU thread migrates between logical processors.
|
||||
2. Live migration or suspend/resume operations take place.
|
||||
3. Another task shares the vCPU's logical processor.
|
||||
4. C-states lower than C0 are emulated (e.g., via HLT interception).
|
||||
5. The guest TSC frequency doesn't match the host TSC frequency.
|
||||
|
||||
Due to these complexities, KVM does not automatically associate this
|
||||
passthrough capability with the guest CPUID bit,
|
||||
``CPUID.6:ECX.APERFMPERF[bit 0]``. Userspace VMMs that deem this
|
||||
mechanism adequate for virtualizing the ``IA32_APERF`` and
|
||||
``IA32_MPERF`` MSRs must set the guest CPUID bit explicitly.
|
||||
|
||||
|
||||
7.14 KVM_CAP_S390_HPAGE_1M
|
||||
--------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user