[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 07/53] dino: move PCI bus master address space setup to dino_pciho
From: |
Mark Cave-Ayland |
Subject: |
[PULL 07/53] dino: move PCI bus master address space setup to dino_pcihost_realize() |
Date: |
Sun, 8 May 2022 20:56:04 +0100 |
Add a new dino_pcihost_unrealize() function to remove the address space when the
device is unrealized.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Acked-by: Helge Deller <deller@gmx.de>
Message-Id: <20220504092600.10048-8-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/hppa/dino.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/hw/hppa/dino.c b/hw/hppa/dino.c
index dcebb9f98f..ae79ddbf5c 100644
--- a/hw/hppa/dino.c
+++ b/hw/hppa/dino.c
@@ -536,17 +536,27 @@ PCIBus *dino_init(MemoryRegion *addr_space,
memory_region_add_subregion(addr_space, DINO_HPA,
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev),
0));
+ *p_rtc_irq = qemu_allocate_irq(dino_set_timer_irq, s, 0);
+ *p_ser_irq = qemu_allocate_irq(dino_set_serial_irq, s, 0);
+
+ return b;
+}
+
+static void dino_pcihost_realize(DeviceState *dev, Error **errp)
+{
+ DinoState *s = DINO_PCI_HOST_BRIDGE(dev);
+
/* Set up PCI view of memory: Bus master address space. */
memory_region_init(&s->bm, OBJECT(s), "bm-dino", 4 * GiB);
memory_region_init_alias(&s->bm_ram_alias, OBJECT(s),
- "bm-system", addr_space, 0,
+ "bm-system", s->memory_as, 0,
0xf0000000 + DINO_MEM_CHUNK_SIZE);
memory_region_init_alias(&s->bm_pci_alias, OBJECT(s),
"bm-pci", &s->pci_mem,
0xf0000000 + DINO_MEM_CHUNK_SIZE,
30 * DINO_MEM_CHUNK_SIZE);
memory_region_init_alias(&s->bm_cpu_alias, OBJECT(s),
- "bm-cpu", addr_space, 0xfff00000,
+ "bm-cpu", s->memory_as, 0xfff00000,
0xfffff);
memory_region_add_subregion(&s->bm, 0,
&s->bm_ram_alias);
@@ -555,12 +565,15 @@ PCIBus *dino_init(MemoryRegion *addr_space,
&s->bm_pci_alias);
memory_region_add_subregion(&s->bm, 0xfff00000,
&s->bm_cpu_alias);
+
address_space_init(&s->bm_as, &s->bm, "pci-bm");
+}
- *p_rtc_irq = qemu_allocate_irq(dino_set_timer_irq, s, 0);
- *p_ser_irq = qemu_allocate_irq(dino_set_serial_irq, s, 0);
+static void dino_pcihost_unrealize(DeviceState *dev)
+{
+ DinoState *s = DINO_PCI_HOST_BRIDGE(dev);
- return b;
+ address_space_destroy(&s->bm_as);
}
static void dino_pcihost_init(Object *obj)
@@ -619,6 +632,8 @@ static void dino_pcihost_class_init(ObjectClass *klass,
void *data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
+ dc->realize = dino_pcihost_realize;
+ dc->unrealize = dino_pcihost_unrealize;
device_class_set_props(dc, dino_pcihost_properties);
dc->vmsd = &vmstate_dino;
}
--
2.20.1
- [PULL 00/53] qemu-sparc queue 20220508, Mark Cave-Ayland, 2022/05/08
- [PULL 01/53] dino: checkpatch fixes, Mark Cave-Ayland, 2022/05/08
- [PULL 02/53] dino: move registers from dino_init() to DINO_PCI_BRIDGE init function, Mark Cave-Ayland, 2022/05/08
- [PULL 03/53] dino: move PCI bus initialisation to dino_pcihost_init(), Mark Cave-Ayland, 2022/05/08
- [PULL 04/53] dino: move PCI windows initialisation to dino_pcihost_init(), Mark Cave-Ayland, 2022/05/08
- [PULL 05/53] dino: add memory-as property containing a link to the memory address space, Mark Cave-Ayland, 2022/05/08
- [PULL 06/53] dino: move pci_setup_iommu() to dino_pcihost_init(), Mark Cave-Ayland, 2022/05/08
- [PULL 07/53] dino: move PCI bus master address space setup to dino_pcihost_realize(),
Mark Cave-Ayland <=
- [PULL 08/53] dino: move initial register configuration to new dino_pcihost_reset() function, Mark Cave-Ayland, 2022/05/08
- [PULL 09/53] dino: use QOM cast instead of directly referencing parent_obj, Mark Cave-Ayland, 2022/05/08
- [PULL 10/53] dino: return PCIBus from dino_init() using qdev_get_child_bus(), Mark Cave-Ayland, 2022/05/08
- [PULL 11/53] dino: split declarations from dino.c into dino.h, Mark Cave-Ayland, 2022/05/08
- [PULL 12/53] hppa: use new CONFIG_HPPA_B160L option instead of CONFIG_DINO to build hppa machine, Mark Cave-Ayland, 2022/05/08
- [PULL 13/53] dino: change dino_init() to return the DINO device instead of PCIBus, Mark Cave-Ayland, 2022/05/08
- [PULL 14/53] machine.c: map DINO device during board configuration, Mark Cave-Ayland, 2022/05/08
- [PULL 15/53] dino.h: add defines for DINO IRQ numbers, Mark Cave-Ayland, 2022/05/08
- [PULL 16/53] dino: define IRQ inputs as qdev GPIOs, Mark Cave-Ayland, 2022/05/08
- [PULL 17/53] dino: wire up serial IRQ using a qdev GPIO in machine.c, Mark Cave-Ayland, 2022/05/08