[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't sup
From: |
Yong-Xuan Wang |
Subject: |
[PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it |
Date: |
Fri, 1 Nov 2024 16:36:05 +0800 |
Currently QEMU will continue to emulate the AIA MSI devices and enable the
AIA extension for guest OS when the host kernel doesn't support the
in-kernel AIA irqchip. This will cause an illegal instruction exception
when the guest OS uses the IMSIC devices. Add additional checks to ensure
the guest OS only uses the AIA MSI device when the host kernel supports
the in-kernel AIA chip.
Signed-off-by: Yong-Xuan Wang <yongxuan.wang@sifive.com>
Reviewed-by: Jim Shu <jim.shu@sifive.com>
---
hw/riscv/virt.c | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c
index 45a8c4f8190d..0d8e047844a6 100644
--- a/hw/riscv/virt.c
+++ b/hw/riscv/virt.c
@@ -1567,12 +1567,19 @@ static void virt_machine_init(MachineState *machine)
}
}
- if (kvm_enabled() && virt_use_kvm_aia(s)) {
- kvm_riscv_aia_create(machine, IMSIC_MMIO_GROUP_MIN_SHIFT,
- VIRT_IRQCHIP_NUM_SOURCES, VIRT_IRQCHIP_NUM_MSIS,
- memmap[VIRT_APLIC_S].base,
- memmap[VIRT_IMSIC_S].base,
- s->aia_guests);
+ if (kvm_enabled() && s->aia_type == VIRT_AIA_TYPE_APLIC_IMSIC) {
+ if (virt_use_kvm_aia(s)) {
+ kvm_riscv_aia_create(machine, IMSIC_MMIO_GROUP_MIN_SHIFT,
+ VIRT_IRQCHIP_NUM_SOURCES,
+ VIRT_IRQCHIP_NUM_MSIS,
+ memmap[VIRT_APLIC_S].base,
+ memmap[VIRT_IMSIC_S].base,
+ s->aia_guests);
+ } else {
+ error_report("Host machine doesn't support in-kernel APLIC MSI, "
+ "please use aia=none or aia=aplic");
+ exit(1);
+ }
}
if (riscv_is_32bit(&s->soc[0])) {
--
2.17.1
- [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it,
Yong-Xuan Wang <=
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Daniel Henrique Barboza, 2024/11/01
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Andrew Jones, 2024/11/01
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Yong-Xuan Wang, 2024/11/04
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Andrew Jones, 2024/11/04
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Daniel Henrique Barboza, 2024/11/04
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Yong-Xuan Wang, 2024/11/04
- Re: [PATCH 1/1] hw/riscv: virt: prevent to use AIA MSI when host doesn't support it, Andrew Jones, 2024/11/04