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"?