On Fri, Mar 31, 2023, Robert Hoo wrote: > Sean Christopherson <seanjc@xxxxxxxxxx> 于2023年3月11日周六 00:27写道: > > > > On Fri, Mar 10, 2023, Robert Hoo wrote: > > > Use kvm_read_cr4_bits() rather than directly read vcpu->arch.cr4, now that > > > we have reg cache layer and defined this wrapper. > > > > kvm_read_cr4_bits() predates this code by ~7 years. > > > > > Although, effectively for CR4.UMIP, it's the same, at present, as it's not > > > guest owned, in case of future changes, here better to use the canonical > > > interface. > > > > Practically speaking, UMIP _can't_ be guest owned without breaking UMIP emulation. > > I do like not open coding vcpu->arch.cr4, but I don't particuarly like the changelog. > > > > This would also be a good time to opportunistically convert the WARN_ON() to a > > WARN_ON_ONCE() (when it fires, it fires a _lot). > > > > This, with a reworded changelog? > > > > /* > > * UMIP emulation relies on intercepting writes to CR4.UMIP, i.e. this > > * and other code needs to be updated if UMIP can be guest owned. > > */ > > BUILD_BUG_ON(KVM_POSSIBLE_CR4_GUEST_BITS & X86_CR4_UMIP); > > > > WARN_ON_ONCE(!kvm_read_cr4_bits(vcpu, X86_CR4_UMIP)); > > return kvm_emulate_instruction(vcpu, 0); > > Are you going to have this along with your "[PATCH] KVM: VMX: Treat > UMIP as emulated if and only if the host doesn't have UMIP"? Sure, I'll add a patch for that.