Message ID | 1619080459-30032-1-git-send-email-wanpengli@tencent.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: X86: Fix always skip to boost kernel lock holder candidate for SEV-ES guests | expand |
On 22/04/21 10:34, Wanpeng Li wrote: > From: Wanpeng Li <wanpengli@tencent.com> > > Commit f1c6366e3043 ("KVM: SVM: Add required changes to support intercepts under > SEV-ES") prevents hypervisor accesses guest register state when the guest is > running under SEV-ES. The initial value of vcpu->arch.guest_state_protected > is false, it will not be updated in preemption notifiers after this commit which > means that the kernel spinlock lock holder will always be skipped to boost. Let's > fix it by always treating preempted is in the guest kernel mode, false positive > is better than skip completely. > > Fixes: f1c6366e3043 (KVM: SVM: Add required changes to support intercepts under SEV-ES) > Signed-off-by: Wanpeng Li <wanpengli@tencent.com> > --- > arch/x86/kvm/x86.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index d696a9f..e52ca09 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -11151,6 +11151,9 @@ bool kvm_arch_dy_has_pending_interrupt(struct kvm_vcpu *vcpu) > > bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) > { > + if (vcpu->arch.guest_state_protected) > + return true; > + > return vcpu->arch.preempted_in_kernel; > } > > Queued, thanks. Paolo
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index d696a9f..e52ca09 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -11151,6 +11151,9 @@ bool kvm_arch_dy_has_pending_interrupt(struct kvm_vcpu *vcpu) bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) { + if (vcpu->arch.guest_state_protected) + return true; + return vcpu->arch.preempted_in_kernel; }