KVM: Avoid double interrupt injection with vapic
After an interrupt injection, the PPR changes, and we have to reflect that into the vapic. This causes a KVM_REQ_EVENT to be set, which causes the whole interrupt injection routine to be run again (harmlessly). Optimize by only setting KVM_REQ_EVENT if the ppr was lowered; otherwise there is no chance that a new injection is needed. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
82ca2d108b
commit
83bcacb1a5
|
@ -277,6 +277,7 @@ static void apic_update_ppr(struct kvm_lapic *apic)
|
||||||
|
|
||||||
if (old_ppr != ppr) {
|
if (old_ppr != ppr) {
|
||||||
apic_set_reg(apic, APIC_PROCPRI, ppr);
|
apic_set_reg(apic, APIC_PROCPRI, ppr);
|
||||||
|
if (ppr < old_ppr)
|
||||||
kvm_make_request(KVM_REQ_EVENT, apic->vcpu);
|
kvm_make_request(KVM_REQ_EVENT, apic->vcpu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue