On 2/4/22 21:47, Oliver Upton wrote:
+ /* + * Test that KVM will set these bits regardless of userspace if the + * guest CPUID exposes MPX. + */ + test_vmx_control_msr(vm, MSR_IA32_VMX_TRUE_ENTRY_CTLS, 0, + VM_ENTRY_LOAD_BNDCFGS, + VM_ENTRY_LOAD_BNDCFGS, + 0); + test_vmx_control_msr(vm, MSR_IA32_VMX_TRUE_EXIT_CTLS, 0, + VM_EXIT_CLEAR_BNDCFGS, + VM_EXIT_CLEAR_BNDCFGS, + 0); +
I wouldn't expect this behavior.
+ /* + * Disable the quirk, giving userspace control of the VMX capability + * MSRs. + */ + cap.cap = KVM_CAP_DISABLE_QUIRKS; + cap.args[0] = KVM_X86_QUIRK_TWEAK_VMX_CTRL_MSRS; + vm_enable_cap(vm, &cap); + + /* + * Test that userspace can clear these bits, even if it exposes MPX. + */ + test_vmx_control_msr(vm, MSR_IA32_VMX_TRUE_ENTRY_CTLS, 0, + VM_ENTRY_LOAD_BNDCFGS, + 0, + VM_ENTRY_LOAD_BNDCFGS); + test_vmx_control_msr(vm, MSR_IA32_VMX_TRUE_EXIT_CTLS, 0, + VM_EXIT_CLEAR_BNDCFGS, + 0, + VM_EXIT_CLEAR_BNDCFGS);
and likewise I would have expected this one to work without need for a quirk.
It's also missing a testcase that sets clears MPX and checks that the BNDCFGS controls disappear, I think.
Paolo