]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
KVM: arm/arm64: GICv4: Use pending_last as a scheduling hint
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 27 Oct 2017 14:28:47 +0000 (15:28 +0100)
committerChristoffer Dall <christoffer.dall@linaro.org>
Fri, 10 Nov 2017 08:41:56 +0000 (09:41 +0100)
When a vPE exits, the pending_last flag is set when there are pending
VLPIs stored in the pending table. Similarily, this flag will be set
when a doorbell interrupt fires, as it indicates the same condition.

Let's update kvm_vgic_vcpu_pending_irq() to account for that
flag as well, making a vcpu runnable when set.

Acked-by: Christoffer Dall <cdall@linaro.org>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
virt/kvm/arm/vgic/vgic.c

index a05a5700910b56dc16444d9450bff314f036ad60..d29e9121536643aabcfc8a7fd80b7ef4656bae2e 100644 (file)
@@ -781,6 +781,9 @@ int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu)
        if (!vcpu->kvm->arch.vgic.enabled)
                return false;
 
+       if (vcpu->arch.vgic_cpu.vgic_v3.its_vpe.pending_last)
+               return true;
+
        spin_lock_irqsave(&vgic_cpu->ap_list_lock, flags);
 
        list_for_each_entry(irq, &vgic_cpu->ap_list_head, ap_list) {