aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLiam Ni <zhiguangni01@gmail.com>2024-07-30 21:59:41 +0800
committerSean Christopherson <seanjc@google.com>2025-02-12 10:05:01 -0800
commit4cad9f87876a943d018ad73ec3919215fb756d2d (patch)
tree6cf68a1d7994f2c65168256680ff70c83a173360
parentKVM: x86: Remove unused iommu_domain and iommu_noncoherent from kvm_arch (diff)
downloadwireguard-linux-4cad9f87876a943d018ad73ec3919215fb756d2d.tar.xz
wireguard-linux-4cad9f87876a943d018ad73ec3919215fb756d2d.zip
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: 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>
Diffstat (limited to '')
-rw-r--r--arch/x86/kvm/i8259.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c
index 8dec646e764b..a8fb19940975 100644
--- a/arch/x86/kvm/i8259.c
+++ b/arch/x86/kvm/i8259.c
@@ -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;
}