On 27/06/2024 14:37, Akihiko Odaki wrote:
macio ide_irq is connected to the IDE bus. This fixes the leak of
ide_irq.
Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com>
---
hw/ide/macio.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/hw/ide/macio.c b/hw/ide/macio.c
index aca90d04f0e8..9c96a857a7c1 100644
--- a/hw/ide/macio.c
+++ b/hw/ide/macio.c
@@ -427,7 +427,7 @@ static void macio_ide_realizefn(DeviceState *dev, Error
**errp)
s->bus.dma = &s->dma;
}
-static void pmac_ide_irq(void *opaque, int n, int level)
+static void pmac_irq(void *opaque, int n, int level)
{
MACIOIDEState *s = opaque;
uint32_t mask = 0x80000000u >> n;
@@ -446,6 +446,11 @@ static void pmac_ide_irq(void *opaque, int n, int level)
}
}
+static void pmac_ide_irq(void *opaque, int n, int level)
+{
+ pmac_irq(opaque, 1, level);
+}
+
static void macio_ide_initfn(Object *obj)
{
SysBusDevice *d = SYS_BUS_DEVICE(obj);
@@ -456,8 +461,8 @@ static void macio_ide_initfn(Object *obj)
sysbus_init_mmio(d, &s->mem);
sysbus_init_irq(d, &s->real_ide_irq);
sysbus_init_irq(d, &s->real_dma_irq);
- s->dma_irq = qemu_allocate_irq(pmac_ide_irq, s, 0);
- s->ide_irq = qemu_allocate_irq(pmac_ide_irq, s, 1);
+ s->dma_irq = qemu_allocate_irq(pmac_irq, s, 0);
+ qdev_init_gpio_in_named_with_opaque(DEVICE(obj), pmac_ide_irq, s, NULL, 1);
object_property_add_link(obj, "dbdma", TYPE_MAC_DBDMA,
(Object **) &s->dbdma,
This doesn't feel quite right: generally I consider the use of
qdev_init_gpio_in_named_with_opaque() to indicate that the underlying modelling is
incorrect. Let me have a look and see if I can figure out what's supposed to be
happening.
I guess I should probably be marked as maintainer of hw/ide/macio.c as it is part of
the macio device, but it looks as if this is missing from MAINTAINERS.
ATB,
Mark.