If there are no more comments, I'll queue this myself soon. ---
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. v3 -> v4: - "machine: Improve error message when using default RAM backend id" -> Use error_append_hint() v2 -> v3: - "softmmu/physmem: Distinguish between file access mode and mmap protection" -> Use !!(ram_flags & RAM_READONLY); - "backends/hostmem-file: Add "rom" property to support VM templating with R/O files" -> Improved documentation in qapi/qom.json and qemu-options.hx - "docs: Start documenting VM templating" -> Create proper RST and link it -> Add "Security Alert" section -> Add MAINTAINER entry - "softmmu/physmem: Hint that "readonly=on,rom=off" exists when opening file R/W for private mapping fails" -> Added - "machine: Improve error message when using default RAM backend id" -> Added Cc: Paolo Bonzini <pbonz...@redhat.com> Cc: Peter Xu <pet...@redhat.com> Cc: Igor Mammedov <imamm...@redhat.com> Cc: Thiner Logoer <logoerthin...@163.com> Cc: "Philippe Mathieu-Daudé" <phi...@linaro.org> Cc: Daniel P. Berrangé <berra...@redhat.com> Cc: Stefan Hajnoczi <stefa...@redhat.com> Cc: Elena Ufimtseva <elena.ufimts...@oracle.com> Cc: Jagannathan Raman <jag.ra...@oracle.com> Cc: "Michael S. Tsirkin" <m...@redhat.com> Cc: Ani Sinha <anisi...@redhat.com> Cc: Xiao Guangrong <xiaoguangrong.e...@gmail.com> Cc: Daniel Henrique Barboza <danielhb...@gmail.com> Cc: Greg Kurz <gr...@kaod.org> Cc: Eric Blake <ebl...@redhat.com> Cc: Markus Armbruster <arm...@redhat.com> Cc: "Daniel P. Berrangé" <berra...@redhat.com> Cc: Eduardo Habkost <edua...@habkost.net> [1] https://lkml.kernel.org/r/20230726145912.88545-1-logoerthin...@163.com [2] https://lkml.kernel.org/r/20230807190736.572665-1-da...@redhat.com David Hildenbrand (11): 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 softmmu/physmem: Hint that "readonly=on,rom=off" exists when opening file R/W for private mapping fails machine: Improve error message when using default RAM backend id MAINTAINERS | 1 + backends/hostmem-file.c | 61 ++++++++++++++++- docs/devel/multi-process.rst | 5 +- docs/system/index.rst | 1 + docs/system/vm-templating.rst | 125 ++++++++++++++++++++++++++++++++++ hw/acpi/nvdimm.c | 11 ++- hw/core/machine.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 | 17 ++++- qemu-options.hx | 16 ++++- softmmu/memory.c | 8 +-- softmmu/physmem.c | 93 +++++++++++++++++++------ 16 files changed, 341 insertions(+), 49 deletions(-) create mode 100644 docs/system/vm-templating.rst -- 2.41.0