* [PATCH 0/7] hw: Let devices own the MemoryRegion they create
@ 2020-02-21 17:30 Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 1/7] scripts/coccinelle: Add a script to let devices own their MemoryRegions Philippe Mathieu-Daudé
` (6 more replies)
0 siblings, 7 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
When a device creates a MemoryRegion without setting its ownership,
the MemoryRegion is added to the machine "/unattached" container in
the QOM tree.
Add a script to do automatically let the device take the ownership
of the memory regions it creates, and run it.
Philippe Mathieu-Daudé (7):
scripts/coccinelle: Add a script to let devices own their
MemoryRegions
hw/arm: Let devices own the MemoryRegion they create
hw/char: Let devices own the MemoryRegion they create
hw/core: Let devices own the MemoryRegion they create
hw/display: Let devices own the MemoryRegion they create
hw/dma: Let devices own the MemoryRegion they create
hw/riscv: Let devices own the MemoryRegion they create
hw/arm/exynos4210.c | 14 ++--
hw/arm/fsl-imx25.c | 14 ++--
hw/arm/fsl-imx31.c | 10 +--
hw/arm/fsl-imx6.c | 10 +--
hw/arm/fsl-imx6ul.c | 14 ++--
hw/arm/msf2-soc.c | 8 +-
hw/arm/nrf51_soc.c | 2 +-
hw/arm/stm32f205_soc.c | 10 +--
hw/arm/stm32f405_soc.c | 13 +--
hw/arm/xlnx-zynqmp.c | 13 ++-
hw/char/serial.c | 7 +-
hw/core/platform-bus.c | 3 +-
hw/display/cg3.c | 4 +-
hw/display/g364fb.c | 5 +-
hw/display/macfb.c | 4 +-
hw/display/vmware_vga.c | 4 +-
hw/dma/i8257.c | 2 +-
hw/dma/rc4030.c | 4 +-
hw/riscv/sifive_e.c | 8 +-
hw/riscv/sifive_u.c | 4 +-
.../memory_region_owner_nonnull.cocci | 80 +++++++++++++++++++
21 files changed, 158 insertions(+), 75 deletions(-)
create mode 100644 scripts/coccinelle/memory_region_owner_nonnull.cocci
--
2.21.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/7] scripts/coccinelle: Add a script to let devices own their MemoryRegions
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
When a device creates a MemoryRegion without setting its ownership,
the MemoryRegion is added to the machine "/unattached" container in
the QOM tree.
Example with the Samsung SMDKC210 board:
$ arm-softmmu/qemu-system-arm -M smdkc210 -S -monitor stdio
(qemu) info qom-tree
/machine (smdkc210-machine)
/unattached (container)
/io[0] (qemu:memory-region)
/exynos4210.dram0[0] (qemu:memory-region)
/exynos4210.irom[0] (qemu:memory-region)
/exynos4210.iram[0] (qemu:memory-region)
/exynos4210.chipid[0] (qemu:memory-region)
...
/device[26] (exynos4210.uart)
/exynos4210.uart[0] (qemu:memory-region)
/soc (exynos4210)
^
\__ [*]
The irom/iram/chipid regions should go under 'soc' at [*].
Add a coccinelle script to do automatic semantic patching.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
.../memory_region_owner_nonnull.cocci | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 scripts/coccinelle/memory_region_owner_nonnull.cocci
diff --git a/scripts/coccinelle/memory_region_owner_nonnull.cocci b/scripts/coccinelle/memory_region_owner_nonnull.cocci
new file mode 100644
index 0000000000..6748a200b2
--- /dev/null
+++ b/scripts/coccinelle/memory_region_owner_nonnull.cocci
@@ -0,0 +1,80 @@
+/*
+ Usage:
+
+ spatch \
+ --macro-file scripts/cocci-macro-file.h \
+ --sp-file scripts/coccinelle/memory_region_owner_nonnull.cocci \
+ --keep-comments \
+ --in-place \
+ --dir .
+
+*/
+
+// Device is owner
+@@
+typedef DeviceState;
+identifier device_fn, dev, obj;
+expression E1, E2, E3, E4, E5;
+@@
+static void device_fn(DeviceState *dev, ...)
+{
+ ...
+ Object *obj = OBJECT(dev);
+ <+...
+(
+- memory_region_init(E1, NULL, E2, E3);
++ memory_region_init(E1, obj, E2, E3);
+|
+- memory_region_init_io(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_io(E1, obj, E2, E3, E4, E5);
+|
+- memory_region_init_alias(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_alias(E1, obj, E2, E3, E4, E5);
+|
+- memory_region_init_rom(E1, NULL, E2, E3, E4);
++ memory_region_init_rom(E1, obj, E2, E3, E4);
+|
+- memory_region_init_ram(E1, NULL, E2, E3, E4);
++ memory_region_init_ram(E1, obj, E2, E3, E4);
+|
+- memory_region_init_ram_ptr(E1, NULL, E2, E3, E4);
++ memory_region_init_ram_ptr(E1, obj, E2, E3, E4);
+|
+- memory_region_init_ram_shared_nomigrate(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_ram_shared_nomigrate(E1, obj, E2, E3, E4, E5);
+)
+ ...+>
+}
+
+// Device is owner
+@@
+identifier device_fn, dev;
+expression E1, E2, E3, E4, E5;
+@@
+static void device_fn(DeviceState *dev, ...)
+{
+ <+...
+(
+- memory_region_init(E1, NULL, E2, E3);
++ memory_region_init(E1, OBJECT(dev), E2, E3);
+|
+- memory_region_init_io(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_io(E1, OBJECT(dev), E2, E3, E4, E5);
+|
+- memory_region_init_alias(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_alias(E1, OBJECT(dev), E2, E3, E4, E5);
+|
+- memory_region_init_rom(E1, NULL, E2, E3, E4);
++ memory_region_init_rom(E1, OBJECT(dev), E2, E3, E4);
+|
+- memory_region_init_ram(E1, NULL, E2, E3, E4);
++ memory_region_init_ram(E1, OBJECT(dev), E2, E3, E4);
+|
+- memory_region_init_ram_ptr(E1, NULL, E2, E3, E4);
++ memory_region_init_ram_ptr(E1, OBJECT(dev), E2, E3, E4);
+|
+- memory_region_init_ram_shared_nomigrate(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_ram_shared_nomigrate(E1, OBJECT(dev), E2, E3, E4, E5);
+)
+ ...+>
+}
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 1/7] scripts/coccinelle: Add a script to let devices own their MemoryRegions Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:36 ` Peter Maydell
2020-02-21 17:30 ` [PATCH 3/7] hw/char: " Philippe Mathieu-Daudé
` (4 subsequent siblings)
6 siblings, 1 reply; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/arm/exynos4210.c | 14 +++++++-------
hw/arm/fsl-imx25.c | 14 +++++++-------
hw/arm/fsl-imx31.c | 10 +++++-----
hw/arm/fsl-imx6.c | 10 +++++-----
hw/arm/fsl-imx6ul.c | 14 +++++++-------
hw/arm/msf2-soc.c | 8 ++++----
hw/arm/nrf51_soc.c | 2 +-
hw/arm/stm32f205_soc.c | 10 +++++-----
hw/arm/stm32f405_soc.c | 13 +++++++------
hw/arm/xlnx-zynqmp.c | 13 ++++++-------
10 files changed, 54 insertions(+), 54 deletions(-)
diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 59a27bdd68..d4b05336ee 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -305,28 +305,28 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
/*** Memory ***/
/* Chip-ID and OMR */
- memory_region_init_io(&s->chipid_mem, NULL, &exynos4210_chipid_and_omr_ops,
- NULL, "exynos4210.chipid", sizeof(chipid_and_omr));
+ memory_region_init_io(&s->chipid_mem, OBJECT(socdev),
+ &exynos4210_chipid_and_omr_ops, NULL,
+ "exynos4210.chipid", sizeof(chipid_and_omr));
memory_region_add_subregion(system_mem, EXYNOS4210_CHIPID_ADDR,
&s->chipid_mem);
/* Internal ROM */
- memory_region_init_ram(&s->irom_mem, NULL, "exynos4210.irom",
+ memory_region_init_ram(&s->irom_mem, OBJECT(socdev), "exynos4210.irom",
EXYNOS4210_IROM_SIZE, &error_fatal);
memory_region_set_readonly(&s->irom_mem, true);
memory_region_add_subregion(system_mem, EXYNOS4210_IROM_BASE_ADDR,
&s->irom_mem);
/* mirror of iROM */
- memory_region_init_alias(&s->irom_alias_mem, NULL, "exynos4210.irom_alias",
- &s->irom_mem,
- 0,
+ memory_region_init_alias(&s->irom_alias_mem, OBJECT(socdev),
+ "exynos4210.irom_alias", &s->irom_mem, 0,
EXYNOS4210_IROM_SIZE);
memory_region_set_readonly(&s->irom_alias_mem, true);
memory_region_add_subregion(system_mem, EXYNOS4210_IROM_MIRROR_BASE_ADDR,
&s->irom_alias_mem);
/* Internal RAM */
- memory_region_init_ram(&s->iram_mem, NULL, "exynos4210.iram",
+ memory_region_init_ram(&s->iram_mem, OBJECT(socdev), "exynos4210.iram",
EXYNOS4210_IRAM_SIZE, &error_fatal);
memory_region_add_subregion(system_mem, EXYNOS4210_IRAM_BASE_ADDR,
&s->iram_mem);
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index da3471b395..a77c873cfe 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -247,16 +247,16 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
}
/* initialize 2 x 16 KB ROM */
- memory_region_init_rom(&s->rom[0], NULL,
- "imx25.rom0", FSL_IMX25_ROM0_SIZE, &err);
+ memory_region_init_rom(&s->rom[0], OBJECT(dev), "imx25.rom0",
+ FSL_IMX25_ROM0_SIZE, &err);
if (err) {
error_propagate(errp, err);
return;
}
memory_region_add_subregion(get_system_memory(), FSL_IMX25_ROM0_ADDR,
&s->rom[0]);
- memory_region_init_rom(&s->rom[1], NULL,
- "imx25.rom1", FSL_IMX25_ROM1_SIZE, &err);
+ memory_region_init_rom(&s->rom[1], OBJECT(dev), "imx25.rom1",
+ FSL_IMX25_ROM1_SIZE, &err);
if (err) {
error_propagate(errp, err);
return;
@@ -265,8 +265,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
&s->rom[1]);
/* initialize internal RAM (128 KB) */
- memory_region_init_ram(&s->iram, NULL, "imx25.iram", FSL_IMX25_IRAM_SIZE,
- &err);
+ memory_region_init_ram(&s->iram, OBJECT(dev), "imx25.iram",
+ FSL_IMX25_IRAM_SIZE, &err);
if (err) {
error_propagate(errp, err);
return;
@@ -275,7 +275,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
&s->iram);
/* internal RAM (128 KB) is aliased over 128 MB - 128 KB */
- memory_region_init_alias(&s->iram_alias, NULL, "imx25.iram_alias",
+ memory_region_init_alias(&s->iram_alias, OBJECT(dev), "imx25.iram_alias",
&s->iram, 0, FSL_IMX25_IRAM_ALIAS_SIZE);
memory_region_add_subregion(get_system_memory(), FSL_IMX25_IRAM_ALIAS_ADDR,
&s->iram_alias);
diff --git a/hw/arm/fsl-imx31.c b/hw/arm/fsl-imx31.c
index 55e90d104b..d5057ea49b 100644
--- a/hw/arm/fsl-imx31.c
+++ b/hw/arm/fsl-imx31.c
@@ -206,7 +206,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
}
/* On a real system, the first 16k is a `secure boot rom' */
- memory_region_init_rom(&s->secure_rom, NULL, "imx31.secure_rom",
+ memory_region_init_rom(&s->secure_rom, OBJECT(dev), "imx31.secure_rom",
FSL_IMX31_SECURE_ROM_SIZE, &err);
if (err) {
error_propagate(errp, err);
@@ -216,7 +216,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
&s->secure_rom);
/* There is also a 16k ROM */
- memory_region_init_rom(&s->rom, NULL, "imx31.rom",
+ memory_region_init_rom(&s->rom, OBJECT(dev), "imx31.rom",
FSL_IMX31_ROM_SIZE, &err);
if (err) {
error_propagate(errp, err);
@@ -226,8 +226,8 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
&s->rom);
/* initialize internal RAM (16 KB) */
- memory_region_init_ram(&s->iram, NULL, "imx31.iram", FSL_IMX31_IRAM_SIZE,
- &err);
+ memory_region_init_ram(&s->iram, OBJECT(dev), "imx31.iram",
+ FSL_IMX31_IRAM_SIZE, &err);
if (err) {
error_propagate(errp, err);
return;
@@ -236,7 +236,7 @@ static void fsl_imx31_realize(DeviceState *dev, Error **errp)
&s->iram);
/* internal RAM (16 KB) is aliased over 256 MB - 16 KB */
- memory_region_init_alias(&s->iram_alias, NULL, "imx31.iram_alias",
+ memory_region_init_alias(&s->iram_alias, OBJECT(dev), "imx31.iram_alias",
&s->iram, 0, FSL_IMX31_IRAM_ALIAS_SIZE);
memory_region_add_subregion(get_system_memory(), FSL_IMX31_IRAM_ALIAS_ADDR,
&s->iram_alias);
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index ecc62855f2..ecbd7ce399 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -405,7 +405,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
}
/* ROM memory */
- memory_region_init_rom(&s->rom, NULL, "imx6.rom",
+ memory_region_init_rom(&s->rom, OBJECT(dev), "imx6.rom",
FSL_IMX6_ROM_SIZE, &err);
if (err) {
error_propagate(errp, err);
@@ -415,7 +415,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
&s->rom);
/* CAAM memory */
- memory_region_init_rom(&s->caam, NULL, "imx6.caam",
+ memory_region_init_rom(&s->caam, OBJECT(dev), "imx6.caam",
FSL_IMX6_CAAM_MEM_SIZE, &err);
if (err) {
error_propagate(errp, err);
@@ -425,8 +425,8 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
&s->caam);
/* OCRAM memory */
- memory_region_init_ram(&s->ocram, NULL, "imx6.ocram", FSL_IMX6_OCRAM_SIZE,
- &err);
+ memory_region_init_ram(&s->ocram, OBJECT(dev), "imx6.ocram",
+ FSL_IMX6_OCRAM_SIZE, &err);
if (err) {
error_propagate(errp, err);
return;
@@ -435,7 +435,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
&s->ocram);
/* internal OCRAM (256 KB) is aliased over 1 MB */
- memory_region_init_alias(&s->ocram_alias, NULL, "imx6.ocram_alias",
+ memory_region_init_alias(&s->ocram_alias, OBJECT(dev), "imx6.ocram_alias",
&s->ocram, 0, FSL_IMX6_OCRAM_ALIAS_SIZE);
memory_region_add_subregion(get_system_memory(), FSL_IMX6_OCRAM_ALIAS_ADDR,
&s->ocram_alias);
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index c405b68d1d..ddb6655678 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -543,7 +543,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* ROM memory
*/
- memory_region_init_rom(&s->rom, NULL, "imx6ul.rom",
+ memory_region_init_rom(&s->rom, OBJECT(dev), "imx6ul.rom",
FSL_IMX6UL_ROM_SIZE, &error_abort);
memory_region_add_subregion(get_system_memory(), FSL_IMX6UL_ROM_ADDR,
&s->rom);
@@ -551,7 +551,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* CAAM memory
*/
- memory_region_init_rom(&s->caam, NULL, "imx6ul.caam",
+ memory_region_init_rom(&s->caam, OBJECT(dev), "imx6ul.caam",
FSL_IMX6UL_CAAM_MEM_SIZE, &error_abort);
memory_region_add_subregion(get_system_memory(), FSL_IMX6UL_CAAM_MEM_ADDR,
&s->caam);
@@ -559,17 +559,17 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* OCRAM memory
*/
- memory_region_init_ram(&s->ocram, NULL, "imx6ul.ocram",
- FSL_IMX6UL_OCRAM_MEM_SIZE,
- &error_abort);
+ memory_region_init_ram(&s->ocram, OBJECT(dev), "imx6ul.ocram",
+ FSL_IMX6UL_OCRAM_MEM_SIZE, &error_abort);
memory_region_add_subregion(get_system_memory(), FSL_IMX6UL_OCRAM_MEM_ADDR,
&s->ocram);
/*
* internal OCRAM (128 KB) is aliased over 512 KB
*/
- memory_region_init_alias(&s->ocram_alias, NULL, "imx6ul.ocram_alias",
- &s->ocram, 0, FSL_IMX6UL_OCRAM_ALIAS_SIZE);
+ memory_region_init_alias(&s->ocram_alias, OBJECT(dev),
+ "imx6ul.ocram_alias", &s->ocram, 0,
+ FSL_IMX6UL_OCRAM_ALIAS_SIZE);
memory_region_add_subregion(get_system_memory(),
FSL_IMX6UL_OCRAM_ALIAS_ADDR, &s->ocram_alias);
}
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index 8f84692e64..291bf8df43 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -96,7 +96,7 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
MemoryRegion *nvm_alias = g_new(MemoryRegion, 1);
MemoryRegion *sram = g_new(MemoryRegion, 1);
- memory_region_init_rom(nvm, NULL, "MSF2.eNVM", s->envm_size,
+ memory_region_init_rom(nvm, OBJECT(dev_soc), "MSF2.eNVM", s->envm_size,
&error_fatal);
/*
* On power-on, the eNVM region 0x60000000 is automatically
@@ -104,13 +104,13 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
* start address (0x0). We do not support remapping other eNVM,
* eSRAM and DDR regions by guest(via Sysreg) currently.
*/
- memory_region_init_alias(nvm_alias, NULL, "MSF2.eNVM",
- nvm, 0, s->envm_size);
+ memory_region_init_alias(nvm_alias, OBJECT(dev_soc), "MSF2.eNVM", nvm, 0,
+ s->envm_size);
memory_region_add_subregion(system_memory, ENVM_BASE_ADDRESS, nvm);
memory_region_add_subregion(system_memory, 0, nvm_alias);
- memory_region_init_ram(sram, NULL, "MSF2.eSRAM", s->esram_size,
+ memory_region_init_ram(sram, OBJECT(dev_soc), "MSF2.eSRAM", s->esram_size,
&error_fatal);
memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, sram);
diff --git a/hw/arm/nrf51_soc.c b/hw/arm/nrf51_soc.c
index 4817a76ae0..57eff63f0d 100644
--- a/hw/arm/nrf51_soc.c
+++ b/hw/arm/nrf51_soc.c
@@ -165,7 +165,7 @@ static void nrf51_soc_realize(DeviceState *dev_soc, Error **errp)
}
/* STUB Peripherals */
- memory_region_init_io(&s->clock, NULL, &clock_ops, NULL,
+ memory_region_init_io(&s->clock, OBJECT(dev_soc), &clock_ops, NULL,
"nrf51_soc.clock", 0x1000);
memory_region_add_subregion_overlap(&s->container,
NRF51_IOMEM_BASE, &s->clock, -1);
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 627fd446f5..ac6bd66a34 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -93,10 +93,10 @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
MemoryRegion *flash = g_new(MemoryRegion, 1);
MemoryRegion *flash_alias = g_new(MemoryRegion, 1);
- memory_region_init_ram(flash, NULL, "STM32F205.flash", FLASH_SIZE,
- &error_fatal);
- memory_region_init_alias(flash_alias, NULL, "STM32F205.flash.alias",
- flash, 0, FLASH_SIZE);
+ memory_region_init_ram(flash, OBJECT(dev_soc), "STM32F205.flash",
+ FLASH_SIZE, &error_fatal);
+ memory_region_init_alias(flash_alias, OBJECT(dev_soc),
+ "STM32F205.flash.alias", flash, 0, FLASH_SIZE);
memory_region_set_readonly(flash, true);
memory_region_set_readonly(flash_alias, true);
@@ -104,7 +104,7 @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
memory_region_add_subregion(system_memory, 0, flash_alias);
- memory_region_init_ram(sram, NULL, "STM32F205.sram", SRAM_SIZE,
+ memory_region_init_ram(sram, OBJECT(dev_soc), "STM32F205.sram", SRAM_SIZE,
&error_fatal);
memory_region_add_subregion(system_memory, SRAM_BASE_ADDRESS, sram);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index 9bcad97853..4dea1f95ff 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -95,14 +95,15 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
Error *err = NULL;
int i;
- memory_region_init_ram(&s->flash, NULL, "STM32F405.flash", FLASH_SIZE,
- &err);
+ memory_region_init_ram(&s->flash, OBJECT(dev_soc), "STM32F405.flash",
+ FLASH_SIZE, &err);
if (err != NULL) {
error_propagate(errp, err);
return;
}
- memory_region_init_alias(&s->flash_alias, NULL, "STM32F405.flash.alias",
- &s->flash, 0, FLASH_SIZE);
+ memory_region_init_alias(&s->flash_alias, OBJECT(dev_soc),
+ "STM32F405.flash.alias", &s->flash, 0,
+ FLASH_SIZE);
memory_region_set_readonly(&s->flash, true);
memory_region_set_readonly(&s->flash_alias, true);
@@ -110,8 +111,8 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
memory_region_add_subregion(system_memory, 0, &s->flash_alias);
- memory_region_init_ram(&s->sram, NULL, "STM32F405.sram", SRAM_SIZE,
- &err);
+ memory_region_init_ram(&s->sram, OBJECT(dev_soc), "STM32F405.sram",
+ SRAM_SIZE, &err);
if (err != NULL) {
error_propagate(errp, err);
return;
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index cab0160ae9..1b28e943cd 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -318,9 +318,9 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
ddr_low_size = XLNX_ZYNQMP_MAX_LOW_RAM_SIZE;
ddr_high_size = ram_size - XLNX_ZYNQMP_MAX_LOW_RAM_SIZE;
- memory_region_init_alias(&s->ddr_ram_high, NULL,
- "ddr-ram-high", s->ddr_ram,
- ddr_low_size, ddr_high_size);
+ memory_region_init_alias(&s->ddr_ram_high, OBJECT(dev),
+ "ddr-ram-high", s->ddr_ram, ddr_low_size,
+ ddr_high_size);
memory_region_add_subregion(get_system_memory(),
XLNX_ZYNQMP_HIGH_RAM_START,
&s->ddr_ram_high);
@@ -330,16 +330,15 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
ddr_low_size = ram_size;
}
- memory_region_init_alias(&s->ddr_ram_low, NULL,
- "ddr-ram-low", s->ddr_ram,
- 0, ddr_low_size);
+ memory_region_init_alias(&s->ddr_ram_low, OBJECT(dev), "ddr-ram-low",
+ s->ddr_ram, 0, ddr_low_size);
memory_region_add_subregion(get_system_memory(), 0, &s->ddr_ram_low);
/* Create the four OCM banks */
for (i = 0; i < XLNX_ZYNQMP_NUM_OCM_BANKS; i++) {
char *ocm_name = g_strdup_printf("zynqmp.ocm_ram_bank_%d", i);
- memory_region_init_ram(&s->ocm_ram[i], NULL, ocm_name,
+ memory_region_init_ram(&s->ocm_ram[i], OBJECT(dev), ocm_name,
XLNX_ZYNQMP_OCM_RAM_SIZE, &error_fatal);
memory_region_add_subregion(get_system_memory(),
XLNX_ZYNQMP_OCM_RAM_0_ADDRESS +
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/7] hw/char: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 1/7] scripts/coccinelle: Add a script to let devices own their MemoryRegions Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 4/7] hw/core: " Philippe Mathieu-Daudé
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/char/serial.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/hw/char/serial.c b/hw/char/serial.c
index 9298881af9..2ab8b69e03 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -997,7 +997,7 @@ static void serial_io_realize(DeviceState *dev, Error **errp)
return;
}
- memory_region_init_io(&s->io, NULL, &serial_io_ops, s, "serial", 8);
+ memory_region_init_io(&s->io, OBJECT(dev), &serial_io_ops, s, "serial", 8);
sysbus_init_mmio(SYS_BUS_DEVICE(sio), &s->io);
sysbus_init_irq(SYS_BUS_DEVICE(sio), &s->irq);
}
@@ -1106,8 +1106,9 @@ static void serial_mm_realize(DeviceState *dev, Error **errp)
return;
}
- memory_region_init_io(&s->io, NULL, &serial_mm_ops[smm->endianness], smm,
- "serial", 8 << smm->regshift);
+ memory_region_init_io(&s->io, OBJECT(dev),
+ &serial_mm_ops[smm->endianness], smm, "serial",
+ 8 << smm->regshift);
sysbus_init_mmio(SYS_BUS_DEVICE(smm), &s->io);
sysbus_init_irq(SYS_BUS_DEVICE(smm), &smm->serial.irq);
}
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 4/7] hw/core: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2020-02-21 17:30 ` [PATCH 3/7] hw/char: " Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 5/7] hw/display: " Philippe Mathieu-Daudé
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/core/platform-bus.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/core/platform-bus.c b/hw/core/platform-bus.c
index 22c5f76dd0..d494e5cec1 100644
--- a/hw/core/platform-bus.c
+++ b/hw/core/platform-bus.c
@@ -187,7 +187,8 @@ static void platform_bus_realize(DeviceState *dev, Error **errp)
d = SYS_BUS_DEVICE(dev);
pbus = PLATFORM_BUS_DEVICE(dev);
- memory_region_init(&pbus->mmio, NULL, "platform bus", pbus->mmio_size);
+ memory_region_init(&pbus->mmio, OBJECT(dev), "platform bus",
+ pbus->mmio_size);
sysbus_init_mmio(d, &pbus->mmio);
pbus->used_irqs = bitmap_new(pbus->num_irqs);
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 5/7] hw/display: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2020-02-21 17:30 ` [PATCH 4/7] hw/core: " Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 6/7] hw/dma: " Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 7/7] hw/riscv: " Philippe Mathieu-Daudé
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/display/cg3.c | 4 ++--
hw/display/g364fb.c | 5 +++--
hw/display/macfb.c | 4 ++--
hw/display/vmware_vga.c | 4 ++--
4 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 4fb67c6b1c..db2e291d16 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -315,8 +315,8 @@ static void cg3_realizefn(DeviceState *dev, Error **errp)
}
}
- memory_region_init_ram(&s->vram_mem, NULL, "cg3.vram", s->vram_size,
- &error_fatal);
+ memory_region_init_ram(&s->vram_mem, OBJECT(dev), "cg3.vram",
+ s->vram_size, &error_fatal);
memory_region_set_log(&s->vram_mem, true, DIRTY_MEMORY_VGA);
sysbus_init_mmio(sbd, &s->vram_mem);
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 55185c95c6..28785cceda 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -477,8 +477,9 @@ static void g364fb_init(DeviceState *dev, G364State *s)
s->con = graphic_console_init(dev, 0, &g364fb_ops, s);
- memory_region_init_io(&s->mem_ctrl, NULL, &g364fb_ctrl_ops, s, "ctrl", 0x180000);
- memory_region_init_ram_ptr(&s->mem_vram, NULL, "vram",
+ memory_region_init_io(&s->mem_ctrl, OBJECT(dev), &g364fb_ctrl_ops, s,
+ "ctrl", 0x180000);
+ memory_region_init_ram_ptr(&s->mem_vram, OBJECT(dev), "vram",
s->vram_size, s->vram);
vmstate_register_ram(&s->mem_vram, dev);
memory_region_set_log(&s->mem_vram, true, DIRTY_MEMORY_VGA);
diff --git a/hw/display/macfb.c b/hw/display/macfb.c
index 8bff16d535..b68faff4bb 100644
--- a/hw/display/macfb.c
+++ b/hw/display/macfb.c
@@ -362,8 +362,8 @@ static void macfb_common_realize(DeviceState *dev, MacfbState *s, Error **errp)
return;
}
- memory_region_init_io(&s->mem_ctrl, NULL, &macfb_ctrl_ops, s, "macfb-ctrl",
- 0x1000);
+ memory_region_init_io(&s->mem_ctrl, OBJECT(dev), &macfb_ctrl_ops, s,
+ "macfb-ctrl", 0x1000);
memory_region_init_ram_nomigrate(&s->mem_vram, OBJECT(s), "macfb-vram",
MACFB_VRAM_SIZE, errp);
diff --git a/hw/display/vmware_vga.c b/hw/display/vmware_vga.c
index 58ea82e3e5..79574e3c46 100644
--- a/hw/display/vmware_vga.c
+++ b/hw/display/vmware_vga.c
@@ -1238,8 +1238,8 @@ static void vmsvga_init(DeviceState *dev, struct vmsvga_state_s *s,
s->vga.con = graphic_console_init(dev, 0, &vmsvga_ops, s);
s->fifo_size = SVGA_FIFO_SIZE;
- memory_region_init_ram(&s->fifo_ram, NULL, "vmsvga.fifo", s->fifo_size,
- &error_fatal);
+ memory_region_init_ram(&s->fifo_ram, OBJECT(dev), "vmsvga.fifo",
+ s->fifo_size, &error_fatal);
s->fifo_ptr = memory_region_get_ram_ptr(&s->fifo_ram);
vga_common_init(&s->vga, OBJECT(dev));
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 6/7] hw/dma: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2020-02-21 17:30 ` [PATCH 5/7] hw/display: " Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 7/7] hw/riscv: " Philippe Mathieu-Daudé
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/dma/i8257.c | 2 +-
hw/dma/rc4030.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/dma/i8257.c b/hw/dma/i8257.c
index bad8debae4..ef15c06d77 100644
--- a/hw/dma/i8257.c
+++ b/hw/dma/i8257.c
@@ -553,7 +553,7 @@ static void i8257_realize(DeviceState *dev, Error **errp)
I8257State *d = I8257(dev);
int i;
- memory_region_init_io(&d->channel_io, NULL, &channel_io_ops, d,
+ memory_region_init_io(&d->channel_io, OBJECT(dev), &channel_io_ops, d,
"dma-chan", 8 << d->dshift);
memory_region_add_subregion(isa_address_space_io(isa),
d->base, &d->channel_io);
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
index c4cf8236f4..f62eb3d2a3 100644
--- a/hw/dma/rc4030.c
+++ b/hw/dma/rc4030.c
@@ -679,9 +679,9 @@ static void rc4030_realize(DeviceState *dev, Error **errp)
s->periodic_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
rc4030_periodic_timer, s);
- memory_region_init_io(&s->iomem_chipset, NULL, &rc4030_ops, s,
+ memory_region_init_io(&s->iomem_chipset, o, &rc4030_ops, s,
"rc4030.chipset", 0x300);
- memory_region_init_io(&s->iomem_jazzio, NULL, &jazzio_ops, s,
+ memory_region_init_io(&s->iomem_jazzio, o, &jazzio_ops, s,
"rc4030.jazzio", 0x00001000);
memory_region_init_iommu(&s->dma_mr, sizeof(s->dma_mr),
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 7/7] hw/riscv: Let devices own the MemoryRegion they create
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2020-02-21 17:30 ` [PATCH 6/7] hw/dma: " Philippe Mathieu-Daudé
@ 2020-02-21 17:30 ` Philippe Mathieu-Daudé
6 siblings, 0 replies; 9+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-21 17:30 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin,
Mark Cave-Ayland, Alistair Francis, Edgar E. Iglesias,
Jean-Christophe Dubois, Hervé Poussineau, Joel Stanley,
Marc-André Lureau, Aleksandar Rikalo,
Philippe Mathieu-Daudé,
Alistair Francis, qemu-arm, Peter Chubb, qemu-riscv,
Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
Subbaraya Sundeep, Palmer Dabbelt, Paolo Bonzini
To avoid orphean memory regions being added in the /unattached
QOM container, use the memory_region_owner_nonnull.cocci script
to set the correct ownership.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
hw/riscv/sifive_e.c | 8 ++++----
hw/riscv/sifive_u.c | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index 8a6b0348df..583015c247 100644
--- a/hw/riscv/sifive_e.c
+++ b/hw/riscv/sifive_e.c
@@ -145,8 +145,8 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp)
&error_abort);
/* Mask ROM */
- memory_region_init_rom(&s->mask_rom, NULL, "riscv.sifive.e.mrom",
- memmap[SIFIVE_E_MROM].size, &error_fatal);
+ memory_region_init_rom(&s->mask_rom, OBJECT(dev), "riscv.sifive.e.mrom",
+ memmap[SIFIVE_E_MROM].size, &error_fatal);
memory_region_add_subregion(sys_mem,
memmap[SIFIVE_E_MROM].base, &s->mask_rom);
@@ -208,8 +208,8 @@ static void riscv_sifive_e_soc_realize(DeviceState *dev, Error **errp)
memmap[SIFIVE_E_PWM2].base, memmap[SIFIVE_E_PWM2].size);
/* Flash memory */
- memory_region_init_ram(&s->xip_mem, NULL, "riscv.sifive.e.xip",
- memmap[SIFIVE_E_XIP].size, &error_fatal);
+ memory_region_init_ram(&s->xip_mem, OBJECT(dev), "riscv.sifive.e.xip",
+ memmap[SIFIVE_E_XIP].size, &error_fatal);
memory_region_set_readonly(&s->xip_mem, true);
memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_XIP].base,
&s->xip_mem);
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index 0e12b3ccef..592830a3a2 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -497,7 +497,7 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp)
&error_abort);
/* boot rom */
- memory_region_init_rom(mask_rom, NULL, "riscv.sifive.u.mrom",
+ memory_region_init_rom(mask_rom, OBJECT(dev), "riscv.sifive.u.mrom",
memmap[SIFIVE_U_MROM].size, &error_fatal);
memory_region_add_subregion(system_memory, memmap[SIFIVE_U_MROM].base,
mask_rom);
@@ -511,7 +511,7 @@ static void riscv_sifive_u_soc_realize(DeviceState *dev, Error **errp)
* leave it enabled all the time. This won't break anything, but will be
* too generous to misbehaving guests.
*/
- memory_region_init_ram(l2lim_mem, NULL, "riscv.sifive.u.l2lim",
+ memory_region_init_ram(l2lim_mem, OBJECT(dev), "riscv.sifive.u.l2lim",
memmap[SIFIVE_U_L2LIM].size, &error_fatal);
memory_region_add_subregion(system_memory, memmap[SIFIVE_U_L2LIM].base,
l2lim_mem);
--
2.21.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create
2020-02-21 17:30 ` [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
@ 2020-02-21 17:36 ` Peter Maydell
0 siblings, 0 replies; 9+ messages in thread
From: Peter Maydell @ 2020-02-21 17:36 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Laurent Vivier, open list:RISC-V, Edgar E. Iglesias,
Sagar Karandikar, Michael S. Tsirkin, Igor Mitsyanko,
Bastian Koppelmann, Alistair Francis, Mark Cave-Ayland,
QEMU Developers, Subbaraya Sundeep, Peter Chubb, qemu-arm,
Alistair Francis, Joel Stanley, Marc-André Lureau,
Paolo Bonzini, Aleksandar Rikalo, Jean-Christophe Dubois,
Palmer Dabbelt, Hervé Poussineau
On Fri, 21 Feb 2020 at 17:31, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> To avoid orphean memory regions being added in the /unattached
("orphan")
> QOM container, use the memory_region_owner_nonnull.cocci script
> to set the correct ownership.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> hw/arm/exynos4210.c | 14 +++++++-------
> hw/arm/fsl-imx25.c | 14 +++++++-------
> hw/arm/fsl-imx31.c | 10 +++++-----
> hw/arm/fsl-imx6.c | 10 +++++-----
> hw/arm/fsl-imx6ul.c | 14 +++++++-------
> hw/arm/msf2-soc.c | 8 ++++----
> hw/arm/nrf51_soc.c | 2 +-
> hw/arm/stm32f205_soc.c | 10 +++++-----
> hw/arm/stm32f405_soc.c | 13 +++++++------
> hw/arm/xlnx-zynqmp.c | 13 ++++++-------
> 10 files changed, 54 insertions(+), 54 deletions(-)
>
> diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
> index 59a27bdd68..d4b05336ee 100644
> --- a/hw/arm/exynos4210.c
> +++ b/hw/arm/exynos4210.c
> @@ -305,28 +305,28 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
> /*** Memory ***/
>
> /* Chip-ID and OMR */
> - memory_region_init_io(&s->chipid_mem, NULL, &exynos4210_chipid_and_omr_ops,
> - NULL, "exynos4210.chipid", sizeof(chipid_and_omr));
> + memory_region_init_io(&s->chipid_mem, OBJECT(socdev),
> + &exynos4210_chipid_and_omr_ops, NULL,
> + "exynos4210.chipid", sizeof(chipid_and_omr));
> memory_region_add_subregion(system_mem, EXYNOS4210_CHIPID_ADDR,
> &s->chipid_mem);
>
> /* Internal ROM */
> - memory_region_init_ram(&s->irom_mem, NULL, "exynos4210.irom",
> + memory_region_init_ram(&s->irom_mem, OBJECT(socdev), "exynos4210.irom",
> EXYNOS4210_IROM_SIZE, &error_fatal);
I have a feeling that the owner of a RAM memory region affects
the name we use for the underlying ramblock, which in turn
is used in the on-the-wire data stream in migration, which means
that changing ownership breaks migration compatibility.
That's probably OK in most cases as we don't care too much
about migration-compat on most boards, but I think it does
mean that you want to keep those changes separated out from
the ones for IO and alias regions, which I think shouldn't
have visible effects.
thanks
-- PMM
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-02-21 17:41 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-21 17:30 [PATCH 0/7] hw: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 1/7] scripts/coccinelle: Add a script to let devices own their MemoryRegions Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 2/7] hw/arm: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-21 17:36 ` Peter Maydell
2020-02-21 17:30 ` [PATCH 3/7] hw/char: " Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 4/7] hw/core: " Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 5/7] hw/display: " Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 6/7] hw/dma: " Philippe Mathieu-Daudé
2020-02-21 17:30 ` [PATCH 7/7] hw/riscv: " Philippe Mathieu-Daudé
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).