]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: x86: Wake vCPU for PIC interrupt injection iff a valid IRQ was found
authorLiam Ni <zhiguangni01@gmail.com>
Tue, 30 Jul 2024 13:59:41 +0000 (21:59 +0800)
committerSean Christopherson <seanjc@google.com>
Wed, 12 Feb 2025 18:05:01 +0000 (10:05 -0800)
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: 7049467b5383 ("KVM: remove isr_ack logic from PIC")
Signed-off-by: Liam 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: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/i8259.c

index 8dec646e764b60d6c52a3b435eeadbb1355b065b..a8fb1994097563247638bba66f76cdcd0676875b 100644 (file)
@@ -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;
 }