Re: [PATCH v3 07/21] KVM:x86: Refresh CPUID on write to guest MSR_IA32_XSS

From: Yang, Weijiang
Date: Thu Jun 15 2023 - 21:59:54 EST



On 6/16/2023 7:45 AM, Sean Christopherson wrote:
On Wed, May 31, 2023, Weijiang Yang wrote:
On 5/30/2023 8:08 PM, Chao Gao wrote:
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3776,8 +3776,10 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info)
*/
if (data & ~kvm_caps.supported_xss)
Shouldn't we check against the supported value of _this_ guest? similar to
guest_supported_xcr0.
I don't think it requires an extra variable to serve per guest purpose.

For guest XSS settings, now we don't add extra constraints like XCR0, thus
QEMU can impose constraints by configuring guest CPUID.0xd.1 to indicate
certain supervisor state components cannot be managed by XSAVES, even
though KVM supports them. IOW, guests may differ in the supported values
for the IA32_XSS MSR.
OK, will change this part to align with xcr0 settings. Thanks!
Please write KVM-Unit-Tests to verify KVM correctly handles the various MSRs related
to CET, e.g. a test_cet_msrs() subtest in msr.c would do nicely. Hmm, though testing
the combinations of CPUID bits will require multiple x86/unittests.cfg entries.
Might be time to split up msr.c into a library and then multiple tests.

Since there's already a CET specific unit test app, do you mind adding all CET related stuffs to

the app to make it inclusive? e.g.,  validate constraints between CET CPUIDs vs. CET/XSS MSRs?