> From: Paolo Bonzini <pbonzini@xxxxxxxxxx> > Sent: Wednesday, January 5, 2022 4:46 AM > > On 1/4/22 20:46, Sean Christopherson wrote: > > On Wed, Dec 29, 2021, Yang Zhong wrote: > >> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > >> index bdf89c28d2ce..76e1941db223 100644 > >> --- a/arch/x86/kvm/x86.c > >> +++ b/arch/x86/kvm/x86.c > >> @@ -4296,6 +4296,11 @@ int kvm_vm_ioctl_check_extension(struct kvm > *kvm, long ext) > >> else > >> r = 0; > >> break; > >> + case KVM_CAP_XSAVE2: > >> + r = kvm->vcpus[0]->arch.guest_fpu.uabi_size; > > > > a) This does not compile against kvm/queue. > > > > arch/x86/kvm/x86.c: In function ‘kvm_vm_ioctl_check_extension’: > > arch/x86/kvm/x86.c:4317:24: error: ‘struct kvm’ has no member named > ‘vcpus’ > > 4317 | r = kvm->vcpus[0]->arch.guest_fpu.uabi_size; > > > > b) vcpu0 is not guaranteed to be non-NULL at this point. > > Yang, you can post an incremental patch for this. You can use the > highest bit of the guest-permitted xcr0 (i.e. the OR of KVM's supported > XCR0 an the guest-permitted dynamic features) and pass it to cpuid(0xD). > Will do, except one correction that 'OR' should be 'AND' here. 😊 Thanks Kevin