GICv2m and GICits is not always needed.
Signed-off-by: Xu Yandong <[email protected]>
---
hw/arm/virt.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 9031fd6757..32c3977e32 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -605,6 +605,15 @@ static void create_v2m(VirtMachineState *vms)
fdt_add_v2m_gic_node(vms);
}
+static void gic_set_msi_interrupt(VirtMachineState *vms)
+{
+ if (vms->gic_version == 3 && vms->its) {
+ create_its(vms);
+ } else if (vms->gic_version == 2) {
+ create_v2m(vms);
+ }
+}
+
static void create_gic(VirtMachineState *vms)
{
MachineState *ms = MACHINE(vms);
@@ -719,12 +728,7 @@ static void create_gic(VirtMachineState *vms)
}
fdt_add_gic_node(vms);
-
- if (type == 3 && vms->its) {
- create_its(vms);
- } else if (type == 2) {
- create_v2m(vms);
- }
+ gic_set_msi_interrupt(vms);
}
static void create_uart(const VirtMachineState *vms, int uart,
--
2.18.1