From: William Roche <william.roche@oracle.com>
To: Peter Xu <peterx@redhat.com>, David Hildenbrand <david@redhat.com>
Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, qemu-arm@nongnu.org,
pbonzini@redhat.com, richard.henderson@linaro.org,
philmd@linaro.org, peter.maydell@linaro.org, mtosatti@redhat.com,
imammedo@redhat.com, eduardo@habkost.net,
marcel.apfelbaum@gmail.com, wangyanan55@huawei.com,
zhao1.liu@intel.com, joao.m.martins@oracle.com
Subject: Re: [PATCH v7 6/6] hostmem: Handle remapping of RAM
Date: Wed, 5 Feb 2025 17:27:50 +0100 [thread overview]
Message-ID: <a3d7a8cc-aad8-4d98-a5ba-79fad20b9df6@oracle.com> (raw)
In-Reply-To: <Z6J1hFuAvpA78Ram@x1.local>
On 2/4/25 21:16, Peter Xu wrote:
> On Tue, Feb 04, 2025 at 07:55:52PM +0100, David Hildenbrand wrote:
>> Ah, and now I remember where these 3 patches originate from: virtio-mem
>> handling.
>>
>> For virtio-mem I want to register also a remap handler, for example, to
>> perform the custom preallocation handling.
>>
>> So there will be at least two instances getting notified (memory backend,
>> virtio-mem), and the per-ramblock one would have only allowed to trigger one
>> (at least with a simple callback as we have today for ->resize).
>
> I see, we can put something into commit log with such on decisions, then
> we'll remember.
>
> Said that, this still sounds like a per-ramblock thing, so instead of one
> hook function we can also have per-ramblock notifier lists.
>
> But I agree the perf issue isn't some immediate concern, so I'll leave that
> to you and William. If so I think we should discuss that in the commit log
> too, so we decide to not care about perf until necessary (or we just make
> it per-ramblock..).
>
> Thanks,
>
I agree that we could split this fix in 2 parts: The one fixing the
hugetlbfs (ignoring the preallocation setting for the moment), and the
notification mechanism as a second set of patches.
The first part would be the 3 first patches (including a corrected
version of patch 2) and the second part could be an adaptation of the
next 3 patches, with their notification implementation dealing with
merging, dump *and* preallocation setup.
But I'd be happy to help with the implementation of this 2nd aspect too:
In order to apply settings like preallocation to a RAMBLock we need to
find its associated HostMemoryBackend (where we have the 'prealloc' flag).
To do so, we record a RAMBlockNotifier in the HostMemoryBackend struct,
so that the notification triggered by the remap action:
ram_block_notify_remap(block->host, offset, page_size);
will go through the list of notifiers ram_list.ramblock_notifiers to run
the not NULL ram_block_remapped entries on all of them.
For each of them, we know the associated HostMemoryBackend (as it
contains the RAMBlockNotifier), and we verify which one corresponds to
the host address given, so that we can apply the appropriate settings.
IIUC, my proposal (with David's code) currently has a
per-HostMemoryBackend notification.
Now if I want to implement a per-RAMBlock notification, would you
suggest to consider that the 'mr' attibute of a RAMBlock always points
to a HostMemoryBackend.mr, so that we could get the HostMemoryBackend
associated to the block from a
container_of(block->mr, HostMemoryBackend, mr) ?
If this is valid, than we could apply the appropriate settings from
there, but can't we have RAMBlocks not pointing to a HostMemoryBackend.mr ?
I'm probably confused about what you are referring to.
So how would you suggest that I make the notification per-ramblock ?
Thanks in advance for your feedback.
I'll send a corrected version of the first 3 patches, unless you want to
go with the current version of the patches 4/6, 5/6 and 6/6, so that we
can deal with preallocation.
Please let me know.
Thanks,
William.
next prev parent reply other threads:[~2025-02-05 16:29 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-01 9:57 [PATCH v7 0/6] Poisoned memory recovery on reboot “William Roche
2025-02-01 9:57 ` [PATCH v7 1/6] system/physmem: handle hugetlb correctly in qemu_ram_remap() “William Roche
2025-02-04 17:09 ` Peter Xu
2025-02-01 9:57 ` [PATCH v7 2/6] system/physmem: poisoned memory discard on reboot “William Roche
2025-02-04 17:09 ` Peter Xu
2025-02-05 16:27 ` William Roche
2025-02-01 9:57 ` [PATCH v7 3/6] accel/kvm: Report the loss of a large memory page “William Roche
2025-02-04 17:01 ` Peter Xu
2025-02-05 16:27 ` William Roche
2025-02-05 17:07 ` Peter Xu
2025-02-07 18:02 ` William Roche
2025-02-10 16:48 ` Peter Xu
2025-02-11 21:22 ` William Roche
2025-02-11 21:45 ` Peter Xu
2025-02-01 9:57 ` [PATCH v7 4/6] numa: Introduce and use ram_block_notify_remap() “William Roche
2025-02-04 17:17 ` Peter Xu
2025-02-04 17:42 ` David Hildenbrand
2025-02-01 9:57 ` [PATCH v7 5/6] hostmem: Factor out applying settings “William Roche
2025-02-01 9:57 ` [PATCH v7 6/6] hostmem: Handle remapping of RAM “William Roche
2025-02-04 17:50 ` David Hildenbrand
2025-02-04 17:58 ` Peter Xu
2025-02-04 18:55 ` David Hildenbrand
2025-02-04 20:16 ` Peter Xu
2025-02-05 16:27 ` William Roche [this message]
2025-02-05 17:58 ` Peter Xu
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=a3d7a8cc-aad8-4d98-a5ba-79fad20b9df6@oracle.com \
--to=william.roche@oracle.com \
--cc=david@redhat.com \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=joao.m.martins@oracle.com \
--cc=kvm@vger.kernel.org \
--cc=marcel.apfelbaum@gmail.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=wangyanan55@huawei.com \
--cc=zhao1.liu@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).