[PATCH v4 0/4] LoongArch: KVM: Harden interrupt injection
From: Bibo Mao
Date: Thu Jul 09 2026 - 04:28:45 EST
API kvm_vcpu_ioctl_interrupt() is mainly to used to deliver interrupt
from user mode, and internal APIs kvm_queue_irq() and kvm_dequeue_irq()
are used in kernel mode, also moves IPI interrupt handling within lock
protection.
Also this patch replaces kvm_err() with WARN_ONCE() to avoid noise
kernel log.
---
v3 ... v4:
1. From AI assist, replace kvm_err() with kvm_pr_unimpl() rather than
WARN_ONCE(), since host may crash with WARN_ONCE() when kernel
parameter panic_on_warn=1 is set.
2. Add one new patch 3 which returns directly when IPI address is not
aligned, rather than only print WARN_ON_ONCE() and continue to run.
v2 ... v3:
1. Split the patches into three smaller ones, the first patch removes
old default case and kvm_err() since it is impossible to happen.
And the second patch replaces kvm_err() with WARN_ONCE().
v1 ... v2:
1. Add border check with ipnum in eiointc_set_sw_coreisr() and
eiointc_update_irq(), so that injected interrupt vector is valid.
2. Move IPI inject and ack within lock to avoid contention in
ipi_set() and ipi_clear().
3. Add kvm_arch_irqchip_in_kernel() check in user mode irq injection
in function kvm_vcpu_ioctl_interrupt(), contention of user mode irq
injection is assured from user mode VMM.
---
Bibo Mao (4):
LoongArch: KVM: Set default MAILBOX access size with 8
LoongArch: KVM: Replace kvm_err() with kvm_pr_unimpl()
LoongArch: KVM: Return directly when IPI address is not aligned
LoongArch: KVM: Use internal API to deliver interrupt in kernel mode
arch/loongarch/kvm/exit.c | 16 +++----
arch/loongarch/kvm/intc/dmsintc.c | 15 ++++---
arch/loongarch/kvm/intc/eiointc.c | 32 +++++++------
arch/loongarch/kvm/intc/ipi.c | 75 +++++++++++++------------------
arch/loongarch/kvm/intc/pch_pic.c | 12 ++---
arch/loongarch/kvm/vcpu.c | 5 ++-
6 files changed, 76 insertions(+), 79 deletions(-)
base-commit: 0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53
--
2.39.3