qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/20] hw: Remove implicit sysbus_mmio_map() from pflash APIs
@ 2023-01-04 22:04 Philippe Mathieu-Daudé
  2023-01-04 22:04 ` [PATCH 01/20] hw/block: Pass DeviceState to pflash_cfi01_get_blk() Philippe Mathieu-Daudé
                   ` (20 more replies)
  0 siblings, 21 replies; 44+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-01-04 22:04 UTC (permalink / raw)
  To: qemu-devel
  Cc: Song Gao, Antony Pavlov, Jan Kiszka, Marcel Apfelbaum,
	Hanna Reitz, Bernhard Beschow, BALATON Zoltan,
	Philippe Mathieu-Daudé, Alistair Francis, Paolo Bonzini,
	qemu-ppc, Mark Burton, Richard Henderson, Magnus Damm,
	Michael S. Tsirkin, Bin Meng, Max Filippov, Aurelien Jarno,
	Eduardo Habkost, Palmer Dabbelt, Radoslaw Biernacki, Jiaxun Yang,
	Edgar E. Iglesias, Xiaojuan Yang, Peter Maydell, qemu-block,
	qemu-riscv, Yoshinori Sato, Alistair Francis, qemu-arm,
	Leif Lindholm, Kevin Wolf

Paving the road toward heterogeneous QEMU, the limitations of
having a single machine sysbus become more apparent.

The sysbus_mmio_map() API forces the caller to map a sysbus
device to an address on the system bus (system bus here is
the root MemoryRegion returned by get_system_memory() ).

This is not practical when each core has its own address
space and group of cores have access to a part of the
peripherals.

Experimenting with the PFLASH devices. Here the fix is
quite easy, we split the pflash_cfi_register() -- which
does the implicit sysbus mapping -- into an explicit qdev
pflash_cfi_create() followed by the sysbus_mmio_map() call.

Since we were touching the PFLASH API, we restricted the
PFlashCFI0X structures to their models. The API now deals
with a generic qdev pointer (DeviceState*).

First 15 patches deal with the CFI type 1 model, then the
last 5 with the type 2.

The patch logic is mostly:

- extract pflash_cfi_create() from pflash_cfi_register()
- open-code pflash_cfi_register() for each hw/${ARCH}/
- remove unused pflash_cfi_register()
- reduce PFlashCFI0x structure scope

Please review,

Phil.

Philippe Mathieu-Daudé (20):
  hw/block: Pass DeviceState to pflash_cfi01_get_blk()
  hw/block: Use pflash_cfi01_get_blk() in pflash_cfi01_legacy_drive()
  hw/block: Pass DeviceState to pflash_cfi01_get_memory()
  hw/arm: Use generic DeviceState instead of PFlashCFI01
  hw/loongarch: Use generic DeviceState instead of PFlashCFI01
  hw/riscv: Use generic DeviceState instead of PFlashCFI01
  hw/i386: Use generic DeviceState instead of PFlashCFI01
  hw/xtensa: Use generic DeviceState instead of PFlashCFI01
  hw/block: Factor pflash_cfi01_create() out of pflash_cfi01_register()
  hw/arm: Open-code pflash_cfi01_register()
  hw/microblaze: Open-code pflash_cfi01_register()
  hw/mips: Open-code pflash_cfi01_register()
  hw/ppc: Open-code pflash_cfi01_register()
  hw/block: Remove unused pflash_cfi01_register()
  hw/block: Make PFlashCFI01 QOM declaration internal
  hw/block: Factor pflash_cfi02_create() out of pflash_cfi02_register()
  hw/arm: Open-code pflash_cfi02_register()
  hw/sh4: Open-code pflash_cfi02_register()
  hw/block: Remove unused pflash_cfi02_register()
  hw/block: Make PFlashCFI02 QOM declaration internal

 hw/arm/collie.c                          | 15 ++++---
 hw/arm/digic_boards.c                    | 14 +++---
 hw/arm/gumstix.c                         | 19 +++++---
 hw/arm/mainstone.c                       | 13 +++---
 hw/arm/musicpal.c                        | 13 +++---
 hw/arm/omap_sx1.c                        | 22 +++++----
 hw/arm/sbsa-ref.c                        |  8 ++--
 hw/arm/versatilepb.c                     | 13 +++---
 hw/arm/vexpress.c                        | 12 +++--
 hw/arm/virt.c                            |  6 +--
 hw/arm/xilinx_zynq.c                     | 10 ++---
 hw/arm/z2.c                              | 10 +++--
 hw/block/pflash_cfi01.c                  | 35 ++++++++-------
 hw/block/pflash_cfi02.c                  | 25 +++++------
 hw/i386/pc_sysfw.c                       |  6 +--
 hw/loongarch/virt.c                      |  9 ++--
 hw/microblaze/petalogix_ml605_mmu.c      |  8 ++--
 hw/microblaze/petalogix_s3adsp1800_mmu.c |  8 ++--
 hw/mips/malta.c                          | 13 +++---
 hw/ppc/e500.c                            |  2 +-
 hw/ppc/sam460ex.c                        | 12 +++--
 hw/ppc/virtex_ml507.c                    |  7 +--
 hw/riscv/virt.c                          |  7 +--
 hw/sh4/r2d.c                             |  9 ++--
 hw/xtensa/xtfpga.c                       |  6 +--
 include/hw/arm/virt.h                    |  3 +-
 include/hw/block/flash.h                 | 57 ++++++++++++------------
 include/hw/i386/pc.h                     |  3 +-
 include/hw/loongarch/virt.h              |  3 +-
 include/hw/riscv/virt.h                  |  3 +-
 30 files changed, 200 insertions(+), 171 deletions(-)

-- 
2.38.1



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

end of thread, other threads:[~2023-01-09 10:43 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-04 22:04 [PATCH 00/20] hw: Remove implicit sysbus_mmio_map() from pflash APIs Philippe Mathieu-Daudé
2023-01-04 22:04 ` [PATCH 01/20] hw/block: Pass DeviceState to pflash_cfi01_get_blk() Philippe Mathieu-Daudé
2023-01-08  4:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 02/20] hw/block: Use pflash_cfi01_get_blk() in pflash_cfi01_legacy_drive() Philippe Mathieu-Daudé
2023-01-08  4:29   ` Bin Meng
2023-01-04 22:04 ` [PATCH 03/20] hw/block: Pass DeviceState to pflash_cfi01_get_memory() Philippe Mathieu-Daudé
2023-01-08  4:30   ` Bin Meng
2023-01-04 22:04 ` [PATCH 04/20] hw/arm: Use generic DeviceState instead of PFlashCFI01 Philippe Mathieu-Daudé
2023-01-08  5:25   ` Bin Meng
2023-01-04 22:04 ` [PATCH 05/20] hw/loongarch: " Philippe Mathieu-Daudé
2023-01-08  5:25   ` Bin Meng
2023-01-04 22:04 ` [PATCH 06/20] hw/riscv: " Philippe Mathieu-Daudé
2023-01-06 20:33   ` Daniel Henrique Barboza
2023-01-08  5:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 07/20] hw/i386: " Philippe Mathieu-Daudé
2023-01-08  5:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 08/20] hw/xtensa: " Philippe Mathieu-Daudé
2023-01-08  5:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 09/20] hw/block: Factor pflash_cfi01_create() out of pflash_cfi01_register() Philippe Mathieu-Daudé
2023-01-08  5:32   ` Bin Meng
2023-01-04 22:04 ` [PATCH 10/20] hw/arm: Open-code pflash_cfi01_register() Philippe Mathieu-Daudé
2023-01-08  5:35   ` Bin Meng
2023-01-04 22:04 ` [PATCH 11/20] hw/microblaze: " Philippe Mathieu-Daudé
2023-01-08 12:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 12/20] hw/mips: " Philippe Mathieu-Daudé
2023-01-08 12:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 13/20] hw/ppc: " Philippe Mathieu-Daudé
2023-01-08 12:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 14/20] hw/block: Remove unused pflash_cfi01_register() Philippe Mathieu-Daudé
2023-01-08 12:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 15/20] hw/block: Make PFlashCFI01 QOM declaration internal Philippe Mathieu-Daudé
2023-01-08 12:28   ` Bin Meng
2023-01-04 22:04 ` [PATCH 16/20] hw/block: Factor pflash_cfi02_create() out of pflash_cfi02_register() Philippe Mathieu-Daudé
2023-01-08 12:34   ` Bin Meng
2023-01-04 22:04 ` [PATCH 17/20] hw/arm: Open-code pflash_cfi02_register() Philippe Mathieu-Daudé
2023-01-08 12:34   ` Bin Meng
2023-01-04 22:04 ` [PATCH 18/20] hw/sh4: " Philippe Mathieu-Daudé
2023-01-08 12:34   ` Bin Meng
2023-01-04 22:04 ` [PATCH 19/20] hw/block: Remove unused pflash_cfi02_register() Philippe Mathieu-Daudé
2023-01-08 12:34   ` Bin Meng
2023-01-04 22:04 ` [PATCH 20/20] hw/block: Make PFlashCFI02 QOM declaration internal Philippe Mathieu-Daudé
2023-01-08 12:34   ` Bin Meng
2023-01-06 17:51 ` [PATCH 00/20] hw: Remove implicit sysbus_mmio_map() from pflash APIs Peter Maydell
2023-01-09 10:39   ` Philippe Mathieu-Daudé

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).