|
@@ -58,6 +58,11 @@ static void a15mp_priv_realize(DeviceState *dev, Error **errp)
|
|
|
bool has_el2 = false;
|
|
|
Object *cpuobj;
|
|
|
|
|
|
+ if (s->num_irq < 32 || s->num_irq > 256) {
|
|
|
+ error_setg(errp, "Property 'num-irq' must be between 32 and 256");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
gicdev = DEVICE(&s->gic);
|
|
|
qdev_prop_set_uint32(gicdev, "num-cpu", s->num_cpu);
|
|
|
qdev_prop_set_uint32(gicdev, "num-irq", s->num_irq);
|
|
@@ -146,13 +151,14 @@ static void a15mp_priv_realize(DeviceState *dev, Error **errp)
|
|
|
|
|
|
static const Property a15mp_priv_properties[] = {
|
|
|
DEFINE_PROP_UINT32("num-cpu", A15MPPrivState, num_cpu, 1),
|
|
|
- /* The Cortex-A15MP may have anything from 0 to 224 external interrupt
|
|
|
- * IRQ lines (with another 32 internal). We default to 128+32, which
|
|
|
- * is the number provided by the Cortex-A15MP test chip in the
|
|
|
- * Versatile Express A15 development board.
|
|
|
- * Other boards may differ and should set this property appropriately.
|
|
|
+ /*
|
|
|
+ * The Cortex-A15MP may have anything from 0 to 224 external interrupt
|
|
|
+ * lines, plus always 32 internal IRQs. This property sets the total
|
|
|
+ * of internal + external, so the valid range is from 32 to 256.
|
|
|
+ * The board model must set this to whatever the configuration
|
|
|
+ * used for the CPU on that board or SoC is.
|
|
|
*/
|
|
|
- DEFINE_PROP_UINT32("num-irq", A15MPPrivState, num_irq, 160),
|
|
|
+ DEFINE_PROP_UINT32("num-irq", A15MPPrivState, num_irq, 0),
|
|
|
};
|
|
|
|
|
|
static void a15mp_priv_class_init(ObjectClass *klass, void *data)
|