From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: richard.henderson@linaro.org, deller@gmx.de, qemu-devel@nongnu.org
Subject: [PATCH v2 07/50] dino: move PCI bus master address space setup to dino_pcihost_realize()
Date: Wed, 4 May 2022 10:25:17 +0100 [thread overview]
Message-ID: <20220504092600.10048-8-mark.cave-ayland@ilande.co.uk> (raw)
In-Reply-To: <20220504092600.10048-1-mark.cave-ayland@ilande.co.uk>
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>
---
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
next prev parent reply other threads:[~2022-05-04 9:46 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-04 9:25 [PATCH v2 00/50] hppa: general improvements and tidy-ups Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 01/50] dino: checkpatch fixes Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 02/50] dino: move registers from dino_init() to DINO_PCI_BRIDGE init function Mark Cave-Ayland
2022-05-04 15:44 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 03/50] dino: move PCI bus initialisation to dino_pcihost_init() Mark Cave-Ayland
2022-05-04 16:50 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 04/50] dino: move PCI windows " Mark Cave-Ayland
2022-05-04 16:51 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 05/50] dino: add memory-as property containing a link to the memory address space Mark Cave-Ayland
2022-05-04 16:52 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 06/50] dino: move pci_setup_iommu() to dino_pcihost_init() Mark Cave-Ayland
2022-05-04 16:54 ` Richard Henderson
2022-05-04 9:25 ` Mark Cave-Ayland [this message]
2022-05-04 16:55 ` [PATCH v2 07/50] dino: move PCI bus master address space setup to dino_pcihost_realize() Richard Henderson
2022-05-04 9:25 ` [PATCH v2 08/50] dino: move initial register configuration to new dino_pcihost_reset() function Mark Cave-Ayland
2022-05-04 16:55 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 09/50] dino: use QOM cast instead of directly referencing parent_obj Mark Cave-Ayland
2022-05-04 16:56 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 10/50] dino: return PCIBus from dino_init() using qdev_get_child_bus() Mark Cave-Ayland
2022-05-04 16:56 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 11/50] dino: split declarations from dino.c into dino.h Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 12/50] hppa: use new CONFIG_HPPA_B160L option instead of CONFIG_DINO to build hppa machine Mark Cave-Ayland
2022-05-04 15:41 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 13/50] dino: change dino_init() to return the DINO device instead of PCIBus Mark Cave-Ayland
2022-05-05 17:41 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 14/50] machine.c: map DINO device during board configuration Mark Cave-Ayland
2022-05-05 17:44 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 15/50] dino.h: add defines for DINO IRQ numbers Mark Cave-Ayland
2022-05-05 17:45 ` Richard Henderson
2022-05-05 17:46 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 16/50] dino: define IRQ inputs as qdev GPIOs Mark Cave-Ayland
2022-05-05 17:47 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 17/50] dino: wire up serial IRQ using a qdev GPIO in machine.c Mark Cave-Ayland
2022-05-05 17:48 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 18/50] dino: remove unused dino_set_timer_irq() IRQ handler Mark Cave-Ayland
2022-05-05 17:49 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 19/50] hppa: move dino_init() from dino.c to machine.c Mark Cave-Ayland
2022-05-05 17:50 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 20/50] dino: use numerical constant for iar0 and iar1 reset values Mark Cave-Ayland
2022-05-05 17:52 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 21/50] dino: move DINO HPA constants from hppa_hardware.h to dino.h Mark Cave-Ayland
2022-05-05 17:52 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 22/50] dino: move from hw/hppa to hw/pci-host Mark Cave-Ayland
2022-05-05 17:55 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 23/50] lasi: checkpatch fixes Mark Cave-Ayland
2022-05-04 15:44 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 24/50] lasi: move memory region initialisation to new lasi_init() function Mark Cave-Ayland
2022-05-05 18:08 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 25/50] lasi: move register memory mapping from lasi.c to machine.c Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 26/50] lasi: move initialisation of iar and rtc to new lasi_reset() function Mark Cave-Ayland
2022-05-06 4:19 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 27/50] lasi: move LASIState and associated QOM structures to lasi.h Mark Cave-Ayland
2022-05-06 4:20 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 28/50] lasi: replace lasi_get_irq() with defined constants Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 29/50] lasi: define IRQ inputs as qdev GPIOs Mark Cave-Ayland
2022-05-06 4:26 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 30/50] lasi: use qdev GPIOs to wire up IRQs in lasi_initfn() Mark Cave-Ayland
2022-05-08 2:21 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 31/50] lasi: fix serial port initialisation Mark Cave-Ayland
2022-05-08 2:23 ` Richard Henderson
2022-05-08 2:33 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 32/50] lasi: update lasi_initfn() to return LASIState Mark Cave-Ayland
2022-05-08 2:35 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 33/50] lasi: move LAN initialisation to machine.c Mark Cave-Ayland
2022-05-08 2:37 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 34/50] lasi: move parallel port " Mark Cave-Ayland
2022-05-08 2:41 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 35/50] lasi: move second serial " Mark Cave-Ayland
2022-05-08 2:50 ` Richard Henderson
2022-05-08 8:50 ` Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 36/50] lasi: move PS2 " Mark Cave-Ayland
2022-05-08 2:52 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 37/50] lasi: remove address space parameter from lasi_initfn() Mark Cave-Ayland
2022-05-08 2:53 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 38/50] lasi: move lasi_initfn() to machine.c Mark Cave-Ayland
2022-05-08 2:54 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 39/50] lasi: use constants for device register offsets Mark Cave-Ayland
2022-05-08 3:04 ` Richard Henderson
2022-05-08 8:56 ` Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 40/50] lasi: use numerical constant for iar reset value Mark Cave-Ayland
2022-05-08 2:58 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 41/50] hppa: move device headers from hppa_sys.h into individual .c files Mark Cave-Ayland
2022-05-08 2:59 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 42/50] lasi: move from hw/hppa to hw/misc Mark Cave-Ayland
2022-05-08 3:07 ` Richard Henderson
2022-05-08 9:09 ` Mark Cave-Ayland
2022-05-04 9:25 ` [PATCH v2 43/50] hppa: move hppa_pci_ignore_ops from pci.c to machine.c Mark Cave-Ayland
2022-05-08 3:13 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 44/50] hppa: remove hw/hppa/pci.c Mark Cave-Ayland
2022-05-08 3:14 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 45/50] hppa: remove unused trace-events from from hw/hppa Mark Cave-Ayland
2022-05-08 3:15 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 46/50] hppa: move enable_lan() define from hppa_sys.h to machine.c Mark Cave-Ayland
2022-05-08 3:17 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 47/50] hppa: remove the empty hppa_sys.h file Mark Cave-Ayland
2022-05-08 3:17 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 48/50] hppa: use MACHINE QOM macros for defining the hppa machine Mark Cave-Ayland
2022-05-08 3:18 ` Richard Henderson
2022-05-04 9:25 ` [PATCH v2 49/50] hppa: fold machine_hppa_machine_init() into machine_hppa_machine_init_class_init() Mark Cave-Ayland
2022-05-08 3:19 ` Richard Henderson
2022-05-04 9:26 ` [PATCH v2 50/50] hppa: simplify machine function names in machine.c Mark Cave-Ayland
2022-05-08 3:19 ` Richard Henderson
2022-05-08 9:21 ` [PATCH v2 00/50] hppa: general improvements and tidy-ups Mark Cave-Ayland
2022-05-08 13:30 ` Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220504092600.10048-8-mark.cave-ayland@ilande.co.uk \
--to=mark.cave-ayland@ilande.co.uk \
--cc=deller@gmx.de \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).