[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC PATCH 6/7] hw/intc/mips_gic: Initialize IRQ array once device is re
From: |
Philippe Mathieu-Daudé |
Subject: |
[RFC PATCH 6/7] hw/intc/mips_gic: Initialize IRQ array once device is realized |
Date: |
Fri, 9 Feb 2024 13:32:24 +0100 |
We shouldn't call qdev_get_gpio_in() on unrealized devices.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/intc/mips_gic.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/hw/intc/mips_gic.c b/hw/intc/mips_gic.c
index 77ba7348a3..05c8b8f4c4 100644
--- a/hw/intc/mips_gic.c
+++ b/hw/intc/mips_gic.c
@@ -419,7 +419,6 @@ static void mips_gic_realize(DeviceState *dev, Error **errp)
return;
}
s->vps = g_new(MIPSGICVPState, s->num_vps);
- s->irq_state = g_new(MIPSGICIRQState, s->num_irq);
/* Register the env for all VPs with the GIC */
for (i = 0; i < s->num_vps; i++) {
if (cs != NULL) {
@@ -433,7 +432,14 @@ static void mips_gic_realize(DeviceState *dev, Error
**errp)
}
s->gic_timer = mips_gictimer_init(s, s->num_vps, gic_timer_expire_cb);
qdev_init_gpio_in(dev, gic_set_irq, s->num_irq);
- for (i = 0; i < s->num_irq; i++) {
+}
+
+static void mips_gic_wire(DeviceState *dev)
+{
+ MIPSGICState *s = MIPS_GIC(dev);
+
+ s->irq_state = g_new(MIPSGICIRQState, s->num_irq);
+ for (unsigned i = 0; i < s->num_irq; i++) {
s->irq_state[i].irq = qdev_get_gpio_in(dev, i);
}
}
@@ -450,6 +456,7 @@ static void mips_gic_class_init(ObjectClass *klass, void
*data)
device_class_set_props(dc, mips_gic_properties);
dc->realize = mips_gic_realize;
+ dc->wire = mips_gic_wire;
}
static const TypeInfo mips_gic_info = {
--
2.41.0
- [RFC PATCH 0/7] hw/qdev: Split 'wiring' phase from 'realize', Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 1/7] hw/qdev: Introduce DeviceClass::[un]wire() handlers, Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 3/7] hw/ide/cmd646: Configure IDE bus IRQs after realization, Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 2/7] hw/input/pckbd: Connect i8042 GPIOs once mouse/keyboard are realized, Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 4/7] hw/ide/sii3112: Configure IDE bus IRQs after realization, Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 5/7] hw/ide/via: Configure IDE bus IRQs after realization, Philippe Mathieu-Daudé, 2024/02/09
- [RFC PATCH 6/7] hw/intc/mips_gic: Initialize IRQ array once device is realized,
Philippe Mathieu-Daudé <=
- [RFC PATCH 7/7] hw/misc/mac_via: Have VIA1 child access parent IRQ once realized, Philippe Mathieu-Daudé, 2024/02/09
- Re: [RFC PATCH 0/7] hw/qdev: Split 'wiring' phase from 'realize', BALATON Zoltan, 2024/02/09
- Re: [RFC PATCH 0/7] hw/qdev: Split 'wiring' phase from 'realize', Bernhard Beschow, 2024/02/09