Hi
On Thu, Jun 4, 2026 at 5:46 PM Marc-André Lureau
<[email protected]> wrote:
>
> Hi,
>
> This is an attempt to fix the incompatibility of virtio-mem with confidential
> VMs. The solution implements what was discussed earlier with D. Hildenbrand:
> https://patchwork.ozlabs.org/project/qemu-devel/patch/[email protected]/#3502238
>
> The first patches are misc cleanups. Then some code refactoring to have split
> a
> manager/source. And finally, the manager learns to deal with multiple sources.
>
> This has been tested together with the Linux kernel series from
> Zhenzhong Duan [1] for TDX guests.
>
> (help fix https://issues.redhat.com/browse/RHEL-131968)
Can the patch 1-11 be queued or are we missing something?
(RFC patch 12 can be dropped for now)
thanks
>
> v5:
> - explain why InterfaceClass in rust binding is not needed after
> moving RamDiscardSource
> - drop extraneous added blank line
> - replaced a runtime "if (has_rdm)"" with an assert()
> - dropped "RFC: hw/virtio: start virtio-mem guest_memfd regions as
> shared", in favour of start-private memory approach from "[RFC PATCH
> 0/6] Support virtio-mem memory hotplug in TDX guests" [1]
> - demote "monitor: add 'info ramblock-attributes'" as RFC
> - rebased and collected trailers
>
> v4:
> - added "system/physmem: make ram_block_discard_range() handle guest_memfd"
> - added "monitor: add 'info ramblock-attributes' command"
> - added "RFC: hw/virtio: start virtio-mem guest_memfd regions as shared"
> - skip calling source in notify_populate (it may not have updated its
> internal state)
> - rebased, collected trailer tags
>
> v3: issues found by Cédric
> - fix assertion error on shutdown, due to rcu-defer cleanup
> - fix API doc warnings
>
> v2:
> - drop replay_{populated,discarded} from source, suggested by Peter Xu
> - add extra manager cleanup
> - add r-b tags for preliminary patches
>
> - Link to v4:
> https://lore.kernel.org/qemu-devel/[email protected]
>
> [1]:
> https://lore.kernel.org/lkml/[email protected]/
>
> ---
> Marc-André Lureau (12):
> system/memory: split RamDiscardManager into source and manager
> system/memory: move RamDiscardManager to separate compilation unit
> system/memory: constify section arguments
> system/ram-discard-manager: implement replay via is_populated iteration
> virtio-mem: remove replay_populated/replay_discarded implementation
> system/ram-discard-manager: drop replay from source interface
> system/memory: implement RamDiscardManager multi-source aggregation
> system/physmem: destroy ram block attributes before RCU-deferred reclaim
> system/memory: add RamDiscardManager reference counting and cleanup
> tests: add unit tests for RamDiscardManager multi-source aggregation
> system/physmem: make ram_block_discard_range() handle guest_memfd
> RFC: monitor: add 'info ramblock-attributes' command
>
> MAINTAINERS | 4 +
> qapi/machine.json | 56 ++
> include/hw/vfio/vfio-container.h | 2 +-
> include/hw/vfio/vfio-cpr.h | 2 +-
> include/hw/virtio/virtio-mem.h | 3 -
> include/monitor/hmp.h | 1 +
> include/system/memory.h | 279 +-----
> include/system/ram-discard-manager.h | 358 ++++++++
> include/system/ramblock.h | 5 +-
> accel/kvm/kvm-all.c | 2 +-
> hw/core/machine-hmp-cmds.c | 32 +
> hw/vfio/cpr-legacy.c | 4 +-
> hw/vfio/listener.c | 10 +-
> hw/virtio/virtio-mem.c | 259 +-----
> migration/ram.c | 6 +-
> system/memory.c | 88 +-
> system/memory_mapping.c | 4 +-
> system/physmem.c | 27 +-
> system/ram-block-attributes.c | 328 +++----
> system/ram-discard-manager.c | 612 +++++++++++++
> target/i386/kvm/tdx.c | 2 +-
> tests/unit/test-ram-discard-manager-stubs.c | 48 ++
> tests/unit/test-ram-discard-manager.c | 1235
> +++++++++++++++++++++++++++
> hmp-commands-info.hx | 13 +
> rust/bindings/system-sys/lib.rs | 2 +-
> system/meson.build | 1 +
> system/trace-events | 2 +-
> tests/unit/meson.build | 8 +-
> 28 files changed, 2569 insertions(+), 824 deletions(-)
> ---
> base-commit: 405c32d2b18a683ba36301351af75125d9afda08
> change-id: 20260414-rdm5-b6df2366d603
>
> Best regards,
> --
> Marc-André Lureau <[email protected]>
>
>