[RFC PATCH v2 0/3] hw/block/pflash: Mmap read-only backend files with MAP_SHARED

Philippe Mathieu-Daudé posted 3 patches 3 years, 2 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210301115329.411762-1-philmd@redhat.com
include/exec/memory.h   | 85 +++++++++++++++++++++++++++++++++++
hw/block/pflash_cfi01.c | 49 +++++++++++++++------
hw/block/pflash_cfi02.c | 18 ++++----
softmmu/memory.c        | 98 +++++++++++++++++++++++++++++++++++++++++
4 files changed, 228 insertions(+), 22 deletions(-)
[RFC PATCH v2 0/3] hw/block/pflash: Mmap read-only backend files with MAP_SHARED
Posted by Philippe Mathieu-Daudé 3 years, 2 months ago
Since v1:
- check driver is "raw" (David)
- ignore CFI02 for now

Hi,

This series aims to reduce the memory footprint of flash devices
when the backing file is read-only.

When a backing file is read-only, the model considers the flash
is in "protected" mode. No write are allowed, but the MMIO
state machine is still usable.

This series introduces a new memory region helper to mmap files
and use it with the pflash device (only with read-only backing
files).

The goal is to reduce QEMU's memory footprint when multiple VMs
are instantiated using the same read-only backing file, which is
the case with the CODE flash from OVMF and AAVMF.

Previous attempts:

- Huawei
https://www.mail-archive.com/qemu-devel@nongnu.org/msg607292.html
- Tencent
https://www.mail-archive.com/qemu-devel@nongnu.org/msg742066.html
- Oracle
https://www.mail-archive.com/qemu-devel@nongnu.org/msg760065.html

RFC because yet another approach to tackle this technical debt,
and very little tested.

Regards,

Phil.

Philippe Mathieu-Daudé (3):
  exec/memory: Introduce memory_region_init_rom_device_from_file()
  hw/block/pflash: Move code around
  hw/block/pflash: use memory_region_init_rom_device_from_file()

 include/exec/memory.h   | 85 +++++++++++++++++++++++++++++++++++
 hw/block/pflash_cfi01.c | 49 +++++++++++++++------
 hw/block/pflash_cfi02.c | 18 ++++----
 softmmu/memory.c        | 98 +++++++++++++++++++++++++++++++++++++++++
 4 files changed, 228 insertions(+), 22 deletions(-)

-- 
2.26.2