From: "Marc-André Lureau" <marcandre.lureau@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Peter Xu" <peterx@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>
Subject: [PATCH v4 00/13] Make RamDiscardManager work with multiple sources & virtio-mem
Date: Mon, 04 May 2026 16:30:06 +0400 [thread overview]
Message-ID: <20260504-rdm5-v4-0-bdf61e57c1e1@redhat.com> (raw)
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/20250407074939.18657-5-chenyi.qiang@intel.com/#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.
I haven't done thorough testing. I only launched a SEV guest with a virtio-mem
device. It would be nice to have more tests for those scenarios with
VFIO/virtio-mem/confvm.. In any case, review & testing needed!
(help fix https://issues.redhat.com/browse/RHEL-131968)
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
---
Marc-André Lureau (13):
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
monitor: add 'info ramblock-attributes' command
RFC: hw/virtio: start virtio-mem guest_memfd regions as shared
MAINTAINERS | 4 +
qapi/machine.json | 55 ++
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 | 283 +-----
include/system/ram-discard-manager.h | 358 ++++++++
include/system/ramblock.h | 6 +-
accel/kvm/kvm-all.c | 5 +-
hw/core/machine-hmp-cmds.c | 32 +
hw/vfio/cpr-legacy.c | 4 +-
hw/vfio/listener.c | 10 +-
hw/virtio/virtio-mem.c | 286 ++-----
migration/ram.c | 6 +-
system/memory.c | 83 +-
system/memory_mapping.c | 4 +-
system/physmem.c | 27 +-
system/ram-block-attributes.c | 329 +++----
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, 2597 insertions(+), 826 deletions(-)
---
base-commit: ac0cc20ad2fe0b8df2e5d9458e90a095ac711ab1
change-id: 20260414-rdm5-b6df2366d603
Best regards,
--
Marc-André Lureau <marcandre.lureau@redhat.com>
next reply other threads:[~2026-05-04 12:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-04 12:30 Marc-André Lureau [this message]
2026-05-04 12:30 ` [PATCH v4 01/13] system/memory: split RamDiscardManager into source and manager Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 02/13] system/memory: move RamDiscardManager to separate compilation unit Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 03/13] system/memory: constify section arguments Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 04/13] system/ram-discard-manager: implement replay via is_populated iteration Marc-André Lureau
2026-05-13 20:40 ` Peter Xu
2026-05-04 12:30 ` [PATCH v4 05/13] virtio-mem: remove replay_populated/replay_discarded implementation Marc-André Lureau
2026-05-13 20:40 ` Peter Xu
2026-05-04 12:30 ` [PATCH v4 06/13] system/ram-discard-manager: drop replay from source interface Marc-André Lureau
2026-05-13 20:40 ` Peter Xu
2026-05-04 12:30 ` [PATCH v4 07/13] system/memory: implement RamDiscardManager multi-source aggregation Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 08/13] system/physmem: destroy ram block attributes before RCU-deferred reclaim Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 09/13] system/memory: add RamDiscardManager reference counting and cleanup Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 10/13] tests: add unit tests for RamDiscardManager multi-source aggregation Marc-André Lureau
2026-05-04 12:30 ` [PATCH v4 11/13] system/physmem: make ram_block_discard_range() handle guest_memfd Marc-André Lureau
2026-05-13 20:37 ` Peter Xu
2026-05-04 12:30 ` [PATCH v4 12/13] monitor: add 'info ramblock-attributes' command Marc-André Lureau
2026-05-13 20:39 ` Peter Xu
2026-05-04 12:30 ` [PATCH v4 13/13] RFC: hw/virtio: start virtio-mem guest_memfd regions as shared Marc-André Lureau
2026-05-13 20:47 ` Peter Xu
2026-05-14 7:32 ` Chenyi Qiang
2026-05-13 20:53 ` [PATCH v4 00/13] Make RamDiscardManager work with multiple sources & virtio-mem Peter Xu
2026-05-14 5:15 ` Chenyi Qiang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260504-rdm5-v4-0-bdf61e57c1e1@redhat.com \
--to=marcandre.lureau@redhat.com \
--cc=clg@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.