summary refs log tree commit diff stats
path: root/hw/intc/arm_gicv3.c
diff options
context:
space:
mode:
authorEric Auger <eric.auger@redhat.com>2018-06-22 13:28:36 +0100
committerPeter Maydell <peter.maydell@linaro.org>2018-06-22 13:28:36 +0100
commit1e575b66643a4311b9a6cbf0744f7f5aeba5e181 (patch)
treea6e60262f83498594d7e074c8e0b10237e3ad8a0 /hw/intc/arm_gicv3.c
parent19d1bd0b586a537805c6fe3b590f4ca8ec7a4912 (diff)
downloadfocaccia-qemu-1e575b66643a4311b9a6cbf0744f7f5aeba5e181.tar.gz
focaccia-qemu-1e575b66643a4311b9a6cbf0744f7f5aeba5e181.zip
hw/intc/arm_gicv3: Introduce redist-region-count array property
To prepare for multiple redistributor regions, we introduce
an array of uint32_t properties that stores the redistributor
count of each redistributor region.

Non accelerated VGICv3 only supports a single redistributor region.
The capacity of all redist regions is checked against the number of
vcpus.

Machvirt is updated to set those properties, ie. a single
redistributor region with count set to the number of vcpus
capped by 123.

Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Message-id: 1529072910-16156-4-git-send-email-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/intc/arm_gicv3.c')
-rw-r--r--hw/intc/arm_gicv3.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/hw/intc/arm_gicv3.c b/hw/intc/arm_gicv3.c
index 479c66733c..7044133e2d 100644
--- a/hw/intc/arm_gicv3.c
+++ b/hw/intc/arm_gicv3.c
@@ -373,7 +373,17 @@ static void arm_gic_realize(DeviceState *dev, Error **errp)
         return;
     }
 
-    gicv3_init_irqs_and_mmio(s, gicv3_set_irq, gic_ops);
+    if (s->nb_redist_regions != 1) {
+        error_setg(errp, "VGICv3 redist region number(%d) not equal to 1",
+                   s->nb_redist_regions);
+        return;
+    }
+
+    gicv3_init_irqs_and_mmio(s, gicv3_set_irq, gic_ops, &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return;
+    }
 
     gicv3_init_cpuif(s);
 }