From: Chenyi Qiang <chenyi.qiang@intel.com>
To: <marcandre.lureau@redhat.com>, <qemu-devel@nongnu.org>
Cc: "Ben Chaney" <bchaney@akamai.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Williamson" <alex@shazbot.org>,
"Fabiano Rosas" <farosas@suse.de>,
"David Hildenbrand" <david@kernel.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Peter Xu" <peterx@redhat.com>,
kvm@vger.kernel.org, "Mark Kanda" <mark.kanda@oracle.com>
Subject: Re: [PATCH v3 00/15] Make RamDiscardManager work with multiple sources
Date: Tue, 10 Mar 2026 10:35:25 +0800 [thread overview]
Message-ID: <ce681660-d47c-4ba6-9237-eef55a87493c@intel.com> (raw)
In-Reply-To: <20260226140001.3622334-1-marcandre.lureau@redhat.com>
On 2/26/2026 9:59 PM, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> 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!
Is this series aimed to enable virtio-mem (memory hotplug) in a confidential VM?
I tested it within a TD guest using the qemu command:
qemu-system-x86_64
...
-m 2G,maxmem=10G \
-smp sockets=1,cores=2 \
-object memory-backend-ram,id=mem0,size=2G \
-numa node,nodeid=0,cpus=0-1,memdev=mem0 \
-object memory-backend-ram,id=vmem0,size=8G \
-device virtio-mem-pci,id=vm0,memdev=vmem0,node=0,requested-size=300M \
-object tdx-guest,id=tdx \
-machine q35,kernel_irqchip=split,hpet=off,memory-encryption=tdx \
...
The TD VM will exit with the error when the guest kernel loads the virtio-mem driver:
kvm_intel: Guest access before accepting 0x108008000 on vCPU 0
I think it still lacks some support to accept the TD guest memory before using it.
>
> (should fix https://issues.redhat.com/browse/RHEL-131968)
>
> 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
>
> thanks
>
> Marc-André Lureau (15):
> system/rba: use DIV_ROUND_UP
> memory: drop RamDiscardListener::double_discard_supported
> virtio-mem: use warn_report_err_once()
> system/memory: minor doc fix
> kvm: replace RamDicardManager by the RamBlockAttribute
> 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
>
> include/hw/vfio/vfio-container.h | 2 +-
> include/hw/vfio/vfio-cpr.h | 2 +-
> include/hw/virtio/virtio-mem.h | 3 -
> include/system/memory.h | 287 +----
> include/system/ram-discard-manager.h | 358 ++++++
> include/system/ramblock.h | 3 +-
> accel/kvm/kvm-all.c | 2 +-
> hw/vfio/cpr-legacy.c | 4 +-
> hw/vfio/listener.c | 12 +-
> hw/virtio/virtio-mem.c | 290 +----
> migration/ram.c | 6 +-
> system/memory.c | 83 +-
> system/memory_mapping.c | 4 +-
> system/physmem.c | 2 +-
> system/ram-block-attributes.c | 279 +----
> system/ram-discard-manager.c | 612 +++++++++
> tests/unit/test-ram-discard-manager-stubs.c | 48 +
> tests/unit/test-ram-discard-manager.c | 1234 +++++++++++++++++++
> system/meson.build | 1 +
> tests/unit/meson.build | 8 +-
> 20 files changed, 2361 insertions(+), 879 deletions(-)
> create mode 100644 include/system/ram-discard-manager.h
> create mode 100644 system/ram-discard-manager.c
> create mode 100644 tests/unit/test-ram-discard-manager-stubs.c
> create mode 100644 tests/unit/test-ram-discard-manager.c
>
next prev parent reply other threads:[~2026-03-10 2:35 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 13:59 [PATCH v3 00/15] Make RamDiscardManager work with multiple sources marcandre.lureau
2026-02-26 13:59 ` [PATCH v3 01/15] system/rba: use DIV_ROUND_UP marcandre.lureau
2026-03-03 18:57 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 02/15] memory: drop RamDiscardListener::double_discard_supported marcandre.lureau
2026-02-26 15:58 ` David Hildenbrand
2026-03-03 18:57 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 03/15] virtio-mem: use warn_report_err_once() marcandre.lureau
2026-02-26 15:57 ` David Hildenbrand
2026-03-03 18:58 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 04/15] system/memory: minor doc fix marcandre.lureau
2026-02-26 15:58 ` David Hildenbrand
2026-03-03 18:59 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 05/15] kvm: replace RamDicardManager by the RamBlockAttribute marcandre.lureau
2026-03-03 18:59 ` Peter Xu
2026-03-04 9:09 ` Chenyi Qiang
2026-02-26 13:59 ` [PATCH v3 06/15] system/memory: split RamDiscardManager into source and manager marcandre.lureau
2026-03-03 19:45 ` Peter Xu
2026-03-04 9:51 ` Chenyi Qiang
2026-02-26 13:59 ` [PATCH v3 07/15] system/memory: move RamDiscardManager to separate compilation unit marcandre.lureau
2026-03-03 19:47 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 08/15] system/memory: constify section arguments marcandre.lureau
2026-03-03 19:48 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 09/15] system/ram-discard-manager: implement replay via is_populated iteration marcandre.lureau
2026-02-26 16:01 ` David Hildenbrand
2026-03-03 10:47 ` Marc-André Lureau
2026-03-03 20:27 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 10/15] virtio-mem: remove replay_populated/replay_discarded implementation marcandre.lureau
2026-02-26 13:59 ` [PATCH v3 11/15] system/ram-discard-manager: drop replay from source interface marcandre.lureau
2026-02-26 13:59 ` [PATCH v3 12/15] system/memory: implement RamDiscardManager multi-source aggregation marcandre.lureau
2026-03-03 21:16 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 13/15] system/physmem: destroy ram block attributes before RCU-deferred reclaim marcandre.lureau
2026-03-03 21:31 ` Peter Xu
2026-02-26 13:59 ` [PATCH v3 14/15] system/memory: add RamDiscardManager reference counting and cleanup marcandre.lureau
2026-03-03 21:33 ` Peter Xu
2026-02-26 14:00 ` [PATCH v3 15/15] tests: add unit tests for RamDiscardManager multi-source aggregation marcandre.lureau
2026-03-03 21:28 ` [PATCH v3 00/15] Make RamDiscardManager work with multiple sources Peter Xu
2026-03-03 22:33 ` Marc-André Lureau
2026-03-09 18:25 ` Peter Xu
2026-03-10 2:35 ` Chenyi Qiang [this message]
2026-03-10 16:09 ` Marc-André Lureau
2026-03-11 7:17 ` Chenyi Qiang
2026-03-11 14:12 ` Marc-André Lureau
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=ce681660-d47c-4ba6-9237-eef55a87493c@intel.com \
--to=chenyi.qiang@intel.com \
--cc=alex@shazbot.org \
--cc=bchaney@akamai.com \
--cc=clg@redhat.com \
--cc=david@kernel.org \
--cc=farosas@suse.de \
--cc=kvm@vger.kernel.org \
--cc=marcandre.lureau@redhat.com \
--cc=mark.kanda@oracle.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--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.