If property irqchip_in_kernel is enabled, MSI interrupt can be injected with API kvm_irqchip_send_msi() to KVM.
Signed-off-by: Bibo Mao <maob...@loongson.cn> --- hw/intc/loongarch_pch_msi.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/intc/loongarch_pch_msi.c b/hw/intc/loongarch_pch_msi.c index e2dacc39bf..d196ee39a8 100644 --- a/hw/intc/loongarch_pch_msi.c +++ b/hw/intc/loongarch_pch_msi.c @@ -27,6 +27,15 @@ static void loongarch_msi_mem_write(void *opaque, hwaddr addr, LoongArchPCHMSI *s = (LoongArchPCHMSI *)opaque; int irq_num; + if (kvm_enabled() && s->irqchip_in_kernel) { + MSIMessage msg; + + msg.address = addr; + msg.data = val; + kvm_irqchip_send_msi(kvm_state, msg); + return; + } + /* * vector number is irq number from upper extioi intc * need subtract irq base to get msi vector offset -- 2.39.3