This is the result of the previous discussion of: * "[PATCH v2] softmmu/physmem: try opening file readonly before failure in file_ram_open" [1] * "[PATCH v1 0/3] softmmu/physmem: file_ram_open() readonly improvements" [2]
After looking into various ways to avoid a new parameter for memory-backend-file to cleanly support VM templating with R/O files, I concluded that it might be easier and cleaner to hust have a new parameter. The alternatives all had their own problems. Looking back, we could have designed the "readonly=on/off" parameter slightly differently. So this series adds a new "rom=on/off/auto" option and wires it up internally. It uses new internal RAM flags to improve qemu_ram_remap() and ram_block_discard_range(). Further, improve file_ram_open() with readonly=on and update+add some documentation. While working on this and testing some configurations, I realized that an NVDIMM with label data on ROM does not work as expected (QEMU crashes). Fix included as patch #1. No changelog, because too much changed. Cc: Paolo Bonzini <[email protected]> Cc: Peter Xu <[email protected]> Cc: Igor Mammedov <[email protected]> Cc: Thiner Logoer <[email protected]> Cc: "Philippe Mathieu-Daudé" <[email protected]> Cc: Daniel P. Berrangé <[email protected]> Cc: Stefan Hajnoczi <[email protected]> Cc: Elena Ufimtseva <[email protected]> Cc: Jagannathan Raman <[email protected]> Cc: "Michael S. Tsirkin" <[email protected]> Cc: Ani Sinha <[email protected]> Cc: Xiao Guangrong <[email protected]> Cc: Daniel Henrique Barboza <[email protected]> Cc: Greg Kurz <[email protected]> Cc: Eric Blake <[email protected]> Cc: Markus Armbruster <[email protected]> Cc: "Daniel P. Berrangé" <[email protected]> Cc: Eduardo Habkost <[email protected]> [1] https://lkml.kernel.org/r/[email protected] [2] https://lkml.kernel.org/r/[email protected] David Hildenbrand (9): nvdimm: Reject writing label data to ROM instead of crashing QEMU softmmu/physmem: Distinguish between file access mode and mmap protection backends/hostmem-file: Add "rom" property to support VM templating with R/O files softmmu/physmem: Remap with proper protection in qemu_ram_remap() softmmu/physmem: Bail out early in ram_block_discard_range() with readonly files softmmu/physmem: Fail creation of new files in file_ram_open() with readonly=true softmmu/physmem: Never return directories from file_ram_open() docs: Don't mention "-mem-path" in multi-process.rst docs: Start documenting VM templating backends/hostmem-file.c | 61 +++++++++++++++++++- docs/devel/multi-process.rst | 5 +- docs/vm-templating.txt | 109 +++++++++++++++++++++++++++++++++++ hw/acpi/nvdimm.c | 11 +++- hw/mem/nvdimm.c | 10 +++- hw/ppc/spapr_nvdimm.c | 3 +- include/exec/memory.h | 14 +++-- include/exec/ram_addr.h | 8 +-- include/hw/mem/nvdimm.h | 6 ++ qapi/qom.json | 6 +- qemu-options.hx | 10 +++- softmmu/memory.c | 8 +-- softmmu/physmem.c | 74 +++++++++++++++++------- 13 files changed, 279 insertions(+), 46 deletions(-) create mode 100644 docs/vm-templating.txt -- 2.41.0
