Messages in this thread | | | Subject | Re: [PATCH] KVM: x86: Take advantage of kvm_arch_dy_has_pending_interrupt() | From | Paolo Bonzini <> | Date | Thu, 22 Apr 2021 12:35:58 +0200 |
| |
On 21/04/21 05:25, lihaiwei.kernel@gmail.com wrote: > From: Haiwei Li <lihaiwei@tencent.com> > > `kvm_arch_dy_runnable` checks the pending_interrupt as the code in > `kvm_arch_dy_has_pending_interrupt`. So take advantage of it. > > Signed-off-by: Haiwei Li <lihaiwei@tencent.com> > --- > arch/x86/kvm/x86.c | 21 +++++++++------------ > 1 file changed, 9 insertions(+), 12 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index d696a9f..08bd616 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -11125,28 +11125,25 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu) > return kvm_vcpu_running(vcpu) || kvm_vcpu_has_events(vcpu); > } > > -bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu) > +bool kvm_arch_dy_has_pending_interrupt(struct kvm_vcpu *vcpu) > { > - if (READ_ONCE(vcpu->arch.pv.pv_unhalted)) > - return true; > - > - if (kvm_test_request(KVM_REQ_NMI, vcpu) || > - kvm_test_request(KVM_REQ_SMI, vcpu) || > - kvm_test_request(KVM_REQ_EVENT, vcpu)) > - return true; > - > if (vcpu->arch.apicv_active && static_call(kvm_x86_dy_apicv_has_pending_interrupt)(vcpu)) > return true; > > return false; > } > > -bool kvm_arch_dy_has_pending_interrupt(struct kvm_vcpu *vcpu) > +bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu) > { > - if (vcpu->arch.apicv_active && static_call(kvm_x86_dy_apicv_has_pending_interrupt)(vcpu)) > + if (READ_ONCE(vcpu->arch.pv.pv_unhalted)) > return true; > > - return false; > + if (kvm_test_request(KVM_REQ_NMI, vcpu) || > + kvm_test_request(KVM_REQ_SMI, vcpu) || > + kvm_test_request(KVM_REQ_EVENT, vcpu)) > + return true; > + > + return kvm_arch_dy_has_pending_interrupt(vcpu); > } > > bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu) >
Looks good, but I'd like to take a look at the other patches for directed yield first. Thanks!
Paolo
| |