Commit 4cad9f87 authored by Liam Ni's avatar Liam Ni Committed by Sean Christopherson
Browse files

KVM: x86: Wake vCPU for PIC interrupt injection iff a valid IRQ was found



When updating the emulated PIC IRQ status, set "wakeup_needed" if and only
if a new interrupt was found, i.e. if the incoming level is non-zero and
an IRQ is being raised.  The bug is relatively benign, as KVM will signal
a spurious wakeup, e.g. set KVM_REQ_EVENT and kick target vCPUs, but KVM
will never actually inject a spurious IRQ as kvm_cpu_has_extint() cares
only about the "output" field.

Fixes: 7049467b ("KVM: remove isr_ack logic from PIC")
Signed-off-by: default avatarLiam Ni <zhiguangni01@gmail.com>
Link: https://lore.kernel.org/r/CACZJ9cX2R_=qgvLdaqbB_DUJhv08c674b67Ln_Qb9yyVwgE16w@mail.gmail.com


[sean: reconstruct patch, rewrite changelog]
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent dfcbcd86
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -567,7 +567,7 @@ static void pic_irq_request(struct kvm *kvm, int level)
{
	struct kvm_pic *s = kvm->arch.vpic;

	if (!s->output)
	if (!s->output && level)
		s->wakeup_needed = true;
	s->output = level;
}