• Pawan Gupta's avatar
    KVM: x86/speculation: Disable Fill buffer clear within guests · 027bbb88
    Pawan Gupta authored
    The enumeration of MD_CLEAR in CPUID(EAX=7,ECX=0).EDX{bit 10} is not an
    accurate indicator on all CPUs of whether the VERW instruction will
    overwrite fill buffers. FB_CLEAR enumeration in
    IA32_ARCH_CAPABILITIES{bit 17} covers the case of CPUs that are not
    vulnerable to MDS/TAA, indicating that microcode does overwrite fill
    buffers.
    
    Guests running in VMM environments may not be aware of all the
    capabilities/vulnerabilities of the host CPU. Specifically, a guest may
    apply MDS/TAA mitigations when a virtual CPU is enumerated as vulnerable
    to MDS/TAA even when the physical CPU is not. On CPUs that enumerate
    FB_CLEAR_CTRL the VMM may set FB_CLEAR_DIS to skip overwriting of fill
    buffers by the VERW instruction. This is done by setting FB_CLEAR_DIS
    during VMENTER and resetting on VMEXIT. For guests that enumerate
    FB_CLEAR (explicitly asking for fill buffer clear capability) the VMM
    will not use FB_CLEAR_DIS.
    
    Irrespective of guest state, host overwrites CPU buffers before VMENTER
    to protect itself from an MMIO capable guest, as part of mitigation for
    MMIO Stale Data vulnerabilities.
    Signed-off-by: default avatarPawan Gupta <pawan.kumar.gupta@linux.intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    027bbb88
vmx.c 234 KB