All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND v2 00/32] hw: Sanitize various MemoryRegion calls
@ 2020-02-24 20:55 ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Resending after being kicked by gsmtp...

 4.3.0 Temporary System Problem.  Try again later (10). t81sm863436wmg.6 - gsmtp

This series simplifies various memory API calls when creating
memory regions.

Most of the patches are generated with Coccinelle semantic
patches (provided).
Few more cleanups added while writting the patches have been
added.

v1 was 'Let devices own the MemoryRegion they create':
https://www.mail-archive.com/qemu-devel@nongnu.org/msg681960.html

Since v1:
- understood a bit more Peter Maydell comments regarding
  how memory devices are migrated.

Supersedes: <20200221173049.18134-1-philmd@redhat.com>

Philippe Mathieu-Daudé (32):
  memory: Correctly return alias region type
  memory: Simplify memory_region_init_rom_nomigrate() to ease review
  scripts/cocci: Rename memory-region-{init-ram -> housekeeping}
  scripts/cocci: Patch to replace memory_region_init_{ram,readonly ->
    rom}
  hw/arm: Use memory_region_init_rom() with read-only regions
  hw/display: Use memory_region_init_rom() with read-only regions
  hw/mips: Use memory_region_init_rom() with read-only regions
  hw/m68k: Use memory_region_init_rom() with read-only regions
  hw/net: Use memory_region_init_rom() with read-only regions
  hw/pci-host: Use memory_region_init_rom() with read-only regions
  hw/ppc: Use memory_region_init_rom() with read-only regions
  hw/riscv: Use memory_region_init_rom() with read-only regions
  hw/sh4: Use memory_region_init_rom() with read-only regions
  hw/sparc: Use memory_region_init_rom() with read-only regions
  scripts/cocci: Patch to detect potential use of memory_region_init_rom
  hw/arm/stm32: Use memory_region_init_rom() with read-only regions
  hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
  hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
  hw/i386/pc_sysfw: Remove unused 'ram_size' argument
  scripts/cocci: Patch to remove unnecessary
    memory_region_set_readonly()
  hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias
  scripts/cocci: Patch 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/input/milkymist-softusb: Remove unused 'pmem_ptr' field
  hw/input/milkymist-softusb: Let devices own the MemoryRegion they
    create
  hw/net/milkymist-minimac2: Let devices own the MemoryRegion they
    create
  hw/block/onenand: Let devices own the MemoryRegion they create

 .../memory-region-housekeeping.cocci          | 159 ++++++++++++++++++
 .../coccinelle/memory-region-init-ram.cocci   |  38 -----
 hw/arm/exynos4210.c                           |  14 +-
 hw/arm/fsl-imx25.c                            |  10 +-
 hw/arm/fsl-imx31.c                            |   6 +-
 hw/arm/fsl-imx6.c                             |   6 +-
 hw/arm/fsl-imx6ul.c                           |   9 +-
 hw/arm/mainstone.c                            |   3 +-
 hw/arm/msf2-soc.c                             |   6 +-
 hw/arm/nrf51_soc.c                            |   2 +-
 hw/arm/omap_sx1.c                             |   6 +-
 hw/arm/palm.c                                 |   3 +-
 hw/arm/spitz.c                                |   3 +-
 hw/arm/stellaris.c                            |   3 +-
 hw/arm/stm32f205_soc.c                        |  11 +-
 hw/arm/stm32f405_soc.c                        |  12 +-
 hw/arm/tosa.c                                 |   3 +-
 hw/arm/xlnx-zynqmp.c                          |  11 +-
 hw/block/onenand.c                            |   7 +-
 hw/char/serial.c                              |   7 +-
 hw/core/platform-bus.c                        |   3 +-
 hw/display/cg3.c                              |   5 +-
 hw/display/g364fb.c                           |   3 +-
 hw/display/macfb.c                            |   4 +-
 hw/display/tcx.c                              |   5 +-
 hw/dma/i8257.c                                |   2 +-
 hw/dma/rc4030.c                               |   4 +-
 hw/i386/pc_sysfw.c                            |  29 +---
 hw/input/milkymist-softusb.c                  |  12 +-
 hw/m68k/q800.c                                |   3 +-
 hw/mips/mips_fulong2e.c                       |   3 +-
 hw/mips/mips_jazz.c                           |   6 +-
 hw/mips/mips_mipssim.c                        |   3 +-
 hw/mips/mips_r4k.c                            |   3 +-
 hw/net/dp8393x.c                              |   5 +-
 hw/net/milkymist-minimac2.c                   |   8 +-
 hw/pci-host/prep.c                            |   5 +-
 hw/ppc/mac_newworld.c                         |   3 +-
 hw/ppc/mac_oldworld.c                         |   3 +-
 hw/ppc/ppc405_boards.c                        |   6 +-
 hw/riscv/sifive_e.c                           |   9 +-
 hw/riscv/sifive_u.c                           |   2 +-
 hw/sh4/shix.c                                 |   3 +-
 hw/sparc/leon3.c                              |   3 +-
 memory.c                                      |  16 +-
 MAINTAINERS                                   |   1 +
 46 files changed, 268 insertions(+), 200 deletions(-)
 create mode 100644 scripts/coccinelle/memory-region-housekeeping.cocci
 delete mode 100644 scripts/coccinelle/memory-region-init-ram.cocci

-- 
2.21.1



^ permalink raw reply	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 00/32] hw: Sanitize various MemoryRegion calls
@ 2020-02-24 20:55 ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Resending after being kicked by gsmtp...

 4.3.0 Temporary System Problem.  Try again later (10). t81sm863436wmg.6 - gsmtp

This series simplifies various memory API calls when creating
memory regions.

Most of the patches are generated with Coccinelle semantic
patches (provided).
Few more cleanups added while writting the patches have been
added.

v1 was 'Let devices own the MemoryRegion they create':
https://www.mail-archive.com/qemu-devel@nongnu.org/msg681960.html

Since v1:
- understood a bit more Peter Maydell comments regarding
  how memory devices are migrated.

Supersedes: <20200221173049.18134-1-philmd@redhat.com>

Philippe Mathieu-Daudé (32):
  memory: Correctly return alias region type
  memory: Simplify memory_region_init_rom_nomigrate() to ease review
  scripts/cocci: Rename memory-region-{init-ram -> housekeeping}
  scripts/cocci: Patch to replace memory_region_init_{ram,readonly ->
    rom}
  hw/arm: Use memory_region_init_rom() with read-only regions
  hw/display: Use memory_region_init_rom() with read-only regions
  hw/mips: Use memory_region_init_rom() with read-only regions
  hw/m68k: Use memory_region_init_rom() with read-only regions
  hw/net: Use memory_region_init_rom() with read-only regions
  hw/pci-host: Use memory_region_init_rom() with read-only regions
  hw/ppc: Use memory_region_init_rom() with read-only regions
  hw/riscv: Use memory_region_init_rom() with read-only regions
  hw/sh4: Use memory_region_init_rom() with read-only regions
  hw/sparc: Use memory_region_init_rom() with read-only regions
  scripts/cocci: Patch to detect potential use of memory_region_init_rom
  hw/arm/stm32: Use memory_region_init_rom() with read-only regions
  hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
  hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
  hw/i386/pc_sysfw: Remove unused 'ram_size' argument
  scripts/cocci: Patch to remove unnecessary
    memory_region_set_readonly()
  hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias
  scripts/cocci: Patch 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/input/milkymist-softusb: Remove unused 'pmem_ptr' field
  hw/input/milkymist-softusb: Let devices own the MemoryRegion they
    create
  hw/net/milkymist-minimac2: Let devices own the MemoryRegion they
    create
  hw/block/onenand: Let devices own the MemoryRegion they create

 .../memory-region-housekeeping.cocci          | 159 ++++++++++++++++++
 .../coccinelle/memory-region-init-ram.cocci   |  38 -----
 hw/arm/exynos4210.c                           |  14 +-
 hw/arm/fsl-imx25.c                            |  10 +-
 hw/arm/fsl-imx31.c                            |   6 +-
 hw/arm/fsl-imx6.c                             |   6 +-
 hw/arm/fsl-imx6ul.c                           |   9 +-
 hw/arm/mainstone.c                            |   3 +-
 hw/arm/msf2-soc.c                             |   6 +-
 hw/arm/nrf51_soc.c                            |   2 +-
 hw/arm/omap_sx1.c                             |   6 +-
 hw/arm/palm.c                                 |   3 +-
 hw/arm/spitz.c                                |   3 +-
 hw/arm/stellaris.c                            |   3 +-
 hw/arm/stm32f205_soc.c                        |  11 +-
 hw/arm/stm32f405_soc.c                        |  12 +-
 hw/arm/tosa.c                                 |   3 +-
 hw/arm/xlnx-zynqmp.c                          |  11 +-
 hw/block/onenand.c                            |   7 +-
 hw/char/serial.c                              |   7 +-
 hw/core/platform-bus.c                        |   3 +-
 hw/display/cg3.c                              |   5 +-
 hw/display/g364fb.c                           |   3 +-
 hw/display/macfb.c                            |   4 +-
 hw/display/tcx.c                              |   5 +-
 hw/dma/i8257.c                                |   2 +-
 hw/dma/rc4030.c                               |   4 +-
 hw/i386/pc_sysfw.c                            |  29 +---
 hw/input/milkymist-softusb.c                  |  12 +-
 hw/m68k/q800.c                                |   3 +-
 hw/mips/mips_fulong2e.c                       |   3 +-
 hw/mips/mips_jazz.c                           |   6 +-
 hw/mips/mips_mipssim.c                        |   3 +-
 hw/mips/mips_r4k.c                            |   3 +-
 hw/net/dp8393x.c                              |   5 +-
 hw/net/milkymist-minimac2.c                   |   8 +-
 hw/pci-host/prep.c                            |   5 +-
 hw/ppc/mac_newworld.c                         |   3 +-
 hw/ppc/mac_oldworld.c                         |   3 +-
 hw/ppc/ppc405_boards.c                        |   6 +-
 hw/riscv/sifive_e.c                           |   9 +-
 hw/riscv/sifive_u.c                           |   2 +-
 hw/sh4/shix.c                                 |   3 +-
 hw/sparc/leon3.c                              |   3 +-
 memory.c                                      |  16 +-
 MAINTAINERS                                   |   1 +
 46 files changed, 268 insertions(+), 200 deletions(-)
 create mode 100644 scripts/coccinelle/memory-region-housekeeping.cocci
 delete mode 100644 scripts/coccinelle/memory-region-init-ram.cocci

-- 
2.21.1



^ permalink raw reply	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 01/32] memory: Correctly return alias region type
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, qemu-trivial,
	Magnus Damm, Hervé Poussineau, Joel Stanley,
	Marc-André Lureau, Aleksandar Rikalo, David Gibson,
	Artyom Tarasenko, Eduardo Habkost, Jean-Christophe Dubois,
	Alistair Francis, Fabien Chouteau, qemu-arm, Peter Chubb,
	Palmer Dabbelt, Richard Henderson, Kevin Wolf, qemu-riscv,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier, Max Reitz,
	Michael Walle, qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Since memory region aliases are neither rom nor ram, they are
described as i/o, which is often incorrect. Return instead the
type of the original region we are aliasing.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 memory.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/memory.c b/memory.c
index aeaa8dcc9e..ce1179874e 100644
--- a/memory.c
+++ b/memory.c
@@ -2818,6 +2818,9 @@ void address_space_destroy(AddressSpace *as)
 
 static const char *memory_region_type(MemoryRegion *mr)
 {
+    if (mr->alias) {
+        return memory_region_type(mr->alias);
+    }
     if (memory_region_is_ram_device(mr)) {
         return "ramd";
     } else if (memory_region_is_romd(mr)) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 01/32] memory: Correctly return alias region type
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau,
	qemu-trivial

Since memory region aliases are neither rom nor ram, they are
described as i/o, which is often incorrect. Return instead the
type of the original region we are aliasing.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 memory.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/memory.c b/memory.c
index aeaa8dcc9e..ce1179874e 100644
--- a/memory.c
+++ b/memory.c
@@ -2818,6 +2818,9 @@ void address_space_destroy(AddressSpace *as)
 
 static const char *memory_region_type(MemoryRegion *mr)
 {
+    if (mr->alias) {
+        return memory_region_type(mr->alias);
+    }
     if (memory_region_is_ram_device(mr)) {
         return "ramd";
     } else if (memory_region_is_romd(mr)) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 02/32] memory: Simplify memory_region_init_rom_nomigrate() to ease review
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

memory_region_init_rom_nomigrate() has the same content than
memory_region_init_ram_shared_nomigrate(), with setting the
readonly mode. The code is easier to review as creating a
readonly ram/shared/nomigrate region.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 memory.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/memory.c b/memory.c
index ce1179874e..6a327a54ed 100644
--- a/memory.c
+++ b/memory.c
@@ -1659,19 +1659,8 @@ void memory_region_init_rom_nomigrate(MemoryRegion *mr,
                                       uint64_t size,
                                       Error **errp)
 {
-    Error *err = NULL;
-    memory_region_init(mr, owner, name, size);
-    mr->ram = true;
+    memory_region_init_ram_shared_nomigrate(mr, owner, name, size, false, errp);
     mr->readonly = true;
-    mr->terminates = true;
-    mr->destructor = memory_region_destructor_ram;
-    mr->ram_block = qemu_ram_alloc(size, false, mr, &err);
-    mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
-    if (err) {
-        mr->size = int128_zero();
-        object_unparent(OBJECT(mr));
-        error_propagate(errp, err);
-    }
 }
 
 void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 02/32] memory: Simplify memory_region_init_rom_nomigrate() to ease review
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

memory_region_init_rom_nomigrate() has the same content than
memory_region_init_ram_shared_nomigrate(), with setting the
readonly mode. The code is easier to review as creating a
readonly ram/shared/nomigrate region.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 memory.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/memory.c b/memory.c
index ce1179874e..6a327a54ed 100644
--- a/memory.c
+++ b/memory.c
@@ -1659,19 +1659,8 @@ void memory_region_init_rom_nomigrate(MemoryRegion *mr,
                                       uint64_t size,
                                       Error **errp)
 {
-    Error *err = NULL;
-    memory_region_init(mr, owner, name, size);
-    mr->ram = true;
+    memory_region_init_ram_shared_nomigrate(mr, owner, name, size, false, errp);
     mr->readonly = true;
-    mr->terminates = true;
-    mr->destructor = memory_region_destructor_ram;
-    mr->ram_block = qemu_ram_alloc(size, false, mr, &err);
-    mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
-    if (err) {
-        mr->size = int128_zero();
-        object_unparent(OBJECT(mr));
-        error_propagate(errp, err);
-    }
 }
 
 void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 03/32] scripts/cocci: Rename memory-region-{init-ram -> housekeeping}
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

As we are going to add various semantic changes related to the memory
region API, rename this script to be more generic.
Add a 'usage' header, and an entry in MAINTAINERS to avoid checkpatch
warning.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 ...t-ram.cocci => memory-region-housekeeping.cocci} | 13 +++++++++++++
 MAINTAINERS                                         |  1 +
 2 files changed, 14 insertions(+)
 rename scripts/coccinelle/{memory-region-init-ram.cocci => memory-region-housekeeping.cocci} (84%)

diff --git a/scripts/coccinelle/memory-region-init-ram.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
similarity index 84%
rename from scripts/coccinelle/memory-region-init-ram.cocci
rename to scripts/coccinelle/memory-region-housekeeping.cocci
index d290150872..3699c1017e 100644
--- a/scripts/coccinelle/memory-region-init-ram.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -1,3 +1,16 @@
+/*
+  Usage:
+
+    spatch \
+        --macro-file scripts/cocci-macro-file.h \
+        --sp-file scripts/coccinelle/memory-region-housekeeping.cocci \
+        --keep-comments \
+        --in-place \
+        --dir .
+
+*/
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
diff --git a/MAINTAINERS b/MAINTAINERS
index 195dd58cac..316a8edbb6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1998,6 +1998,7 @@ F: include/exec/ramblock.h
 F: memory.c
 F: include/exec/memory-internal.h
 F: exec.c
+F: scripts/coccinelle/memory-region-housekeeping.cocci
 
 SPICE
 M: Gerd Hoffmann <kraxel@redhat.com>
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 03/32] scripts/cocci: Rename memory-region-{init-ram -> housekeeping}
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

As we are going to add various semantic changes related to the memory
region API, rename this script to be more generic.
Add a 'usage' header, and an entry in MAINTAINERS to avoid checkpatch
warning.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 ...t-ram.cocci => memory-region-housekeeping.cocci} | 13 +++++++++++++
 MAINTAINERS                                         |  1 +
 2 files changed, 14 insertions(+)
 rename scripts/coccinelle/{memory-region-init-ram.cocci => memory-region-housekeeping.cocci} (84%)

diff --git a/scripts/coccinelle/memory-region-init-ram.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
similarity index 84%
rename from scripts/coccinelle/memory-region-init-ram.cocci
rename to scripts/coccinelle/memory-region-housekeeping.cocci
index d290150872..3699c1017e 100644
--- a/scripts/coccinelle/memory-region-init-ram.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -1,3 +1,16 @@
+/*
+  Usage:
+
+    spatch \
+        --macro-file scripts/cocci-macro-file.h \
+        --sp-file scripts/coccinelle/memory-region-housekeeping.cocci \
+        --keep-comments \
+        --in-place \
+        --dir .
+
+*/
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
diff --git a/MAINTAINERS b/MAINTAINERS
index 195dd58cac..316a8edbb6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1998,6 +1998,7 @@ F: include/exec/ramblock.h
 F: memory.c
 F: include/exec/memory-internal.h
 F: exec.c
+F: scripts/coccinelle/memory-region-housekeeping.cocci
 
 SPICE
 M: Gerd Hoffmann <kraxel@redhat.com>
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 04/32] scripts/cocci: Patch to replace memory_region_init_{ram, readonly -> rom}
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Add a semantic patch to replace memory_region_init_ram(readonly)
by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../memory-region-housekeeping.cocci           | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 3699c1017e..ee3923d369 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -11,6 +11,24 @@
 */
 
 
+// Replace memory_region_init_ram(readonly) by memory_region_init_rom()
+@@
+expression E1, E2, E3, E4, E5;
+symbol true;
+@@
+(
+- memory_region_init_ram(E1, E2, E3, E4, E5);
++ memory_region_init_rom(E1, E2, E3, E4, E5);
+  ... WHEN != E1
+- memory_region_set_readonly(E1, true);
+|
+- memory_region_init_ram_nomigrate(E1, E2, E3, E4, E5);
++ memory_region_init_rom_nomigrate(E1, E2, E3, E4, E5);
+  ... WHEN != E1
+- memory_region_set_readonly(E1, true);
+)
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 04/32] scripts/cocci: Patch to replace memory_region_init_{ram, readonly -> rom}
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Add a semantic patch to replace memory_region_init_ram(readonly)
by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../memory-region-housekeeping.cocci           | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 3699c1017e..ee3923d369 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -11,6 +11,24 @@
 */
 
 
+// Replace memory_region_init_ram(readonly) by memory_region_init_rom()
+@@
+expression E1, E2, E3, E4, E5;
+symbol true;
+@@
+(
+- memory_region_init_ram(E1, E2, E3, E4, E5);
++ memory_region_init_rom(E1, E2, E3, E4, E5);
+  ... WHEN != E1
+- memory_region_set_readonly(E1, true);
+|
+- memory_region_init_ram_nomigrate(E1, E2, E3, E4, E5);
++ memory_region_init_rom_nomigrate(E1, E2, E3, E4, E5);
+  ... WHEN != E1
+- memory_region_set_readonly(E1, true);
+)
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 05/32] hw/arm: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c | 3 +--
 hw/arm/mainstone.c  | 3 +--
 hw/arm/omap_sx1.c   | 6 ++----
 hw/arm/palm.c       | 3 +--
 hw/arm/spitz.c      | 3 +--
 hw/arm/stellaris.c  | 3 +--
 hw/arm/tosa.c       | 3 +--
 7 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 59a27bdd68..3af6502a5e 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -311,9 +311,8 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
                                 &s->chipid_mem);
 
     /* Internal ROM */
-    memory_region_init_ram(&s->irom_mem, NULL, "exynos4210.irom",
+    memory_region_init_rom(&s->irom_mem, NULL, "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 */
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 6e64dfab50..05a806b422 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -125,9 +125,8 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
     /* Setup CPU & memory */
     mpu = pxa270_init(address_space_mem, mainstone_binfo.ram_size,
                       machine->cpu_type);
-    memory_region_init_ram(rom, NULL, "mainstone.rom", MAINSTONE_ROM,
+    memory_region_init_rom(rom, NULL, "mainstone.rom", MAINSTONE_ROM,
                            &error_fatal);
-    memory_region_set_readonly(rom, true);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
 #ifdef TARGET_WORDS_BIGENDIAN
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index be245714db..6c3fd1b271 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -126,9 +126,8 @@ static void sx1_init(MachineState *machine, const int version)
     mpu = omap310_mpu_init(dram, machine->cpu_type);
 
     /* External Flash (EMIFS) */
-    memory_region_init_ram(flash, NULL, "omap_sx1.flash0-0", flash_size,
+    memory_region_init_rom(flash, NULL, "omap_sx1.flash0-0", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(address_space, OMAP_CS0_BASE, flash);
 
     memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val,
@@ -168,9 +167,8 @@ static void sx1_init(MachineState *machine, const int version)
     if ((version == 1) &&
             (dinfo = drive_get(IF_PFLASH, 0, fl_idx)) != NULL) {
         MemoryRegion *flash_1 = g_new(MemoryRegion, 1);
-        memory_region_init_ram(flash_1, NULL, "omap_sx1.flash1-0",
+        memory_region_init_rom(flash_1, NULL, "omap_sx1.flash1-0",
                                flash1_size, &error_fatal);
-        memory_region_set_readonly(flash_1, true);
         memory_region_add_subregion(address_space, OMAP_CS1_BASE, flash_1);
 
         memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val,
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 72eca8cc55..265d5891a6 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -206,9 +206,8 @@ static void palmte_init(MachineState *machine)
     mpu = omap310_mpu_init(dram, machine->cpu_type);
 
     /* External Flash (EMIFS) */
-    memory_region_init_ram(flash, NULL, "palmte.flash", flash_size,
+    memory_region_init_rom(flash, NULL, "palmte.flash", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(address_space_mem, OMAP_CS0_BASE, flash);
 
     memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val, "palmte-cs0",
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index e001088103..1d27399721 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -924,8 +924,7 @@ static void spitz_common_init(MachineState *machine,
 
     sl_flash_register(mpu, (model == spitz) ? FLASH_128M : FLASH_1024M);
 
-    memory_region_init_ram(rom, NULL, "spitz.rom", SPITZ_ROM, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "spitz.rom", SPITZ_ROM, &error_fatal);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
     /* Setup peripherals */
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 221a78674e..d136ba1a92 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1300,9 +1300,8 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     sram_size = ((board->dc0 >> 18) + 1) * 1024;
 
     /* Flash programming is done via the SCU, so pretend it is ROM.  */
-    memory_region_init_ram(flash, NULL, "stellaris.flash", flash_size,
+    memory_region_init_rom(flash, NULL, "stellaris.flash", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(system_memory, 0, flash);
 
     memory_region_init_ram(sram, NULL, "stellaris.sram", sram_size,
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 4d95a1f3e2..5dee2d76c6 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -226,8 +226,7 @@ static void tosa_init(MachineState *machine)
 
     mpu = pxa255_init(address_space_mem, tosa_binfo.ram_size);
 
-    memory_region_init_ram(rom, NULL, "tosa.rom", TOSA_ROM, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "tosa.rom", TOSA_ROM, &error_fatal);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
     tmio = tc6393xb_init(address_space_mem, 0x10000000,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 05/32] hw/arm: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c | 3 +--
 hw/arm/mainstone.c  | 3 +--
 hw/arm/omap_sx1.c   | 6 ++----
 hw/arm/palm.c       | 3 +--
 hw/arm/spitz.c      | 3 +--
 hw/arm/stellaris.c  | 3 +--
 hw/arm/tosa.c       | 3 +--
 7 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 59a27bdd68..3af6502a5e 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -311,9 +311,8 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
                                 &s->chipid_mem);
 
     /* Internal ROM */
-    memory_region_init_ram(&s->irom_mem, NULL, "exynos4210.irom",
+    memory_region_init_rom(&s->irom_mem, NULL, "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 */
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 6e64dfab50..05a806b422 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -125,9 +125,8 @@ static void mainstone_common_init(MemoryRegion *address_space_mem,
     /* Setup CPU & memory */
     mpu = pxa270_init(address_space_mem, mainstone_binfo.ram_size,
                       machine->cpu_type);
-    memory_region_init_ram(rom, NULL, "mainstone.rom", MAINSTONE_ROM,
+    memory_region_init_rom(rom, NULL, "mainstone.rom", MAINSTONE_ROM,
                            &error_fatal);
-    memory_region_set_readonly(rom, true);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
 #ifdef TARGET_WORDS_BIGENDIAN
diff --git a/hw/arm/omap_sx1.c b/hw/arm/omap_sx1.c
index be245714db..6c3fd1b271 100644
--- a/hw/arm/omap_sx1.c
+++ b/hw/arm/omap_sx1.c
@@ -126,9 +126,8 @@ static void sx1_init(MachineState *machine, const int version)
     mpu = omap310_mpu_init(dram, machine->cpu_type);
 
     /* External Flash (EMIFS) */
-    memory_region_init_ram(flash, NULL, "omap_sx1.flash0-0", flash_size,
+    memory_region_init_rom(flash, NULL, "omap_sx1.flash0-0", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(address_space, OMAP_CS0_BASE, flash);
 
     memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val,
@@ -168,9 +167,8 @@ static void sx1_init(MachineState *machine, const int version)
     if ((version == 1) &&
             (dinfo = drive_get(IF_PFLASH, 0, fl_idx)) != NULL) {
         MemoryRegion *flash_1 = g_new(MemoryRegion, 1);
-        memory_region_init_ram(flash_1, NULL, "omap_sx1.flash1-0",
+        memory_region_init_rom(flash_1, NULL, "omap_sx1.flash1-0",
                                flash1_size, &error_fatal);
-        memory_region_set_readonly(flash_1, true);
         memory_region_add_subregion(address_space, OMAP_CS1_BASE, flash_1);
 
         memory_region_init_io(&cs[1], NULL, &static_ops, &cs1val,
diff --git a/hw/arm/palm.c b/hw/arm/palm.c
index 72eca8cc55..265d5891a6 100644
--- a/hw/arm/palm.c
+++ b/hw/arm/palm.c
@@ -206,9 +206,8 @@ static void palmte_init(MachineState *machine)
     mpu = omap310_mpu_init(dram, machine->cpu_type);
 
     /* External Flash (EMIFS) */
-    memory_region_init_ram(flash, NULL, "palmte.flash", flash_size,
+    memory_region_init_rom(flash, NULL, "palmte.flash", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(address_space_mem, OMAP_CS0_BASE, flash);
 
     memory_region_init_io(&cs[0], NULL, &static_ops, &cs0val, "palmte-cs0",
diff --git a/hw/arm/spitz.c b/hw/arm/spitz.c
index e001088103..1d27399721 100644
--- a/hw/arm/spitz.c
+++ b/hw/arm/spitz.c
@@ -924,8 +924,7 @@ static void spitz_common_init(MachineState *machine,
 
     sl_flash_register(mpu, (model == spitz) ? FLASH_128M : FLASH_1024M);
 
-    memory_region_init_ram(rom, NULL, "spitz.rom", SPITZ_ROM, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "spitz.rom", SPITZ_ROM, &error_fatal);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
     /* Setup peripherals */
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 221a78674e..d136ba1a92 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1300,9 +1300,8 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     sram_size = ((board->dc0 >> 18) + 1) * 1024;
 
     /* Flash programming is done via the SCU, so pretend it is ROM.  */
-    memory_region_init_ram(flash, NULL, "stellaris.flash", flash_size,
+    memory_region_init_rom(flash, NULL, "stellaris.flash", flash_size,
                            &error_fatal);
-    memory_region_set_readonly(flash, true);
     memory_region_add_subregion(system_memory, 0, flash);
 
     memory_region_init_ram(sram, NULL, "stellaris.sram", sram_size,
diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c
index 4d95a1f3e2..5dee2d76c6 100644
--- a/hw/arm/tosa.c
+++ b/hw/arm/tosa.c
@@ -226,8 +226,7 @@ static void tosa_init(MachineState *machine)
 
     mpu = pxa255_init(address_space_mem, tosa_binfo.ram_size);
 
-    memory_region_init_ram(rom, NULL, "tosa.rom", TOSA_ROM, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "tosa.rom", TOSA_ROM, &error_fatal);
     memory_region_add_subregion(address_space_mem, 0, rom);
 
     tmio = tc6393xb_init(address_space_mem, 0x10000000,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 06/32] hw/display: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/display/cg3.c | 5 ++---
 hw/display/tcx.c | 5 ++---
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 4fb67c6b1c..a1ede10394 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -287,9 +287,8 @@ static void cg3_initfn(Object *obj)
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
     CG3State *s = CG3(obj);
 
-    memory_region_init_ram_nomigrate(&s->rom, obj, "cg3.prom", FCODE_MAX_ROM_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->rom, true);
+    memory_region_init_rom_nomigrate(&s->rom, obj, "cg3.prom",
+                                     FCODE_MAX_ROM_SIZE, &error_fatal);
     sysbus_init_mmio(sbd, &s->rom);
 
     memory_region_init_io(&s->reg, obj, &cg3_reg_ops, s, "cg3.reg",
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index ca458f94fe..76de16e8ea 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -755,9 +755,8 @@ static void tcx_initfn(Object *obj)
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
     TCXState *s = TCX(obj);
 
-    memory_region_init_ram_nomigrate(&s->rom, obj, "tcx.prom", FCODE_MAX_ROM_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->rom, true);
+    memory_region_init_rom_nomigrate(&s->rom, obj, "tcx.prom",
+                                     FCODE_MAX_ROM_SIZE, &error_fatal);
     sysbus_init_mmio(sbd, &s->rom);
 
     /* 2/STIP : Stippler */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 06/32] hw/display: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/display/cg3.c | 5 ++---
 hw/display/tcx.c | 5 ++---
 2 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/display/cg3.c b/hw/display/cg3.c
index 4fb67c6b1c..a1ede10394 100644
--- a/hw/display/cg3.c
+++ b/hw/display/cg3.c
@@ -287,9 +287,8 @@ static void cg3_initfn(Object *obj)
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
     CG3State *s = CG3(obj);
 
-    memory_region_init_ram_nomigrate(&s->rom, obj, "cg3.prom", FCODE_MAX_ROM_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->rom, true);
+    memory_region_init_rom_nomigrate(&s->rom, obj, "cg3.prom",
+                                     FCODE_MAX_ROM_SIZE, &error_fatal);
     sysbus_init_mmio(sbd, &s->rom);
 
     memory_region_init_io(&s->reg, obj, &cg3_reg_ops, s, "cg3.reg",
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index ca458f94fe..76de16e8ea 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -755,9 +755,8 @@ static void tcx_initfn(Object *obj)
     SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
     TCXState *s = TCX(obj);
 
-    memory_region_init_ram_nomigrate(&s->rom, obj, "tcx.prom", FCODE_MAX_ROM_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->rom, true);
+    memory_region_init_rom_nomigrate(&s->rom, obj, "tcx.prom",
+                                     FCODE_MAX_ROM_SIZE, &error_fatal);
     sysbus_init_mmio(sbd, &s->rom);
 
     /* 2/STIP : Stippler */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 07/32] hw/mips: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/mips/mips_fulong2e.c | 3 +--
 hw/mips/mips_jazz.c     | 6 ++----
 hw/mips/mips_mipssim.c  | 3 +--
 hw/mips/mips_r4k.c      | 3 +--
 4 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 2e043cbb98..547a7d3a45 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -319,9 +319,8 @@ static void mips_fulong2e_init(MachineState *machine)
 
     /* allocate RAM */
     memory_region_allocate_system_memory(ram, NULL, "fulong2e.ram", ram_size);
-    memory_region_init_ram(bios, NULL, "fulong2e.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "fulong2e.bios", BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
 
     memory_region_add_subregion(address_space_mem, 0, ram);
     memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 66fd4d867d..cf47335ea5 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -195,9 +195,8 @@ static void mips_jazz_init(MachineState *machine,
                                          machine->ram_size);
     memory_region_add_subregion(address_space, 0, ram);
 
-    memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
     memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios,
                              0, MAGNUM_BIOS_SIZE);
     memory_region_add_subregion(address_space, 0x1fc00000LL, bios);
@@ -263,9 +262,8 @@ static void mips_jazz_init(MachineState *machine,
         {
             /* Simple ROM, so user doesn't have to provide one */
             MemoryRegion *rom_mr = g_new(MemoryRegion, 1);
-            memory_region_init_ram(rom_mr, NULL, "g364fb.rom", 0x80000,
+            memory_region_init_rom(rom_mr, NULL, "g364fb.rom", 0x80000,
                                    &error_fatal);
-            memory_region_set_readonly(rom_mr, true);
             uint8_t *rom = memory_region_get_ram_ptr(rom_mr);
             memory_region_add_subregion(address_space, 0x60000000, rom_mr);
             rom[0] = 0x10; /* Mips G364 */
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index b934ca9d51..3fdbb21680 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -169,9 +169,8 @@ mips_mipssim_init(MachineState *machine)
     /* Allocate RAM. */
     memory_region_allocate_system_memory(ram, NULL, "mips_mipssim.ram",
                                          ram_size);
-    memory_region_init_ram(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
 
     memory_region_add_subregion(address_space_mem, 0, ram);
 
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index b2aec434c3..54b286ceee 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -241,9 +241,8 @@ void mips_r4k_init(MachineState *machine)
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if ((bios_size > 0) && (bios_size <= BIOS_SIZE)) {
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
                                &error_fatal);
-        memory_region_set_readonly(bios, true);
         memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios);
 
         load_image_targphys(filename, 0x1fc00000, BIOS_SIZE);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 07/32] hw/mips: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/mips/mips_fulong2e.c | 3 +--
 hw/mips/mips_jazz.c     | 6 ++----
 hw/mips/mips_mipssim.c  | 3 +--
 hw/mips/mips_r4k.c      | 3 +--
 4 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 2e043cbb98..547a7d3a45 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -319,9 +319,8 @@ static void mips_fulong2e_init(MachineState *machine)
 
     /* allocate RAM */
     memory_region_allocate_system_memory(ram, NULL, "fulong2e.ram", ram_size);
-    memory_region_init_ram(bios, NULL, "fulong2e.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "fulong2e.bios", BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
 
     memory_region_add_subregion(address_space_mem, 0, ram);
     memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 66fd4d867d..cf47335ea5 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -195,9 +195,8 @@ static void mips_jazz_init(MachineState *machine,
                                          machine->ram_size);
     memory_region_add_subregion(address_space, 0, ram);
 
-    memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
     memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios,
                              0, MAGNUM_BIOS_SIZE);
     memory_region_add_subregion(address_space, 0x1fc00000LL, bios);
@@ -263,9 +262,8 @@ static void mips_jazz_init(MachineState *machine,
         {
             /* Simple ROM, so user doesn't have to provide one */
             MemoryRegion *rom_mr = g_new(MemoryRegion, 1);
-            memory_region_init_ram(rom_mr, NULL, "g364fb.rom", 0x80000,
+            memory_region_init_rom(rom_mr, NULL, "g364fb.rom", 0x80000,
                                    &error_fatal);
-            memory_region_set_readonly(rom_mr, true);
             uint8_t *rom = memory_region_get_ram_ptr(rom_mr);
             memory_region_add_subregion(address_space, 0x60000000, rom_mr);
             rom[0] = 0x10; /* Mips G364 */
diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
index b934ca9d51..3fdbb21680 100644
--- a/hw/mips/mips_mipssim.c
+++ b/hw/mips/mips_mipssim.c
@@ -169,9 +169,8 @@ mips_mipssim_init(MachineState *machine)
     /* Allocate RAM. */
     memory_region_allocate_system_memory(ram, NULL, "mips_mipssim.ram",
                                          ram_size);
-    memory_region_init_ram(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
                            &error_fatal);
-    memory_region_set_readonly(bios, true);
 
     memory_region_add_subregion(address_space_mem, 0, ram);
 
diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
index b2aec434c3..54b286ceee 100644
--- a/hw/mips/mips_r4k.c
+++ b/hw/mips/mips_r4k.c
@@ -241,9 +241,8 @@ void mips_r4k_init(MachineState *machine)
     dinfo = drive_get(IF_PFLASH, 0, 0);
     if ((bios_size > 0) && (bios_size <= BIOS_SIZE)) {
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
                                &error_fatal);
-        memory_region_set_readonly(bios, true);
         memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios);
 
         load_image_targphys(filename, 0x1fc00000, BIOS_SIZE);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 08/32] hw/m68k: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/m68k/q800.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 1e32363688..8083326d37 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -402,13 +402,12 @@ static void q800_init(MachineState *machine)
         uint8_t *ptr;
         /* allocate and load BIOS */
         rom = g_malloc(sizeof(*rom));
-        memory_region_init_ram(rom, NULL, "m68k_mac.rom", MACROM_SIZE,
+        memory_region_init_rom(rom, NULL, "m68k_mac.rom", MACROM_SIZE,
                                &error_abort);
         if (bios_name == NULL) {
             bios_name = MACROM_FILENAME;
         }
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-        memory_region_set_readonly(rom, true);
         memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom);
 
         /* Load MacROM binary */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 08/32] hw/m68k: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/m68k/q800.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 1e32363688..8083326d37 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -402,13 +402,12 @@ static void q800_init(MachineState *machine)
         uint8_t *ptr;
         /* allocate and load BIOS */
         rom = g_malloc(sizeof(*rom));
-        memory_region_init_ram(rom, NULL, "m68k_mac.rom", MACROM_SIZE,
+        memory_region_init_rom(rom, NULL, "m68k_mac.rom", MACROM_SIZE,
                                &error_abort);
         if (bios_name == NULL) {
             bios_name = MACROM_FILENAME;
         }
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-        memory_region_set_readonly(rom, true);
         memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom);
 
         /* Load MacROM binary */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 09/32] hw/net: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/net/dp8393x.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index a134d431ae..6bcdfe1a35 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -916,13 +916,12 @@ static void dp8393x_realize(DeviceState *dev, Error **errp)
     s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s);
     s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */
 
-    memory_region_init_ram(&s->prom, OBJECT(dev),
-                           "dp8393x-prom", SONIC_PROM_SIZE, &local_err);
+    memory_region_init_rom(&s->prom, OBJECT(dev), "dp8393x-prom",
+                           SONIC_PROM_SIZE, &local_err);
     if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
-    memory_region_set_readonly(&s->prom, true);
     prom = memory_region_get_ram_ptr(&s->prom);
     checksum = 0;
     for (i = 0; i < 6; i++) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 09/32] hw/net: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/net/dp8393x.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index a134d431ae..6bcdfe1a35 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -916,13 +916,12 @@ static void dp8393x_realize(DeviceState *dev, Error **errp)
     s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s);
     s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */
 
-    memory_region_init_ram(&s->prom, OBJECT(dev),
-                           "dp8393x-prom", SONIC_PROM_SIZE, &local_err);
+    memory_region_init_rom(&s->prom, OBJECT(dev), "dp8393x-prom",
+                           SONIC_PROM_SIZE, &local_err);
     if (local_err) {
         error_propagate(errp, local_err);
         return;
     }
-    memory_region_set_readonly(&s->prom, true);
     prom = memory_region_get_ram_ptr(&s->prom);
     checksum = 0;
     for (i = 0; i < 6; i++) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 10/32] hw/pci-host: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/pci-host/prep.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index 1aff72bec6..1a02e9a670 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -325,9 +325,8 @@ static void raven_realize(PCIDevice *d, Error **errp)
     d->config[0x0D] = 0x10; // latency_timer
     d->config[0x34] = 0x00; // capabilities_pointer
 
-    memory_region_init_ram_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->bios, true);
+    memory_region_init_rom_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
+                                     &error_fatal);
     memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE),
                                 &s->bios);
     if (s->bios_name) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 10/32] hw/pci-host: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/pci-host/prep.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index 1aff72bec6..1a02e9a670 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -325,9 +325,8 @@ static void raven_realize(PCIDevice *d, Error **errp)
     d->config[0x0D] = 0x10; // latency_timer
     d->config[0x34] = 0x00; // capabilities_pointer
 
-    memory_region_init_ram_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
-                           &error_fatal);
-    memory_region_set_readonly(&s->bios, true);
+    memory_region_init_rom_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
+                                     &error_fatal);
     memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE),
                                 &s->bios);
     if (s->bios_name) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 11/32] hw/ppc: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/ppc/mac_newworld.c | 3 +--
 hw/ppc/mac_oldworld.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 464d012103..566413e479 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -156,13 +156,12 @@ static void ppc_core99_init(MachineState *machine)
     memory_region_add_subregion(get_system_memory(), 0, ram);
 
     /* allocate and load BIOS */
-    memory_region_init_ram(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
                            &error_fatal);
 
     if (bios_name == NULL)
         bios_name = PROM_FILENAME;
     filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-    memory_region_set_readonly(bios, true);
     memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
 
     /* Load OpenBIOS (ELF) */
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 7318d7e9b4..8b22ff60b8 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -132,13 +132,12 @@ static void ppc_heathrow_init(MachineState *machine)
     memory_region_add_subregion(sysmem, 0, ram);
 
     /* allocate and load BIOS */
-    memory_region_init_ram(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
                            &error_fatal);
 
     if (bios_name == NULL)
         bios_name = PROM_FILENAME;
     filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-    memory_region_set_readonly(bios, true);
     memory_region_add_subregion(sysmem, PROM_ADDR, bios);
 
     /* Load OpenBIOS (ELF) */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 11/32] hw/ppc: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/ppc/mac_newworld.c | 3 +--
 hw/ppc/mac_oldworld.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 464d012103..566413e479 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -156,13 +156,12 @@ static void ppc_core99_init(MachineState *machine)
     memory_region_add_subregion(get_system_memory(), 0, ram);
 
     /* allocate and load BIOS */
-    memory_region_init_ram(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
                            &error_fatal);
 
     if (bios_name == NULL)
         bios_name = PROM_FILENAME;
     filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-    memory_region_set_readonly(bios, true);
     memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
 
     /* Load OpenBIOS (ELF) */
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 7318d7e9b4..8b22ff60b8 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -132,13 +132,12 @@ static void ppc_heathrow_init(MachineState *machine)
     memory_region_add_subregion(sysmem, 0, ram);
 
     /* allocate and load BIOS */
-    memory_region_init_ram(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
+    memory_region_init_rom(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
                            &error_fatal);
 
     if (bios_name == NULL)
         bios_name = PROM_FILENAME;
     filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
-    memory_region_set_readonly(bios, true);
     memory_region_add_subregion(sysmem, PROM_ADDR, bios);
 
     /* Load OpenBIOS (ELF) */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 12/32] hw/riscv: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/riscv/sifive_e.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index 8a6b0348df..6f6360a619 100644
--- a/hw/riscv/sifive_e.c
+++ b/hw/riscv/sifive_e.c
@@ -208,9 +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_set_readonly(&s->xip_mem, true);
+    memory_region_init_rom(&s->xip_mem, NULL, "riscv.sifive.e.xip",
+                           memmap[SIFIVE_E_XIP].size, &error_fatal);
     memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_XIP].base,
         &s->xip_mem);
 }
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 12/32] hw/riscv: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/riscv/sifive_e.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index 8a6b0348df..6f6360a619 100644
--- a/hw/riscv/sifive_e.c
+++ b/hw/riscv/sifive_e.c
@@ -208,9 +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_set_readonly(&s->xip_mem, true);
+    memory_region_init_rom(&s->xip_mem, NULL, "riscv.sifive.e.xip",
+                           memmap[SIFIVE_E_XIP].size, &error_fatal);
     memory_region_add_subregion(sys_mem, memmap[SIFIVE_E_XIP].base,
         &s->xip_mem);
 }
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 13/32] hw/sh4: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/sh4/shix.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/sh4/shix.c b/hw/sh4/shix.c
index 2fc2915428..56c7d29bf5 100644
--- a/hw/sh4/shix.c
+++ b/hw/sh4/shix.c
@@ -53,8 +53,7 @@ static void shix_init(MachineState *machine)
     cpu = SUPERH_CPU(cpu_create(machine->cpu_type));
 
     /* Allocate memory space */
-    memory_region_init_ram(rom, NULL, "shix.rom", 0x4000, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "shix.rom", 0x4000, &error_fatal);
     memory_region_add_subregion(sysmem, 0x00000000, rom);
     memory_region_init_ram(&sdram[0], NULL, "shix.sdram1", 0x01000000,
                            &error_fatal);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 13/32] hw/sh4: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/sh4/shix.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/sh4/shix.c b/hw/sh4/shix.c
index 2fc2915428..56c7d29bf5 100644
--- a/hw/sh4/shix.c
+++ b/hw/sh4/shix.c
@@ -53,8 +53,7 @@ static void shix_init(MachineState *machine)
     cpu = SUPERH_CPU(cpu_create(machine->cpu_type));
 
     /* Allocate memory space */
-    memory_region_init_ram(rom, NULL, "shix.rom", 0x4000, &error_fatal);
-    memory_region_set_readonly(rom, true);
+    memory_region_init_rom(rom, NULL, "shix.rom", 0x4000, &error_fatal);
     memory_region_add_subregion(sysmem, 0x00000000, rom);
     memory_region_init_ram(&sdram[0], NULL, "shix.sdram1", 0x01000000,
                            &error_fatal);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 14/32] hw/sparc: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/sparc/leon3.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index f5a087dd86..23d0bdbd71 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -256,8 +256,7 @@ static void leon3_generic_hw_init(MachineState *machine)
 
     /* Allocate BIOS */
     prom_size = 8 * MiB;
-    memory_region_init_ram(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
-    memory_region_set_readonly(prom, true);
+    memory_region_init_rom(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
     memory_region_add_subregion(address_space_mem, LEON3_PROM_OFFSET, prom);
 
     /* Load boot prom */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 14/32] hw/sparc: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/sparc/leon3.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index f5a087dd86..23d0bdbd71 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -256,8 +256,7 @@ static void leon3_generic_hw_init(MachineState *machine)
 
     /* Allocate BIOS */
     prom_size = 8 * MiB;
-    memory_region_init_ram(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
-    memory_region_set_readonly(prom, true);
+    memory_region_init_rom(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
     memory_region_add_subregion(address_space_mem, LEON3_PROM_OFFSET, prom);
 
     /* Load boot prom */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 15/32] scripts/cocci: Patch to detect potential use of memory_region_init_rom
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Add a semantic patch to detect potential replacement of
memory_region_init_ram(readonly) by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../memory-region-housekeeping.cocci          | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index ee3923d369..9cdde71bb1 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -29,6 +29,25 @@ symbol true;
 )
 
 
+@possible_memory_region_init_rom@
+expression E1, E2, E3, E4, E5;
+position p;
+@@
+(
+  memory_region_init_ram@p(E1, E2, E3, E4, E5);
+  ...
+  memory_region_set_readonly(E1, true);
+|
+  memory_region_init_ram_nomigrate@p(E1, E2, E3, E4, E5);
+  ...
+  memory_region_set_readonly(E1, true);
+)
+@script:python@
+p << possible_memory_region_init_rom.p;
+@@
+cocci.print_main("potential use of memory_region_init_rom*() in ", p)
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 15/32] scripts/cocci: Patch to detect potential use of memory_region_init_rom
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Add a semantic patch to detect potential replacement of
memory_region_init_ram(readonly) by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../memory-region-housekeeping.cocci          | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index ee3923d369..9cdde71bb1 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -29,6 +29,25 @@ symbol true;
 )
 
 
+@possible_memory_region_init_rom@
+expression E1, E2, E3, E4, E5;
+position p;
+@@
+(
+  memory_region_init_ram@p(E1, E2, E3, E4, E5);
+  ...
+  memory_region_set_readonly(E1, true);
+|
+  memory_region_init_ram_nomigrate@p(E1, E2, E3, E4, E5);
+  ...
+  memory_region_set_readonly(E1, true);
+)
+@script:python@
+p << possible_memory_region_init_rom.p;
+@@
+cocci.print_main("potential use of memory_region_init_rom*() in ", p)
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 16/32] hw/arm/stm32: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:./hw/arm/stm32f205_soc.c::face=ovl-face1::linb=96::colb=4::cole=26][potential use of memory_region_init_rom*() in  ./hw/arm/stm32f205_soc.c::96]]
* TODO [[view:./hw/arm/stm32f405_soc.c::face=ovl-face1::linb=98::colb=4::cole=26][potential use of memory_region_init_rom*() in  ./hw/arm/stm32f405_soc.c::98]]

We can indeed replace the memory_region_init_ram() and
memory_region_set_readonly() calls by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/stm32f205_soc.c | 4 +---
 hw/arm/stm32f405_soc.c | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 627fd446f5..2de56275b7 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -93,12 +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,
+    memory_region_init_rom(flash, NULL, "STM32F205.flash", FLASH_SIZE,
                            &error_fatal);
     memory_region_init_alias(flash_alias, NULL, "STM32F205.flash.alias",
                              flash, 0, FLASH_SIZE);
-
-    memory_region_set_readonly(flash, true);
     memory_region_set_readonly(flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index 9bcad97853..b8fca13f95 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -95,7 +95,7 @@ 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,
+    memory_region_init_rom(&s->flash, NULL, "STM32F405.flash", FLASH_SIZE,
                            &err);
     if (err != NULL) {
         error_propagate(errp, err);
@@ -103,8 +103,6 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
     }
     memory_region_init_alias(&s->flash_alias, NULL, "STM32F405.flash.alias",
                              &s->flash, 0, FLASH_SIZE);
-
-    memory_region_set_readonly(&s->flash, true);
     memory_region_set_readonly(&s->flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 16/32] hw/arm/stm32: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:./hw/arm/stm32f205_soc.c::face=ovl-face1::linb=96::colb=4::cole=26][potential use of memory_region_init_rom*() in  ./hw/arm/stm32f205_soc.c::96]]
* TODO [[view:./hw/arm/stm32f405_soc.c::face=ovl-face1::linb=98::colb=4::cole=26][potential use of memory_region_init_rom*() in  ./hw/arm/stm32f405_soc.c::98]]

We can indeed replace the memory_region_init_ram() and
memory_region_set_readonly() calls by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/stm32f205_soc.c | 4 +---
 hw/arm/stm32f405_soc.c | 4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 627fd446f5..2de56275b7 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -93,12 +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,
+    memory_region_init_rom(flash, NULL, "STM32F205.flash", FLASH_SIZE,
                            &error_fatal);
     memory_region_init_alias(flash_alias, NULL, "STM32F205.flash.alias",
                              flash, 0, FLASH_SIZE);
-
-    memory_region_set_readonly(flash, true);
     memory_region_set_readonly(flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index 9bcad97853..b8fca13f95 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -95,7 +95,7 @@ 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,
+    memory_region_init_rom(&s->flash, NULL, "STM32F405.flash", FLASH_SIZE,
                            &err);
     if (err != NULL) {
         error_propagate(errp, err);
@@ -103,8 +103,6 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
     }
     memory_region_init_alias(&s->flash_alias, NULL, "STM32F405.flash.alias",
                              &s->flash, 0, FLASH_SIZE);
-
-    memory_region_set_readonly(&s->flash, true);
     memory_region_set_readonly(&s->flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 17/32] hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=195::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::195]]
* TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=464::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::464]]

We can indeed replace the memory_region_init_ram() and
memory_region_set_readonly() calls by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/ppc/ppc405_boards.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index 1f721feed6..5afe023253 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -192,7 +192,7 @@ static void ref405ep_init(MachineState *machine)
 #endif
     {
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "ef405ep.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "ef405ep.bios", BIOS_SIZE,
                                &error_fatal);
 
         if (bios_name == NULL)
@@ -216,7 +216,6 @@ static void ref405ep_init(MachineState *machine)
             /* Avoid an uninitialized variable warning */
             bios_size = -1;
         }
-        memory_region_set_readonly(bios, true);
     }
     /* Register FPGA */
     ref405ep_fpga_init(sysmem, 0xF0300000);
@@ -461,7 +460,7 @@ static void taihu_405ep_init(MachineState *machine)
         if (bios_name == NULL)
             bios_name = BIOS_FILENAME;
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
                                &error_fatal);
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
         if (filename) {
@@ -479,7 +478,6 @@ static void taihu_405ep_init(MachineState *machine)
             error_report("Could not load PowerPC BIOS '%s'", bios_name);
             exit(1);
         }
-        memory_region_set_readonly(bios, true);
     }
     /* Register Linux flash */
     dinfo = drive_get(IF_PFLASH, 0, fl_idx);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 17/32] hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=195::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::195]]
* TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=464::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::464]]

We can indeed replace the memory_region_init_ram() and
memory_region_set_readonly() calls by memory_region_init_rom().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/ppc/ppc405_boards.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
index 1f721feed6..5afe023253 100644
--- a/hw/ppc/ppc405_boards.c
+++ b/hw/ppc/ppc405_boards.c
@@ -192,7 +192,7 @@ static void ref405ep_init(MachineState *machine)
 #endif
     {
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "ef405ep.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "ef405ep.bios", BIOS_SIZE,
                                &error_fatal);
 
         if (bios_name == NULL)
@@ -216,7 +216,6 @@ static void ref405ep_init(MachineState *machine)
             /* Avoid an uninitialized variable warning */
             bios_size = -1;
         }
-        memory_region_set_readonly(bios, true);
     }
     /* Register FPGA */
     ref405ep_fpga_init(sysmem, 0xF0300000);
@@ -461,7 +460,7 @@ static void taihu_405ep_init(MachineState *machine)
         if (bios_name == NULL)
             bios_name = BIOS_FILENAME;
         bios = g_new(MemoryRegion, 1);
-        memory_region_init_ram(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
+        memory_region_init_rom(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
                                &error_fatal);
         filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
         if (filename) {
@@ -479,7 +478,6 @@ static void taihu_405ep_init(MachineState *machine)
             error_report("Could not load PowerPC BIOS '%s'", bios_name);
             exit(1);
         }
-        memory_region_set_readonly(bios, true);
     }
     /* Register Linux flash */
     dinfo = drive_get(IF_PFLASH, 0, fl_idx);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:hw/i386/pc_sysfw.c::face=ovl-face1::linb=67::colb=4::cole=26][potential use of memory_region_init_rom*() in  hw/i386/pc_sysfw.c::67]]

pc_isa_bios_init() does a manual copy of a part of the BIOS,
from a read-only region. We can simplify by directly aliasing
the same part.

Before:

  (qemu) info mtree
  memory-region: system
    0000000000000000-ffffffffffffffff (prio 0, i/o): system
      0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
      0000000000000000-ffffffffffffffff (prio -1, i/o): pci
        00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
        00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
        00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
      ...
      00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

After:

  (qemu) info mtree
  memory-region: system
    0000000000000000-ffffffffffffffff (prio 0, i/o): system
      0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
      0000000000000000-ffffffffffffffff (prio -1, i/o): pci
        00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
        00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
        00000000000e0000-00000000000fffff (prio 1, romd): alias isa-bios @system.flash0 00000000000e0000-00000000000fffff
      ...
      00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/pc_sysfw.c | 24 ++++++------------------
 1 file changed, 6 insertions(+), 18 deletions(-)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index f5f3f466b0..e864c09ea8 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -54,31 +54,19 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory,
                              MemoryRegion *flash_mem,
                              int ram_size)
 {
-    int isa_bios_size;
-    MemoryRegion *isa_bios;
-    uint64_t flash_size;
-    void *flash_ptr, *isa_bios_ptr;
-
-    flash_size = memory_region_size(flash_mem);
+    uint64_t isa_bios_size;
+    MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
+    uint64_t flash_size = memory_region_size(flash_mem);
 
     /* map the last 128KB of the BIOS in ISA space */
     isa_bios_size = MIN(flash_size, 128 * KiB);
-    isa_bios = g_malloc(sizeof(*isa_bios));
-    memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size,
-                           &error_fatal);
+    memory_region_init_alias(isa_bios, NULL, "isa-bios", flash_mem,
+                             flash_size - isa_bios_size,
+                             isa_bios_size);
     memory_region_add_subregion_overlap(rom_memory,
                                         0x100000 - isa_bios_size,
                                         isa_bios,
                                         1);
-
-    /* copy ISA rom image from top of flash memory */
-    flash_ptr = memory_region_get_ram_ptr(flash_mem);
-    isa_bios_ptr = memory_region_get_ram_ptr(isa_bios);
-    memcpy(isa_bios_ptr,
-           ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size),
-           isa_bios_size);
-
-    memory_region_set_readonly(isa_bios, true);
 }
 
 static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

The scripts/coccinelle/memory-region-housekeeping.cocci reported:
* TODO [[view:hw/i386/pc_sysfw.c::face=ovl-face1::linb=67::colb=4::cole=26][potential use of memory_region_init_rom*() in  hw/i386/pc_sysfw.c::67]]

pc_isa_bios_init() does a manual copy of a part of the BIOS,
from a read-only region. We can simplify by directly aliasing
the same part.

Before:

  (qemu) info mtree
  memory-region: system
    0000000000000000-ffffffffffffffff (prio 0, i/o): system
      0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
      0000000000000000-ffffffffffffffff (prio -1, i/o): pci
        00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
        00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
        00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
      ...
      00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

After:

  (qemu) info mtree
  memory-region: system
    0000000000000000-ffffffffffffffff (prio 0, i/o): system
      0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
      0000000000000000-ffffffffffffffff (prio -1, i/o): pci
        00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
        00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
        00000000000e0000-00000000000fffff (prio 1, romd): alias isa-bios @system.flash0 00000000000e0000-00000000000fffff
      ...
      00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/i386/pc_sysfw.c | 24 ++++++------------------
 1 file changed, 6 insertions(+), 18 deletions(-)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index f5f3f466b0..e864c09ea8 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -54,31 +54,19 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory,
                              MemoryRegion *flash_mem,
                              int ram_size)
 {
-    int isa_bios_size;
-    MemoryRegion *isa_bios;
-    uint64_t flash_size;
-    void *flash_ptr, *isa_bios_ptr;
-
-    flash_size = memory_region_size(flash_mem);
+    uint64_t isa_bios_size;
+    MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
+    uint64_t flash_size = memory_region_size(flash_mem);
 
     /* map the last 128KB of the BIOS in ISA space */
     isa_bios_size = MIN(flash_size, 128 * KiB);
-    isa_bios = g_malloc(sizeof(*isa_bios));
-    memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size,
-                           &error_fatal);
+    memory_region_init_alias(isa_bios, NULL, "isa-bios", flash_mem,
+                             flash_size - isa_bios_size,
+                             isa_bios_size);
     memory_region_add_subregion_overlap(rom_memory,
                                         0x100000 - isa_bios_size,
                                         isa_bios,
                                         1);
-
-    /* copy ISA rom image from top of flash memory */
-    flash_ptr = memory_region_get_ram_ptr(flash_mem);
-    isa_bios_ptr = memory_region_get_ram_ptr(isa_bios);
-    memcpy(isa_bios_ptr,
-           ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size),
-           isa_bios_size);
-
-    memory_region_set_readonly(isa_bios, true);
 }
 
 static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms,
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 19/32] hw/i386/pc_sysfw: Remove unused 'ram_size' argument
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, qemu-trivial,
	Magnus Damm, Hervé Poussineau, Joel Stanley,
	Marc-André Lureau, Aleksandar Rikalo, David Gibson,
	Artyom Tarasenko, Eduardo Habkost, Jean-Christophe Dubois,
	Alistair Francis, Fabien Chouteau, qemu-arm, Peter Chubb,
	Palmer Dabbelt, Richard Henderson, Kevin Wolf, qemu-riscv,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier, Max Reitz,
	Michael Walle, qemu-ppc, Aleksandar Markovic, Aurelien Jarno

While named 'ram_size', this argument holds the size of the
flash. Since it is unused, remove it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 hw/i386/pc_sysfw.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index e864c09ea8..07b35ee9d9 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -51,8 +51,7 @@
 #define FLASH_SECTOR_SIZE 4096
 
 static void pc_isa_bios_init(MemoryRegion *rom_memory,
-                             MemoryRegion *flash_mem,
-                             int ram_size)
+                             MemoryRegion *flash_mem)
 {
     uint64_t isa_bios_size;
     MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
@@ -182,7 +181,7 @@ static void pc_system_flash_map(PCMachineState *pcms,
 
         if (i == 0) {
             flash_mem = pflash_cfi01_get_memory(system_flash);
-            pc_isa_bios_init(rom_memory, flash_mem, size);
+            pc_isa_bios_init(rom_memory, flash_mem);
 
             /* Encrypt the pflash boot ROM */
             if (kvm_memcrypt_enabled()) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 19/32] hw/i386/pc_sysfw: Remove unused 'ram_size' argument
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau,
	qemu-trivial

While named 'ram_size', this argument holds the size of the
flash. Since it is unused, remove it.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 hw/i386/pc_sysfw.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
index e864c09ea8..07b35ee9d9 100644
--- a/hw/i386/pc_sysfw.c
+++ b/hw/i386/pc_sysfw.c
@@ -51,8 +51,7 @@
 #define FLASH_SECTOR_SIZE 4096
 
 static void pc_isa_bios_init(MemoryRegion *rom_memory,
-                             MemoryRegion *flash_mem,
-                             int ram_size)
+                             MemoryRegion *flash_mem)
 {
     uint64_t isa_bios_size;
     MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
@@ -182,7 +181,7 @@ static void pc_system_flash_map(PCMachineState *pcms,
 
         if (i == 0) {
             flash_mem = pflash_cfi01_get_memory(system_flash);
-            pc_isa_bios_init(rom_memory, flash_mem, size);
+            pc_isa_bios_init(rom_memory, flash_mem);
 
             /* Encrypt the pflash boot ROM */
             if (kvm_memcrypt_enabled()) {
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 20/32] scripts/cocci: Patch to remove unnecessary memory_region_set_readonly()
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Add a semantic patch to remove memory_region_set_readonly() calls
on ROM memory regions.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../coccinelle/memory-region-housekeeping.cocci   | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 9cdde71bb1..5e6b31d8ba 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -48,6 +48,21 @@ p << possible_memory_region_init_rom.p;
 cocci.print_main("potential use of memory_region_init_rom*() in ", p)
 
 
+// Do not call memory_region_set_readonly() on ROM alias
+@@
+expression ROM, E1, E2, E3, E4;
+expression ALIAS, E5, E6, E7, E8;
+@@
+(
+  memory_region_init_rom(ROM, E1, E2, E3, E4);
+|
+  memory_region_init_rom_nomigrate(ROM, E1, E2, E3, E4);
+)
+  ...
+   memory_region_init_alias(ALIAS, E5, E6, ROM, E7, E8);
+-  memory_region_set_readonly(ALIAS, true);
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 20/32] scripts/cocci: Patch to remove unnecessary memory_region_set_readonly()
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Add a semantic patch to remove memory_region_set_readonly() calls
on ROM memory regions.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 .../coccinelle/memory-region-housekeeping.cocci   | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 9cdde71bb1..5e6b31d8ba 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -48,6 +48,21 @@ p << possible_memory_region_init_rom.p;
 cocci.print_main("potential use of memory_region_init_rom*() in ", p)
 
 
+// Do not call memory_region_set_readonly() on ROM alias
+@@
+expression ROM, E1, E2, E3, E4;
+expression ALIAS, E5, E6, E7, E8;
+@@
+(
+  memory_region_init_rom(ROM, E1, E2, E3, E4);
+|
+  memory_region_init_rom_nomigrate(ROM, E1, E2, E3, E4);
+)
+  ...
+   memory_region_init_alias(ALIAS, E5, E6, ROM, E7, E8);
+-  memory_region_set_readonly(ALIAS, true);
+
+
 // Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram
 // code sequences with use of the new memory_region_init_ram function.
 // Similarly for the _rom and _rom_device functions.
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 21/32] hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c    | 1 -
 hw/arm/stm32f205_soc.c | 1 -
 hw/arm/stm32f405_soc.c | 1 -
 3 files changed, 3 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 3af6502a5e..4e1fd7edb3 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -320,7 +320,6 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
                              &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);
 
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 2de56275b7..6e93726d45 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -97,7 +97,6 @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
                            &error_fatal);
     memory_region_init_alias(flash_alias, NULL, "STM32F205.flash.alias",
                              flash, 0, FLASH_SIZE);
-    memory_region_set_readonly(flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
     memory_region_add_subregion(system_memory, 0, flash_alias);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index b8fca13f95..d590cd040d 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -103,7 +103,6 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
     }
     memory_region_init_alias(&s->flash_alias, NULL, "STM32F405.flash.alias",
                              &s->flash, 0, FLASH_SIZE);
-    memory_region_set_readonly(&s->flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
     memory_region_add_subregion(system_memory, 0, &s->flash_alias);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 21/32] hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c    | 1 -
 hw/arm/stm32f205_soc.c | 1 -
 hw/arm/stm32f405_soc.c | 1 -
 3 files changed, 3 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 3af6502a5e..4e1fd7edb3 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -320,7 +320,6 @@ static void exynos4210_realize(DeviceState *socdev, Error **errp)
                              &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);
 
diff --git a/hw/arm/stm32f205_soc.c b/hw/arm/stm32f205_soc.c
index 2de56275b7..6e93726d45 100644
--- a/hw/arm/stm32f205_soc.c
+++ b/hw/arm/stm32f205_soc.c
@@ -97,7 +97,6 @@ static void stm32f205_soc_realize(DeviceState *dev_soc, Error **errp)
                            &error_fatal);
     memory_region_init_alias(flash_alias, NULL, "STM32F205.flash.alias",
                              flash, 0, FLASH_SIZE);
-    memory_region_set_readonly(flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
     memory_region_add_subregion(system_memory, 0, flash_alias);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index b8fca13f95..d590cd040d 100644
--- a/hw/arm/stm32f405_soc.c
+++ b/hw/arm/stm32f405_soc.c
@@ -103,7 +103,6 @@ static void stm32f405_soc_realize(DeviceState *dev_soc, Error **errp)
     }
     memory_region_init_alias(&s->flash_alias, NULL, "STM32F405.flash.alias",
                              &s->flash, 0, FLASH_SIZE);
-    memory_region_set_readonly(&s->flash_alias, true);
 
     memory_region_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
     memory_region_add_subregion(system_memory, 0, &s->flash_alias);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 22/32] scripts/cocci: Patch to let devices own their MemoryRegions
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

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 semantic patch to let the device own the memory region.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: Remove memory_region_init_ram() change which might break migration
    (Peter Maydell)
---
 .../memory-region-housekeeping.cocci          | 56 +++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 5e6b31d8ba..c768d8140a 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -101,3 +101,59 @@ expression ERRP;
 +memory_region_init_rom_device(MR, NULL, OPS, OPAQUE, NAME, SIZE, ERRP);
  ...
 -vmstate_register_ram_global(MR);
+
+
+// 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_shared_nomigrate(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_ram_shared_nomigrate(E1, obj, E2, E3, E4, E5);
+)
+  ...+>
+}
+@@
+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_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] 81+ messages in thread

* [PATCH RESEND v2 22/32] scripts/cocci: Patch to let devices own their MemoryRegions
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

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 semantic patch to let the device own the memory region.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
v2: Remove memory_region_init_ram() change which might break migration
    (Peter Maydell)
---
 .../memory-region-housekeeping.cocci          | 56 +++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/coccinelle/memory-region-housekeeping.cocci
index 5e6b31d8ba..c768d8140a 100644
--- a/scripts/coccinelle/memory-region-housekeeping.cocci
+++ b/scripts/coccinelle/memory-region-housekeeping.cocci
@@ -101,3 +101,59 @@ expression ERRP;
 +memory_region_init_rom_device(MR, NULL, OPS, OPAQUE, NAME, SIZE, ERRP);
  ...
 -vmstate_register_ram_global(MR);
+
+
+// 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_shared_nomigrate(E1, NULL, E2, E3, E4, E5);
++ memory_region_init_ram_shared_nomigrate(E1, obj, E2, E3, E4, E5);
+)
+  ...+>
+}
+@@
+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_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] 81+ messages in thread

* [PATCH RESEND v2 23/32] hw/arm: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c    | 12 ++++++------
 hw/arm/fsl-imx25.c     | 10 +++++-----
 hw/arm/fsl-imx31.c     |  6 +++---
 hw/arm/fsl-imx6.c      |  6 +++---
 hw/arm/fsl-imx6ul.c    |  9 +++++----
 hw/arm/msf2-soc.c      |  6 +++---
 hw/arm/nrf51_soc.c     |  2 +-
 hw/arm/stm32f205_soc.c |  8 ++++----
 hw/arm/stm32f405_soc.c |  9 +++++----
 hw/arm/xlnx-zynqmp.c   | 11 +++++------
 10 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 4e1fd7edb3..1f7253ef6f 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -305,20 +305,20 @@ 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_rom(&s->irom_mem, NULL, "exynos4210.irom",
+    memory_region_init_rom(&s->irom_mem, OBJECT(socdev), "exynos4210.irom",
                            EXYNOS4210_IROM_SIZE, &error_fatal);
     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_add_subregion(system_mem, EXYNOS4210_IROM_MIRROR_BASE_ADDR,
                                 &s->irom_alias_mem);
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index da3471b395..104bff6d61 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;
@@ -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..8472d2e911 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);
@@ -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..9c09f71435 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);
@@ -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..f4a9ed6c4f 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);
@@ -568,8 +568,9 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
     /*
      * 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..588d643b8d 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,8 +104,8 @@ 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);
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 6e93726d45..118c342559 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_rom(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_rom(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_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
     memory_region_add_subregion(system_memory, 0, flash_alias);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index d590cd040d..4f10ce6176 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_rom(&s->flash, NULL, "STM32F405.flash", FLASH_SIZE,
-                           &err);
+    memory_region_init_rom(&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_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
     memory_region_add_subregion(system_memory, 0, &s->flash_alias);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index cab0160ae9..49f1c8d0de 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,9 +330,8 @@ 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 */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 23/32] hw/arm: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/arm/exynos4210.c    | 12 ++++++------
 hw/arm/fsl-imx25.c     | 10 +++++-----
 hw/arm/fsl-imx31.c     |  6 +++---
 hw/arm/fsl-imx6.c      |  6 +++---
 hw/arm/fsl-imx6ul.c    |  9 +++++----
 hw/arm/msf2-soc.c      |  6 +++---
 hw/arm/nrf51_soc.c     |  2 +-
 hw/arm/stm32f205_soc.c |  8 ++++----
 hw/arm/stm32f405_soc.c |  9 +++++----
 hw/arm/xlnx-zynqmp.c   | 11 +++++------
 10 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/hw/arm/exynos4210.c b/hw/arm/exynos4210.c
index 4e1fd7edb3..1f7253ef6f 100644
--- a/hw/arm/exynos4210.c
+++ b/hw/arm/exynos4210.c
@@ -305,20 +305,20 @@ 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_rom(&s->irom_mem, NULL, "exynos4210.irom",
+    memory_region_init_rom(&s->irom_mem, OBJECT(socdev), "exynos4210.irom",
                            EXYNOS4210_IROM_SIZE, &error_fatal);
     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_add_subregion(system_mem, EXYNOS4210_IROM_MIRROR_BASE_ADDR,
                                 &s->irom_alias_mem);
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index da3471b395..104bff6d61 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;
@@ -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..8472d2e911 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);
@@ -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..9c09f71435 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);
@@ -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..f4a9ed6c4f 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);
@@ -568,8 +568,9 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
     /*
      * 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..588d643b8d 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,8 +104,8 @@ 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);
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 6e93726d45..118c342559 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_rom(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_rom(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_add_subregion(system_memory, FLASH_BASE_ADDRESS, flash);
     memory_region_add_subregion(system_memory, 0, flash_alias);
diff --git a/hw/arm/stm32f405_soc.c b/hw/arm/stm32f405_soc.c
index d590cd040d..4f10ce6176 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_rom(&s->flash, NULL, "STM32F405.flash", FLASH_SIZE,
-                           &err);
+    memory_region_init_rom(&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_add_subregion(system_memory, FLASH_BASE_ADDRESS, &s->flash);
     memory_region_add_subregion(system_memory, 0, &s->flash_alias);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index cab0160ae9..49f1c8d0de 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,9 +330,8 @@ 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 */
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 24/32] hw/char: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 24/32] hw/char: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 25/32] hw/core: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 25/32] hw/core: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 26/32] hw/display: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/display/g364fb.c | 3 ++-
 hw/display/macfb.c  | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 55185c95c6..adcba96e34 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -477,7 +477,8 @@ 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_io(&s->mem_ctrl, OBJECT(dev), &g364fb_ctrl_ops, s,
+                          "ctrl", 0x180000);
     memory_region_init_ram_ptr(&s->mem_vram, NULL, "vram",
                                s->vram_size, s->vram);
     vmstate_register_ram(&s->mem_vram, dev);
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);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 26/32] hw/display: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/display/g364fb.c | 3 ++-
 hw/display/macfb.c  | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 55185c95c6..adcba96e34 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -477,7 +477,8 @@ 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_io(&s->mem_ctrl, OBJECT(dev), &g364fb_ctrl_ops, s,
+                          "ctrl", 0x180000);
     memory_region_init_ram_ptr(&s->mem_vram, NULL, "vram",
                                s->vram_size, s->vram);
     vmstate_register_ram(&s->mem_vram, dev);
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);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 27/32] hw/dma: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 27/32] hw/dma: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

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] 81+ messages in thread

* [PATCH RESEND v2 28/32] hw/riscv: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/riscv/sifive_e.c | 6 +++---
 hw/riscv/sifive_u.c | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index 6f6360a619..64eb8ce536 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,7 +208,7 @@ 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_rom(&s->xip_mem, NULL, "riscv.sifive.e.xip",
+    memory_region_init_rom(&s->xip_mem, OBJECT(dev), "riscv.sifive.e.xip",
                            memmap[SIFIVE_E_XIP].size, &error_fatal);
     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..be7d438db1 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);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 28/32] hw/riscv: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

This commit was produced with the Coccinelle script
scripts/coccinelle/memory-region-housekeeping.cocci.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/riscv/sifive_e.c | 6 +++---
 hw/riscv/sifive_u.c | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/riscv/sifive_e.c b/hw/riscv/sifive_e.c
index 6f6360a619..64eb8ce536 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,7 +208,7 @@ 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_rom(&s->xip_mem, NULL, "riscv.sifive.e.xip",
+    memory_region_init_rom(&s->xip_mem, OBJECT(dev), "riscv.sifive.e.xip",
                            memmap[SIFIVE_E_XIP].size, &error_fatal);
     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..be7d438db1 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);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 29/32] hw/input/milkymist-softusb: Remove unused 'pmem_ptr' field
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, qemu-trivial,
	Magnus Damm, Hervé Poussineau, Joel Stanley,
	Marc-André Lureau, Aleksandar Rikalo, David Gibson,
	Artyom Tarasenko, Eduardo Habkost, Jean-Christophe Dubois,
	Alistair Francis, Fabien Chouteau, qemu-arm, Peter Chubb,
	Palmer Dabbelt, Richard Henderson, Kevin Wolf, qemu-riscv,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier, Max Reitz,
	Michael Walle, qemu-ppc, Aleksandar Markovic, Aurelien Jarno

In commit 029ad4bcf3 we removed softusb_{read, write}_pmem(),
we can also remove the 'pmem_ptr' field.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 hw/input/milkymist-softusb.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 3e0a7eb0bd..7deeb1294f 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -64,7 +64,6 @@ struct MilkymistSoftUsbState {
     MemoryRegion dmem;
     qemu_irq irq;
 
-    void *pmem_ptr;
     void *dmem_ptr;
 
     /* device properties */
@@ -263,7 +262,6 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
     memory_region_init_ram_nomigrate(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
                            s->pmem_size, &error_fatal);
     vmstate_register_ram_global(&s->pmem);
-    s->pmem_ptr = memory_region_get_ram_ptr(&s->pmem);
     sysbus_init_mmio(sbd, &s->pmem);
     memory_region_init_ram_nomigrate(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
                            s->dmem_size, &error_fatal);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [PATCH RESEND v2 29/32] hw/input/milkymist-softusb: Remove unused 'pmem_ptr' field
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau,
	qemu-trivial

In commit 029ad4bcf3 we removed softusb_{read, write}_pmem(),
we can also remove the 'pmem_ptr' field.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
Cc: qemu-trivial@nongnu.org

 hw/input/milkymist-softusb.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 3e0a7eb0bd..7deeb1294f 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -64,7 +64,6 @@ struct MilkymistSoftUsbState {
     MemoryRegion dmem;
     qemu_irq irq;
 
-    void *pmem_ptr;
     void *dmem_ptr;
 
     /* device properties */
@@ -263,7 +262,6 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
     memory_region_init_ram_nomigrate(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
                            s->pmem_size, &error_fatal);
     vmstate_register_ram_global(&s->pmem);
-    s->pmem_ptr = memory_region_get_ram_ptr(&s->pmem);
     sysbus_init_mmio(sbd, &s->pmem);
     memory_region_init_ram_nomigrate(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
                            s->dmem_size, &error_fatal);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 30/32] hw/input/milkymist-softusb: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the LM32 milkymist machine.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/input/milkymist-softusb.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 7deeb1294f..72bc7bae1e 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -259,13 +259,11 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->regs_region);
 
     /* register pmem and dmem */
-    memory_region_init_ram_nomigrate(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
+    memory_region_init_ram(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
                            s->pmem_size, &error_fatal);
-    vmstate_register_ram_global(&s->pmem);
     sysbus_init_mmio(sbd, &s->pmem);
-    memory_region_init_ram_nomigrate(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
+    memory_region_init_ram(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
                            s->dmem_size, &error_fatal);
-    vmstate_register_ram_global(&s->dmem);
     s->dmem_ptr = memory_region_get_ram_ptr(&s->dmem);
     sysbus_init_mmio(sbd, &s->dmem);
 
@@ -275,8 +273,8 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
 
 static const VMStateDescription vmstate_milkymist_softusb = {
     .name = "milkymist-softusb",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32_ARRAY(regs, MilkymistSoftUsbState, R_MAX),
         VMSTATE_HID_KEYBOARD_DEVICE(hid_kbd, MilkymistSoftUsbState),
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 30/32] hw/input/milkymist-softusb: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the LM32 milkymist machine.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/input/milkymist-softusb.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/input/milkymist-softusb.c b/hw/input/milkymist-softusb.c
index 7deeb1294f..72bc7bae1e 100644
--- a/hw/input/milkymist-softusb.c
+++ b/hw/input/milkymist-softusb.c
@@ -259,13 +259,11 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->regs_region);
 
     /* register pmem and dmem */
-    memory_region_init_ram_nomigrate(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
+    memory_region_init_ram(&s->pmem, OBJECT(s), "milkymist-softusb.pmem",
                            s->pmem_size, &error_fatal);
-    vmstate_register_ram_global(&s->pmem);
     sysbus_init_mmio(sbd, &s->pmem);
-    memory_region_init_ram_nomigrate(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
+    memory_region_init_ram(&s->dmem, OBJECT(s), "milkymist-softusb.dmem",
                            s->dmem_size, &error_fatal);
-    vmstate_register_ram_global(&s->dmem);
     s->dmem_ptr = memory_region_get_ram_ptr(&s->dmem);
     sysbus_init_mmio(sbd, &s->dmem);
 
@@ -275,8 +273,8 @@ static void milkymist_softusb_realize(DeviceState *dev, Error **errp)
 
 static const VMStateDescription vmstate_milkymist_softusb = {
     .name = "milkymist-softusb",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32_ARRAY(regs, MilkymistSoftUsbState, R_MAX),
         VMSTATE_HID_KEYBOARD_DEVICE(hid_kbd, MilkymistSoftUsbState),
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 31/32] hw/net/milkymist-minimac2: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the LM32 milkymist machine.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/net/milkymist-minimac2.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/net/milkymist-minimac2.c b/hw/net/milkymist-minimac2.c
index 1ba01754ee..9582b5f8a3 100644
--- a/hw/net/milkymist-minimac2.c
+++ b/hw/net/milkymist-minimac2.c
@@ -473,9 +473,9 @@ static void milkymist_minimac2_realize(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->regs_region);
 
     /* register buffers memory */
-    memory_region_init_ram_nomigrate(&s->buffers, OBJECT(dev), "milkymist-minimac2.buffers",
+    memory_region_init_ram(&s->buffers, OBJECT(dev),
+                           "milkymist-minimac2.buffers",
                            buffers_size, &error_fatal);
-    vmstate_register_ram_global(&s->buffers);
     s->rx0_buf = memory_region_get_ram_ptr(&s->buffers);
     s->rx1_buf = s->rx0_buf + MINIMAC2_BUFFER_SIZE;
     s->tx_buf = s->rx1_buf + MINIMAC2_BUFFER_SIZE;
@@ -506,8 +506,8 @@ static const VMStateDescription vmstate_milkymist_minimac2_mdio = {
 
 static const VMStateDescription vmstate_milkymist_minimac2 = {
     .name = "milkymist-minimac2",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32_ARRAY(regs, MilkymistMinimac2State, R_MAX),
         VMSTATE_UINT16_ARRAY(phy_regs, MilkymistMinimac2State, R_PHY_MAX),
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 31/32] hw/net/milkymist-minimac2: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the LM32 milkymist machine.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/net/milkymist-minimac2.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/net/milkymist-minimac2.c b/hw/net/milkymist-minimac2.c
index 1ba01754ee..9582b5f8a3 100644
--- a/hw/net/milkymist-minimac2.c
+++ b/hw/net/milkymist-minimac2.c
@@ -473,9 +473,9 @@ static void milkymist_minimac2_realize(DeviceState *dev, Error **errp)
     sysbus_init_mmio(sbd, &s->regs_region);
 
     /* register buffers memory */
-    memory_region_init_ram_nomigrate(&s->buffers, OBJECT(dev), "milkymist-minimac2.buffers",
+    memory_region_init_ram(&s->buffers, OBJECT(dev),
+                           "milkymist-minimac2.buffers",
                            buffers_size, &error_fatal);
-    vmstate_register_ram_global(&s->buffers);
     s->rx0_buf = memory_region_get_ram_ptr(&s->buffers);
     s->rx1_buf = s->rx0_buf + MINIMAC2_BUFFER_SIZE;
     s->tx_buf = s->rx1_buf + MINIMAC2_BUFFER_SIZE;
@@ -506,8 +506,8 @@ static const VMStateDescription vmstate_milkymist_minimac2_mdio = {
 
 static const VMStateDescription vmstate_milkymist_minimac2 = {
     .name = "milkymist-minimac2",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .fields = (VMStateField[]) {
         VMSTATE_UINT32_ARRAY(regs, MilkymistMinimac2State, R_MAX),
         VMSTATE_UINT16_ARRAY(phy_regs, MilkymistMinimac2State, R_PHY_MAX),
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 32/32] hw/block/onenand: Let devices own the MemoryRegion they create
  2020-02-24 20:55 ` Philippe Mathieu-Daudé
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Philippe Mathieu-Daudé,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the nSeries machines.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/block/onenand.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index 898ac563a3..f49db0b2ee 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -173,8 +173,8 @@ static int onenand_post_load(void *opaque, int version_id)
 
 static const VMStateDescription vmstate_onenand = {
     .name = "onenand",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .pre_save = onenand_pre_save,
     .post_load = onenand_post_load,
     .fields = (VMStateField[]) {
@@ -809,9 +809,8 @@ static void onenand_realize(DeviceState *dev, Error **errp)
     }
     s->otp = memset(g_malloc((64 + 2) << PAGE_SHIFT),
                     0xff, (64 + 2) << PAGE_SHIFT);
-    memory_region_init_ram_nomigrate(&s->ram, OBJECT(s), "onenand.ram",
+    memory_region_init_ram(&s->ram, OBJECT(s), "onenand.ram",
                            0xc000 << s->shift, &error_fatal);
-    vmstate_register_ram_global(&s->ram);
     ram = memory_region_get_ram_ptr(&s->ram);
     s->boot[0] = ram + (0x0000 << s->shift);
     s->boot[1] = ram + (0x8000 << s->shift);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* [RFC PATCH RESEND v2 32/32] hw/block/onenand: Let devices own the MemoryRegion they create
@ 2020-02-24 20:55   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-24 20:55 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Philippe Mathieu-Daudé,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

Avoid orphan memory regions being added in the /unattached QOM
container.

Note this change break the migration of the nSeries machines.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/block/onenand.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/hw/block/onenand.c b/hw/block/onenand.c
index 898ac563a3..f49db0b2ee 100644
--- a/hw/block/onenand.c
+++ b/hw/block/onenand.c
@@ -173,8 +173,8 @@ static int onenand_post_load(void *opaque, int version_id)
 
 static const VMStateDescription vmstate_onenand = {
     .name = "onenand",
-    .version_id = 1,
-    .minimum_version_id = 1,
+    .version_id = 2,
+    .minimum_version_id = 2,
     .pre_save = onenand_pre_save,
     .post_load = onenand_post_load,
     .fields = (VMStateField[]) {
@@ -809,9 +809,8 @@ static void onenand_realize(DeviceState *dev, Error **errp)
     }
     s->otp = memset(g_malloc((64 + 2) << PAGE_SHIFT),
                     0xff, (64 + 2) << PAGE_SHIFT);
-    memory_region_init_ram_nomigrate(&s->ram, OBJECT(s), "onenand.ram",
+    memory_region_init_ram(&s->ram, OBJECT(s), "onenand.ram",
                            0xc000 << s->shift, &error_fatal);
-    vmstate_register_ram_global(&s->ram);
     ram = memory_region_get_ram_ptr(&s->ram);
     s->boot[0] = ram + (0x0000 << s->shift);
     s->boot[1] = ram + (0x8000 << s->shift);
-- 
2.21.1



^ permalink raw reply related	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 02/32] memory: Simplify memory_region_init_rom_nomigrate() to ease review
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-24 21:17     ` Alistair Francis
  -1 siblings, 0 replies; 81+ messages in thread
From: Alistair Francis @ 2020-02-24 21:17 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, qemu-devel@nongnu.org Developers,
	KONRAD Frederic, Alistair Francis, Edgar E. Iglesias,
	Jean-Christophe Dubois, Qemu-block, Magnus Damm, Max Reitz,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, Richard Henderson, Artyom Tarasenko,
	Eduardo Habkost, Alistair Francis, Fabien Chouteau, qemu-arm,
	Peter Chubb, open list:New World, David Gibson, Kevin Wolf,
	open list:RISC-V, Igor Mitsyanko, Bastian Koppelmann,
	Laurent Vivier, Subbaraya Sundeep, Michael Walle, Palmer Dabbelt,
	Aleksandar Markovic, Paolo Bonzini, Aurelien Jarno

On Mon, Feb 24, 2020 at 1:10 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> memory_region_init_rom_nomigrate() has the same content than
> memory_region_init_ram_shared_nomigrate(), with setting the
> readonly mode. The code is easier to review as creating a
> readonly ram/shared/nomigrate region.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  memory.c | 13 +------------
>  1 file changed, 1 insertion(+), 12 deletions(-)
>
> diff --git a/memory.c b/memory.c
> index ce1179874e..6a327a54ed 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -1659,19 +1659,8 @@ void memory_region_init_rom_nomigrate(MemoryRegion *mr,
>                                        uint64_t size,
>                                        Error **errp)
>  {
> -    Error *err = NULL;
> -    memory_region_init(mr, owner, name, size);
> -    mr->ram = true;
> +    memory_region_init_ram_shared_nomigrate(mr, owner, name, size, false, errp);
>      mr->readonly = true;
> -    mr->terminates = true;
> -    mr->destructor = memory_region_destructor_ram;
> -    mr->ram_block = qemu_ram_alloc(size, false, mr, &err);
> -    mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
> -    if (err) {
> -        mr->size = int128_zero();
> -        object_unparent(OBJECT(mr));
> -        error_propagate(errp, err);
> -    }
>  }
>
>  void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
> --
> 2.21.1
>
>


^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 02/32] memory: Simplify memory_region_init_rom_nomigrate() to ease review
@ 2020-02-24 21:17     ` Alistair Francis
  0 siblings, 0 replies; 81+ messages in thread
From: Alistair Francis @ 2020-02-24 21:17 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel@nongnu.org Developers, Paolo Bonzini, Peter Maydell,
	Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, Qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, open list:RISC-V, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	open list:New World, Aleksandar Markovic, Aurelien Jarno

On Mon, Feb 24, 2020 at 1:10 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> memory_region_init_rom_nomigrate() has the same content than
> memory_region_init_ram_shared_nomigrate(), with setting the
> readonly mode. The code is easier to review as creating a
> readonly ram/shared/nomigrate region.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Reviewed-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  memory.c | 13 +------------
>  1 file changed, 1 insertion(+), 12 deletions(-)
>
> diff --git a/memory.c b/memory.c
> index ce1179874e..6a327a54ed 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -1659,19 +1659,8 @@ void memory_region_init_rom_nomigrate(MemoryRegion *mr,
>                                        uint64_t size,
>                                        Error **errp)
>  {
> -    Error *err = NULL;
> -    memory_region_init(mr, owner, name, size);
> -    mr->ram = true;
> +    memory_region_init_ram_shared_nomigrate(mr, owner, name, size, false, errp);
>      mr->readonly = true;
> -    mr->terminates = true;
> -    mr->destructor = memory_region_destructor_ram;
> -    mr->ram_block = qemu_ram_alloc(size, false, mr, &err);
> -    mr->dirty_log_mask = tcg_enabled() ? (1 << DIRTY_MEMORY_CODE) : 0;
> -    if (err) {
> -        mr->size = int128_zero();
> -        object_unparent(OBJECT(mr));
> -        error_propagate(errp, err);
> -    }
>  }
>
>  void memory_region_init_rom_device_nomigrate(MemoryRegion *mr,
> --
> 2.21.1
>
>


^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 10/32] hw/pci-host: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-25  0:23     ` David Gibson
  -1 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:23 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, qemu-devel, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Max Reitz, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Palmer Dabbelt,
	Aleksandar Rikalo, Artyom Tarasenko, Eduardo Habkost,
	Jean-Christophe Dubois, Alistair Francis, Fabien Chouteau,
	qemu-arm, Peter Chubb, Marc-André Lureau, Richard Henderson,
	Kevin Wolf, qemu-riscv, Igor Mitsyanko, Bastian Koppelmann,
	Laurent Vivier, Subbaraya Sundeep, Michael Walle, qemu-ppc,
	Aleksandar Markovic, Paolo Bonzini, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 1409 bytes --]

On Mon, Feb 24, 2020 at 09:55:11PM +0100, Philippe Mathieu-Daudé wrote:
> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/pci-host/prep.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
> index 1aff72bec6..1a02e9a670 100644
> --- a/hw/pci-host/prep.c
> +++ b/hw/pci-host/prep.c
> @@ -325,9 +325,8 @@ static void raven_realize(PCIDevice *d, Error **errp)
>      d->config[0x0D] = 0x10; // latency_timer
>      d->config[0x34] = 0x00; // capabilities_pointer
>  
> -    memory_region_init_ram_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
> -                           &error_fatal);
> -    memory_region_set_readonly(&s->bios, true);
> +    memory_region_init_rom_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
> +                                     &error_fatal);
>      memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE),
>                                  &s->bios);
>      if (s->bios_name) {

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 10/32] hw/pci-host: Use memory_region_init_rom() with read-only regions
@ 2020-02-25  0:23     ` David Gibson
  0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:23 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Kevin Wolf,
	Alistair Francis, qemu-block, Marcel Apfelbaum, Joel Stanley,
	qemu-ppc, Alistair Francis, Sagar Karandikar, Magnus Damm,
	Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, Jean-Christophe Dubois, Edgar E. Iglesias,
	Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

[-- Attachment #1: Type: text/plain, Size: 1409 bytes --]

On Mon, Feb 24, 2020 at 09:55:11PM +0100, Philippe Mathieu-Daudé wrote:
> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/pci-host/prep.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
> index 1aff72bec6..1a02e9a670 100644
> --- a/hw/pci-host/prep.c
> +++ b/hw/pci-host/prep.c
> @@ -325,9 +325,8 @@ static void raven_realize(PCIDevice *d, Error **errp)
>      d->config[0x0D] = 0x10; // latency_timer
>      d->config[0x34] = 0x00; // capabilities_pointer
>  
> -    memory_region_init_ram_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
> -                           &error_fatal);
> -    memory_region_set_readonly(&s->bios, true);
> +    memory_region_init_rom_nomigrate(&s->bios, OBJECT(s), "bios", BIOS_SIZE,
> +                                     &error_fatal);
>      memory_region_add_subregion(get_system_memory(), (uint32_t)(-BIOS_SIZE),
>                                  &s->bios);
>      if (s->bios_name) {

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 11/32] hw/ppc: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-25  0:23     ` David Gibson
  -1 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:23 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, qemu-devel, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Max Reitz, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Palmer Dabbelt,
	Aleksandar Rikalo, Artyom Tarasenko, Eduardo Habkost,
	Jean-Christophe Dubois, Alistair Francis, Fabien Chouteau,
	qemu-arm, Peter Chubb, Marc-André Lureau, Richard Henderson,
	Kevin Wolf, qemu-riscv, Igor Mitsyanko, Bastian Koppelmann,
	Laurent Vivier, Subbaraya Sundeep, Michael Walle, qemu-ppc,
	Aleksandar Markovic, Paolo Bonzini, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 2301 bytes --]

On Mon, Feb 24, 2020 at 09:55:12PM +0100, Philippe Mathieu-Daudé wrote:
> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/ppc/mac_newworld.c | 3 +--
>  hw/ppc/mac_oldworld.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 464d012103..566413e479 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -156,13 +156,12 @@ static void ppc_core99_init(MachineState *machine)
>      memory_region_add_subregion(get_system_memory(), 0, ram);
>  
>      /* allocate and load BIOS */
> -    memory_region_init_ram(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
>                             &error_fatal);
>  
>      if (bios_name == NULL)
>          bios_name = PROM_FILENAME;
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> -    memory_region_set_readonly(bios, true);
>      memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
>  
>      /* Load OpenBIOS (ELF) */
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index 7318d7e9b4..8b22ff60b8 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -132,13 +132,12 @@ static void ppc_heathrow_init(MachineState *machine)
>      memory_region_add_subregion(sysmem, 0, ram);
>  
>      /* allocate and load BIOS */
> -    memory_region_init_ram(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
>                             &error_fatal);
>  
>      if (bios_name == NULL)
>          bios_name = PROM_FILENAME;
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> -    memory_region_set_readonly(bios, true);
>      memory_region_add_subregion(sysmem, PROM_ADDR, bios);
>  
>      /* Load OpenBIOS (ELF) */

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 11/32] hw/ppc: Use memory_region_init_rom() with read-only regions
@ 2020-02-25  0:23     ` David Gibson
  0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:23 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Kevin Wolf,
	Alistair Francis, qemu-block, Marcel Apfelbaum, Joel Stanley,
	qemu-ppc, Alistair Francis, Sagar Karandikar, Magnus Damm,
	Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, Jean-Christophe Dubois, Edgar E. Iglesias,
	Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

[-- Attachment #1: Type: text/plain, Size: 2301 bytes --]

On Mon, Feb 24, 2020 at 09:55:12PM +0100, Philippe Mathieu-Daudé wrote:
> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/ppc/mac_newworld.c | 3 +--
>  hw/ppc/mac_oldworld.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 464d012103..566413e479 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -156,13 +156,12 @@ static void ppc_core99_init(MachineState *machine)
>      memory_region_add_subregion(get_system_memory(), 0, ram);
>  
>      /* allocate and load BIOS */
> -    memory_region_init_ram(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "ppc_core99.bios", BIOS_SIZE,
>                             &error_fatal);
>  
>      if (bios_name == NULL)
>          bios_name = PROM_FILENAME;
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> -    memory_region_set_readonly(bios, true);
>      memory_region_add_subregion(get_system_memory(), PROM_ADDR, bios);
>  
>      /* Load OpenBIOS (ELF) */
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index 7318d7e9b4..8b22ff60b8 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -132,13 +132,12 @@ static void ppc_heathrow_init(MachineState *machine)
>      memory_region_add_subregion(sysmem, 0, ram);
>  
>      /* allocate and load BIOS */
> -    memory_region_init_ram(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "ppc_heathrow.bios", BIOS_SIZE,
>                             &error_fatal);
>  
>      if (bios_name == NULL)
>          bios_name = PROM_FILENAME;
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> -    memory_region_set_readonly(bios, true);
>      memory_region_add_subregion(sysmem, PROM_ADDR, bios);
>  
>      /* Load OpenBIOS (ELF) */

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 17/32] hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-25  0:24     ` David Gibson
  -1 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:24 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, qemu-devel, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Max Reitz, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Palmer Dabbelt,
	Aleksandar Rikalo, Artyom Tarasenko, Eduardo Habkost,
	Jean-Christophe Dubois, Alistair Francis, Fabien Chouteau,
	qemu-arm, Peter Chubb, Marc-André Lureau, Richard Henderson,
	Kevin Wolf, qemu-riscv, Igor Mitsyanko, Bastian Koppelmann,
	Laurent Vivier, Subbaraya Sundeep, Michael Walle, qemu-ppc,
	Aleksandar Markovic, Paolo Bonzini, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 2718 bytes --]

On Mon, Feb 24, 2020 at 09:55:18PM +0100, Philippe Mathieu-Daudé wrote:
> The scripts/coccinelle/memory-region-housekeeping.cocci reported:
> * TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=195::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::195]]
> * TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=464::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::464]]
> 
> We can indeed replace the memory_region_init_ram() and
> memory_region_set_readonly() calls by memory_region_init_rom().
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/ppc/ppc405_boards.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
> index 1f721feed6..5afe023253 100644
> --- a/hw/ppc/ppc405_boards.c
> +++ b/hw/ppc/ppc405_boards.c
> @@ -192,7 +192,7 @@ static void ref405ep_init(MachineState *machine)
>  #endif
>      {
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "ef405ep.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "ef405ep.bios", BIOS_SIZE,
>                                 &error_fatal);
>  
>          if (bios_name == NULL)
> @@ -216,7 +216,6 @@ static void ref405ep_init(MachineState *machine)
>              /* Avoid an uninitialized variable warning */
>              bios_size = -1;
>          }
> -        memory_region_set_readonly(bios, true);
>      }
>      /* Register FPGA */
>      ref405ep_fpga_init(sysmem, 0xF0300000);
> @@ -461,7 +460,7 @@ static void taihu_405ep_init(MachineState *machine)
>          if (bios_name == NULL)
>              bios_name = BIOS_FILENAME;
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
>                                 &error_fatal);
>          filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
>          if (filename) {
> @@ -479,7 +478,6 @@ static void taihu_405ep_init(MachineState *machine)
>              error_report("Could not load PowerPC BIOS '%s'", bios_name);
>              exit(1);
>          }
> -        memory_region_set_readonly(bios, true);
>      }
>      /* Register Linux flash */
>      dinfo = drive_get(IF_PFLASH, 0, fl_idx);

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 17/32] hw/ppc/ppc405: Use memory_region_init_rom() with read-only regions
@ 2020-02-25  0:24     ` David Gibson
  0 siblings, 0 replies; 81+ messages in thread
From: David Gibson @ 2020-02-25  0:24 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Kevin Wolf,
	Alistair Francis, qemu-block, Marcel Apfelbaum, Joel Stanley,
	qemu-ppc, Alistair Francis, Sagar Karandikar, Magnus Damm,
	Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, Jean-Christophe Dubois, Edgar E. Iglesias,
	Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

[-- Attachment #1: Type: text/plain, Size: 2718 bytes --]

On Mon, Feb 24, 2020 at 09:55:18PM +0100, Philippe Mathieu-Daudé wrote:
> The scripts/coccinelle/memory-region-housekeeping.cocci reported:
> * TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=195::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::195]]
> * TODO [[view:./hw/ppc/ppc405_boards.c::face=ovl-face1::linb=464::colb=8::cole=30][potential use of memory_region_init_rom*() in  ./hw/ppc/ppc405_boards.c::464]]
> 
> We can indeed replace the memory_region_init_ram() and
> memory_region_set_readonly() calls by memory_region_init_rom().
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/ppc/ppc405_boards.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c
> index 1f721feed6..5afe023253 100644
> --- a/hw/ppc/ppc405_boards.c
> +++ b/hw/ppc/ppc405_boards.c
> @@ -192,7 +192,7 @@ static void ref405ep_init(MachineState *machine)
>  #endif
>      {
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "ef405ep.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "ef405ep.bios", BIOS_SIZE,
>                                 &error_fatal);
>  
>          if (bios_name == NULL)
> @@ -216,7 +216,6 @@ static void ref405ep_init(MachineState *machine)
>              /* Avoid an uninitialized variable warning */
>              bios_size = -1;
>          }
> -        memory_region_set_readonly(bios, true);
>      }
>      /* Register FPGA */
>      ref405ep_fpga_init(sysmem, 0xF0300000);
> @@ -461,7 +460,7 @@ static void taihu_405ep_init(MachineState *machine)
>          if (bios_name == NULL)
>              bios_name = BIOS_FILENAME;
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "taihu_405ep.bios", BIOS_SIZE,
>                                 &error_fatal);
>          filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
>          if (filename) {
> @@ -479,7 +478,6 @@ static void taihu_405ep_init(MachineState *machine)
>              error_report("Could not load PowerPC BIOS '%s'", bios_name);
>              exit(1);
>          }
> -        memory_region_set_readonly(bios, true);
>      }
>      /* Register Linux flash */
>      dinfo = drive_get(IF_PFLASH, 0, fl_idx);

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-25 10:05     ` Philippe Mathieu-Daudé
  -1 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 10:05 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell, Dr. David Alan Gilbert
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

On 2/24/20 9:55 PM, Philippe Mathieu-Daudé wrote:
> The scripts/coccinelle/memory-region-housekeeping.cocci reported:
> * TODO [[view:hw/i386/pc_sysfw.c::face=ovl-face1::linb=67::colb=4::cole=26][potential use of memory_region_init_rom*() in  hw/i386/pc_sysfw.c::67]]
> 
> pc_isa_bios_init() does a manual copy of a part of the BIOS,
> from a read-only region. We can simplify by directly aliasing
> the same part.
> 
> Before:
> 
>    (qemu) info mtree
>    memory-region: system
>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>        0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>          00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
>        ...
>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
> 
> After:
> 
>    (qemu) info mtree
>    memory-region: system
>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>        0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>          00000000000e0000-00000000000fffff (prio 1, romd): alias isa-bios @system.flash0 00000000000e0000-00000000000fffff
>        ...
>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

IIUC migrating old -> new is OK, the previous ROM copy is discarded.

What about new -> old, does it require specific handling? Do we care?

> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>   hw/i386/pc_sysfw.c | 24 ++++++------------------
>   1 file changed, 6 insertions(+), 18 deletions(-)
> 
> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
> index f5f3f466b0..e864c09ea8 100644
> --- a/hw/i386/pc_sysfw.c
> +++ b/hw/i386/pc_sysfw.c
> @@ -54,31 +54,19 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory,
>                                MemoryRegion *flash_mem,
>                                int ram_size)
>   {
> -    int isa_bios_size;
> -    MemoryRegion *isa_bios;
> -    uint64_t flash_size;
> -    void *flash_ptr, *isa_bios_ptr;
> -
> -    flash_size = memory_region_size(flash_mem);
> +    uint64_t isa_bios_size;
> +    MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
> +    uint64_t flash_size = memory_region_size(flash_mem);
>   
>       /* map the last 128KB of the BIOS in ISA space */
>       isa_bios_size = MIN(flash_size, 128 * KiB);
> -    isa_bios = g_malloc(sizeof(*isa_bios));
> -    memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size,
> -                           &error_fatal);
> +    memory_region_init_alias(isa_bios, NULL, "isa-bios", flash_mem,
> +                             flash_size - isa_bios_size,
> +                             isa_bios_size);
>       memory_region_add_subregion_overlap(rom_memory,
>                                           0x100000 - isa_bios_size,
>                                           isa_bios,
>                                           1);
> -
> -    /* copy ISA rom image from top of flash memory */
> -    flash_ptr = memory_region_get_ram_ptr(flash_mem);
> -    isa_bios_ptr = memory_region_get_ram_ptr(isa_bios);
> -    memcpy(isa_bios_ptr,
> -           ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size),
> -           isa_bios_size);
> -
> -    memory_region_set_readonly(isa_bios, true);
>   }
>   
>   static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms,
> 



^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
@ 2020-02-25 10:05     ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 81+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-02-25 10:05 UTC (permalink / raw)
  To: qemu-devel, Paolo Bonzini, Peter Maydell, Dr. David Alan Gilbert
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

On 2/24/20 9:55 PM, Philippe Mathieu-Daudé wrote:
> The scripts/coccinelle/memory-region-housekeeping.cocci reported:
> * TODO [[view:hw/i386/pc_sysfw.c::face=ovl-face1::linb=67::colb=4::cole=26][potential use of memory_region_init_rom*() in  hw/i386/pc_sysfw.c::67]]
> 
> pc_isa_bios_init() does a manual copy of a part of the BIOS,
> from a read-only region. We can simplify by directly aliasing
> the same part.
> 
> Before:
> 
>    (qemu) info mtree
>    memory-region: system
>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>        0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>          00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
>        ...
>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
> 
> After:
> 
>    (qemu) info mtree
>    memory-region: system
>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>        0000000000000000-0000000007ffffff (prio 0, ram): alias ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>          00000000000e0000-00000000000fffff (prio 1, romd): alias isa-bios @system.flash0 00000000000e0000-00000000000fffff
>        ...
>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0

IIUC migrating old -> new is OK, the previous ROM copy is discarded.

What about new -> old, does it require specific handling? Do we care?

> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>   hw/i386/pc_sysfw.c | 24 ++++++------------------
>   1 file changed, 6 insertions(+), 18 deletions(-)
> 
> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
> index f5f3f466b0..e864c09ea8 100644
> --- a/hw/i386/pc_sysfw.c
> +++ b/hw/i386/pc_sysfw.c
> @@ -54,31 +54,19 @@ static void pc_isa_bios_init(MemoryRegion *rom_memory,
>                                MemoryRegion *flash_mem,
>                                int ram_size)
>   {
> -    int isa_bios_size;
> -    MemoryRegion *isa_bios;
> -    uint64_t flash_size;
> -    void *flash_ptr, *isa_bios_ptr;
> -
> -    flash_size = memory_region_size(flash_mem);
> +    uint64_t isa_bios_size;
> +    MemoryRegion *isa_bios = g_new(MemoryRegion, 1);
> +    uint64_t flash_size = memory_region_size(flash_mem);
>   
>       /* map the last 128KB of the BIOS in ISA space */
>       isa_bios_size = MIN(flash_size, 128 * KiB);
> -    isa_bios = g_malloc(sizeof(*isa_bios));
> -    memory_region_init_ram(isa_bios, NULL, "isa-bios", isa_bios_size,
> -                           &error_fatal);
> +    memory_region_init_alias(isa_bios, NULL, "isa-bios", flash_mem,
> +                             flash_size - isa_bios_size,
> +                             isa_bios_size);
>       memory_region_add_subregion_overlap(rom_memory,
>                                           0x100000 - isa_bios_size,
>                                           isa_bios,
>                                           1);
> -
> -    /* copy ISA rom image from top of flash memory */
> -    flash_ptr = memory_region_get_ram_ptr(flash_mem);
> -    isa_bios_ptr = memory_region_get_ram_ptr(isa_bios);
> -    memcpy(isa_bios_ptr,
> -           ((uint8_t*)flash_ptr) + (flash_size - isa_bios_size),
> -           isa_bios_size);
> -
> -    memory_region_set_readonly(isa_bios, true);
>   }
>   
>   static PFlashCFI01 *pc_pflash_create(PCMachineState *pcms,
> 



^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 14/32] hw/sparc: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
  (?)
@ 2020-02-25 10:32   ` KONRAD Frederic
  -1 siblings, 0 replies; 81+ messages in thread
From: KONRAD Frederic @ 2020-02-25 10:32 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, QEMU Developers



Le 2/24/20 à 9:55 PM, Philippe Mathieu-Daudé a écrit :
> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Looks good to me.

Reviewed-by: KONRAD Frederic <frederic.konrad@adacore.com>

Thanks,
Fred

> ---
>   hw/sparc/leon3.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
> index f5a087dd86..23d0bdbd71 100644
> --- a/hw/sparc/leon3.c
> +++ b/hw/sparc/leon3.c
> @@ -256,8 +256,7 @@ static void leon3_generic_hw_init(MachineState *machine)
>   
>       /* Allocate BIOS */
>       prom_size = 8 * MiB;
> -    memory_region_init_ram(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
> -    memory_region_set_readonly(prom, true);
> +    memory_region_init_rom(prom, NULL, "Leon3.bios", prom_size, &error_fatal);
>       memory_region_add_subregion(address_space_mem, LEON3_PROM_OFFSET, prom);
>   
>       /* Load boot prom */
> 


^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
  2020-02-25 10:05     ` Philippe Mathieu-Daudé
@ 2020-02-25 12:39       ` Paolo Bonzini
  -1 siblings, 0 replies; 81+ messages in thread
From: Paolo Bonzini @ 2020-02-25 12:39 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé,
	qemu-devel, Peter Maydell, Dr. David Alan Gilbert
  Cc: Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

On 25/02/20 11:05, Philippe Mathieu-Daudé wrote:
>>
>> pc_isa_bios_init() does a manual copy of a part of the BIOS,
>> from a read-only region. We can simplify by directly aliasing
>> the same part.
>>
>> Before:
>>
>>    (qemu) info mtree
>>    memory-region: system
>>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>>        0000000000000000-0000000007ffffff (prio 0, ram): alias
>> ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>>          00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
>>        ...
>>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
>>
>> After:
>>
>>    (qemu) info mtree
>>    memory-region: system
>>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>>        0000000000000000-0000000007ffffff (prio 0, ram): alias
>> ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>>          00000000000e0000-00000000000fffff (prio 1, romd): alias
>> isa-bios @system.flash0 00000000000e0000-00000000000fffff
>>        ...
>>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
> 
> IIUC migrating old -> new is OK, the previous ROM copy is discarded.
> 
> What about new -> old, does it require specific handling? Do we care?

Old->new is broken because the "isa-bios" memory region is not found.

qemu-system-x86_64: Unknown ramblock "isa-bios", cannot accept migration
qemu-system-x86_64: error while loading state for instance 0x0 of device 'ram'
qemu-system-x86_64: load of migration failed: Invalid argument

Paolo



^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias()
@ 2020-02-25 12:39       ` Paolo Bonzini
  0 siblings, 0 replies; 81+ messages in thread
From: Paolo Bonzini @ 2020-02-25 12:39 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé,
	qemu-devel, Peter Maydell, Dr. David Alan Gilbert
  Cc: Kevin Wolf, Alistair Francis, qemu-block, Marcel Apfelbaum,
	Joel Stanley, qemu-ppc, Alistair Francis, Sagar Karandikar,
	Magnus Damm, Aleksandar Markovic, Aleksandar Rikalo, Jason Wang,
	Igor Mitsyanko, Bastian Koppelmann, Laurent Vivier,
	Palmer Dabbelt, Peter Chubb, Max Reitz, Subbaraya Sundeep,
	KONRAD Frederic, Marc-André Lureau, Andrzej Zaborowski,
	Hervé Poussineau, qemu-arm, Aurelien Jarno, Michael Walle,
	Artyom Tarasenko, Eduardo Habkost, Michael S. Tsirkin,
	Richard Henderson, David Gibson, Jean-Christophe Dubois,
	Edgar E. Iglesias, Mark Cave-Ayland, qemu-riscv, Fabien Chouteau

On 25/02/20 11:05, Philippe Mathieu-Daudé wrote:
>>
>> pc_isa_bios_init() does a manual copy of a part of the BIOS,
>> from a read-only region. We can simplify by directly aliasing
>> the same part.
>>
>> Before:
>>
>>    (qemu) info mtree
>>    memory-region: system
>>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>>        0000000000000000-0000000007ffffff (prio 0, ram): alias
>> ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>>          00000000000e0000-00000000000fffff (prio 1, rom): isa-bios
>>        ...
>>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
>>
>> After:
>>
>>    (qemu) info mtree
>>    memory-region: system
>>      0000000000000000-ffffffffffffffff (prio 0, i/o): system
>>        0000000000000000-0000000007ffffff (prio 0, ram): alias
>> ram-below-4g @pc.ram 0000000000000000-0000000007ffffff
>>        0000000000000000-ffffffffffffffff (prio -1, i/o): pci
>>          00000000000a0000-00000000000bffff (prio 1, i/o): vga-lowmem
>>          00000000000c0000-00000000000dffff (prio 1, rom): pc.rom
>>          00000000000e0000-00000000000fffff (prio 1, romd): alias
>> isa-bios @system.flash0 00000000000e0000-00000000000fffff
>>        ...
>>        00000000fff00000-00000000ffffffff (prio 0, romd): system.flash0
> 
> IIUC migrating old -> new is OK, the previous ROM copy is discarded.
> 
> What about new -> old, does it require specific handling? Do we care?

Old->new is broken because the "isa-bios" memory region is not found.

qemu-system-x86_64: Unknown ramblock "isa-bios", cannot accept migration
qemu-system-x86_64: error while loading state for instance 0x0 of device 'ram'
qemu-system-x86_64: load of migration failed: Invalid argument

Paolo



^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 07/32] hw/mips: Use memory_region_init_rom() with read-only regions
  2020-02-24 20:55   ` Philippe Mathieu-Daudé
@ 2020-02-26 11:38     ` Aleksandar Markovic
  -1 siblings, 0 replies; 81+ messages in thread
From: Aleksandar Markovic @ 2020-02-26 11:38 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Peter Maydell, Sagar Karandikar, Michael S. Tsirkin, Jason Wang,
	Mark Cave-Ayland, qemu-devel, KONRAD Frederic, Alistair Francis,
	Edgar E. Iglesias, Jean-Christophe Dubois, qemu-block,
	Magnus Damm, Max Reitz, Hervé Poussineau, Joel Stanley,
	Marc-André Lureau, Aleksandar Rikalo, Richard Henderson,
	Artyom Tarasenko, Eduardo Habkost, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, qemu-ppc, David Gibson,
	Kevin Wolf, qemu-riscv, Igor Mitsyanko, Bastian Koppelmann,
	Laurent Vivier, Subbaraya Sundeep, Michael Walle, Palmer Dabbelt,
	Aleksandar Markovic, Paolo Bonzini, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 4343 bytes --]

On Monday, February 24, 2020, Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---


Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>

Will be applied to the next MIPS queue, planned to be sent in next few days.


>  hw/mips/mips_fulong2e.c | 3 +--
>  hw/mips/mips_jazz.c     | 6 ++----
>  hw/mips/mips_mipssim.c  | 3 +--
>  hw/mips/mips_r4k.c      | 3 +--
>  4 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index 2e043cbb98..547a7d3a45 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -319,9 +319,8 @@ static void mips_fulong2e_init(MachineState *machine)
>
>      /* allocate RAM */
>      memory_region_allocate_system_memory(ram, NULL, "fulong2e.ram",
> ram_size);
> -    memory_region_init_ram(bios, NULL, "fulong2e.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "fulong2e.bios", BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>
>      memory_region_add_subregion(address_space_mem, 0, ram);
>      memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index 66fd4d867d..cf47335ea5 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -195,9 +195,8 @@ static void mips_jazz_init(MachineState *machine,
>                                           machine->ram_size);
>      memory_region_add_subregion(address_space, 0, ram);
>
> -    memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>      memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios,
>                               0, MAGNUM_BIOS_SIZE);
>      memory_region_add_subregion(address_space, 0x1fc00000LL, bios);
> @@ -263,9 +262,8 @@ static void mips_jazz_init(MachineState *machine,
>          {
>              /* Simple ROM, so user doesn't have to provide one */
>              MemoryRegion *rom_mr = g_new(MemoryRegion, 1);
> -            memory_region_init_ram(rom_mr, NULL, "g364fb.rom", 0x80000,
> +            memory_region_init_rom(rom_mr, NULL, "g364fb.rom", 0x80000,
>                                     &error_fatal);
> -            memory_region_set_readonly(rom_mr, true);
>              uint8_t *rom = memory_region_get_ram_ptr(rom_mr);
>              memory_region_add_subregion(address_space, 0x60000000,
> rom_mr);
>              rom[0] = 0x10; /* Mips G364 */
> diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
> index b934ca9d51..3fdbb21680 100644
> --- a/hw/mips/mips_mipssim.c
> +++ b/hw/mips/mips_mipssim.c
> @@ -169,9 +169,8 @@ mips_mipssim_init(MachineState *machine)
>      /* Allocate RAM. */
>      memory_region_allocate_system_memory(ram, NULL, "mips_mipssim.ram",
>                                           ram_size);
> -    memory_region_init_ram(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>
>      memory_region_add_subregion(address_space_mem, 0, ram);
>
> diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
> index b2aec434c3..54b286ceee 100644
> --- a/hw/mips/mips_r4k.c
> +++ b/hw/mips/mips_r4k.c
> @@ -241,9 +241,8 @@ void mips_r4k_init(MachineState *machine)
>      dinfo = drive_get(IF_PFLASH, 0, 0);
>      if ((bios_size > 0) && (bios_size <= BIOS_SIZE)) {
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
>                                 &error_fatal);
> -        memory_region_set_readonly(bios, true);
>          memory_region_add_subregion(get_system_memory(), 0x1fc00000,
> bios);
>
>          load_image_targphys(filename, 0x1fc00000, BIOS_SIZE);
> --
> 2.21.1
>
>
>

[-- Attachment #2: Type: text/html, Size: 5489 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

* Re: [PATCH RESEND v2 07/32] hw/mips: Use memory_region_init_rom() with read-only regions
@ 2020-02-26 11:38     ` Aleksandar Markovic
  0 siblings, 0 replies; 81+ messages in thread
From: Aleksandar Markovic @ 2020-02-26 11:38 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Sagar Karandikar,
	Michael S. Tsirkin, Jason Wang, Mark Cave-Ayland,
	KONRAD Frederic, Alistair Francis, Edgar E. Iglesias,
	Subbaraya Sundeep, qemu-block, Magnus Damm,
	Hervé Poussineau, Joel Stanley, Marc-André Lureau,
	Aleksandar Rikalo, David Gibson, Artyom Tarasenko,
	Eduardo Habkost, Jean-Christophe Dubois, Alistair Francis,
	Fabien Chouteau, qemu-arm, Peter Chubb, Palmer Dabbelt,
	Richard Henderson, Kevin Wolf, qemu-riscv, Igor Mitsyanko,
	Bastian Koppelmann, Laurent Vivier, Max Reitz, Michael Walle,
	qemu-ppc, Aleksandar Markovic, Aurelien Jarno

[-- Attachment #1: Type: text/plain, Size: 4343 bytes --]

On Monday, February 24, 2020, Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> This commit was produced with the Coccinelle script
> scripts/coccinelle/memory-region-housekeeping.cocci.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---


Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com>

Will be applied to the next MIPS queue, planned to be sent in next few days.


>  hw/mips/mips_fulong2e.c | 3 +--
>  hw/mips/mips_jazz.c     | 6 ++----
>  hw/mips/mips_mipssim.c  | 3 +--
>  hw/mips/mips_r4k.c      | 3 +--
>  4 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
> index 2e043cbb98..547a7d3a45 100644
> --- a/hw/mips/mips_fulong2e.c
> +++ b/hw/mips/mips_fulong2e.c
> @@ -319,9 +319,8 @@ static void mips_fulong2e_init(MachineState *machine)
>
>      /* allocate RAM */
>      memory_region_allocate_system_memory(ram, NULL, "fulong2e.ram",
> ram_size);
> -    memory_region_init_ram(bios, NULL, "fulong2e.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "fulong2e.bios", BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>
>      memory_region_add_subregion(address_space_mem, 0, ram);
>      memory_region_add_subregion(address_space_mem, 0x1fc00000LL, bios);
> diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
> index 66fd4d867d..cf47335ea5 100644
> --- a/hw/mips/mips_jazz.c
> +++ b/hw/mips/mips_jazz.c
> @@ -195,9 +195,8 @@ static void mips_jazz_init(MachineState *machine,
>                                           machine->ram_size);
>      memory_region_add_subregion(address_space, 0, ram);
>
> -    memory_region_init_ram(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "mips_jazz.bios", MAGNUM_BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>      memory_region_init_alias(bios2, NULL, "mips_jazz.bios", bios,
>                               0, MAGNUM_BIOS_SIZE);
>      memory_region_add_subregion(address_space, 0x1fc00000LL, bios);
> @@ -263,9 +262,8 @@ static void mips_jazz_init(MachineState *machine,
>          {
>              /* Simple ROM, so user doesn't have to provide one */
>              MemoryRegion *rom_mr = g_new(MemoryRegion, 1);
> -            memory_region_init_ram(rom_mr, NULL, "g364fb.rom", 0x80000,
> +            memory_region_init_rom(rom_mr, NULL, "g364fb.rom", 0x80000,
>                                     &error_fatal);
> -            memory_region_set_readonly(rom_mr, true);
>              uint8_t *rom = memory_region_get_ram_ptr(rom_mr);
>              memory_region_add_subregion(address_space, 0x60000000,
> rom_mr);
>              rom[0] = 0x10; /* Mips G364 */
> diff --git a/hw/mips/mips_mipssim.c b/hw/mips/mips_mipssim.c
> index b934ca9d51..3fdbb21680 100644
> --- a/hw/mips/mips_mipssim.c
> +++ b/hw/mips/mips_mipssim.c
> @@ -169,9 +169,8 @@ mips_mipssim_init(MachineState *machine)
>      /* Allocate RAM. */
>      memory_region_allocate_system_memory(ram, NULL, "mips_mipssim.ram",
>                                           ram_size);
> -    memory_region_init_ram(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
> +    memory_region_init_rom(bios, NULL, "mips_mipssim.bios", BIOS_SIZE,
>                             &error_fatal);
> -    memory_region_set_readonly(bios, true);
>
>      memory_region_add_subregion(address_space_mem, 0, ram);
>
> diff --git a/hw/mips/mips_r4k.c b/hw/mips/mips_r4k.c
> index b2aec434c3..54b286ceee 100644
> --- a/hw/mips/mips_r4k.c
> +++ b/hw/mips/mips_r4k.c
> @@ -241,9 +241,8 @@ void mips_r4k_init(MachineState *machine)
>      dinfo = drive_get(IF_PFLASH, 0, 0);
>      if ((bios_size > 0) && (bios_size <= BIOS_SIZE)) {
>          bios = g_new(MemoryRegion, 1);
> -        memory_region_init_ram(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
> +        memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE,
>                                 &error_fatal);
> -        memory_region_set_readonly(bios, true);
>          memory_region_add_subregion(get_system_memory(), 0x1fc00000,
> bios);
>
>          load_image_targphys(filename, 0x1fc00000, BIOS_SIZE);
> --
> 2.21.1
>
>
>

[-- Attachment #2: Type: text/html, Size: 5489 bytes --]

^ permalink raw reply	[flat|nested] 81+ messages in thread

end of thread, other threads:[~2020-02-26 11:45 UTC | newest]

Thread overview: 81+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-24 20:55 [PATCH RESEND v2 00/32] hw: Sanitize various MemoryRegion calls Philippe Mathieu-Daudé
2020-02-24 20:55 ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 01/32] memory: Correctly return alias region type Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 02/32] memory: Simplify memory_region_init_rom_nomigrate() to ease review Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 21:17   ` Alistair Francis
2020-02-24 21:17     ` Alistair Francis
2020-02-24 20:55 ` [PATCH RESEND v2 03/32] scripts/cocci: Rename memory-region-{init-ram -> housekeeping} Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 04/32] scripts/cocci: Patch to replace memory_region_init_{ram, readonly -> rom} Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 05/32] hw/arm: Use memory_region_init_rom() with read-only regions Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 06/32] hw/display: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 07/32] hw/mips: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-26 11:38   ` Aleksandar Markovic
2020-02-26 11:38     ` Aleksandar Markovic
2020-02-24 20:55 ` [PATCH RESEND v2 08/32] hw/m68k: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 09/32] hw/net: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 10/32] hw/pci-host: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-25  0:23   ` David Gibson
2020-02-25  0:23     ` David Gibson
2020-02-24 20:55 ` [PATCH RESEND v2 11/32] hw/ppc: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-25  0:23   ` David Gibson
2020-02-25  0:23     ` David Gibson
2020-02-24 20:55 ` [PATCH RESEND v2 12/32] hw/riscv: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 13/32] hw/sh4: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 14/32] hw/sparc: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-25 10:32   ` KONRAD Frederic
2020-02-24 20:55 ` [PATCH RESEND v2 15/32] scripts/cocci: Patch to detect potential use of memory_region_init_rom Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 16/32] hw/arm/stm32: Use memory_region_init_rom() with read-only regions Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 17/32] hw/ppc/ppc405: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-25  0:24   ` David Gibson
2020-02-25  0:24     ` David Gibson
2020-02-24 20:55 ` [PATCH RESEND v2 18/32] hw/i386/pc_sysfw: Simplify using memory_region_init_alias() Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-25 10:05   ` Philippe Mathieu-Daudé
2020-02-25 10:05     ` Philippe Mathieu-Daudé
2020-02-25 12:39     ` Paolo Bonzini
2020-02-25 12:39       ` Paolo Bonzini
2020-02-24 20:55 ` [PATCH RESEND v2 19/32] hw/i386/pc_sysfw: Remove unused 'ram_size' argument Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 20/32] scripts/cocci: Patch to remove unnecessary memory_region_set_readonly() Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 21/32] hw/arm: Remove unnecessary memory_region_set_readonly() on ROM alias Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 22/32] scripts/cocci: Patch to let devices own their MemoryRegions Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 23/32] hw/arm: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 24/32] hw/char: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 25/32] hw/core: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 26/32] hw/display: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 27/32] hw/dma: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 28/32] hw/riscv: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [PATCH RESEND v2 29/32] hw/input/milkymist-softusb: Remove unused 'pmem_ptr' field Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [RFC PATCH RESEND v2 30/32] hw/input/milkymist-softusb: Let devices own the MemoryRegion they create Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [RFC PATCH RESEND v2 31/32] hw/net/milkymist-minimac2: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé
2020-02-24 20:55 ` [RFC PATCH RESEND v2 32/32] hw/block/onenand: " Philippe Mathieu-Daudé
2020-02-24 20:55   ` Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.