From: Nikita Kalyazin <kalyazin@amazon.com>
To: Peter Xu <peterx@redhat.com>
Cc: "David Hildenbrand (Red Hat)" <david@kernel.org>,
Mike Rapoport <rppt@kernel.org>, <linux-mm@kvack.org>,
Andrea Arcangeli <aarcange@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Axel Rasmussen" <axelrasmussen@google.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Hugh Dickins <hughd@google.com>,
"James Houghton" <jthoughton@google.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Michal Hocko <mhocko@suse.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Sean Christopherson" <seanjc@google.com>,
Shuah Khan <shuah@kernel.org>,
"Suren Baghdasaryan" <surenb@google.com>,
Vlastimil Babka <vbabka@suse.cz>, <linux-kernel@vger.kernel.org>,
<kvm@vger.kernel.org>, <linux-kselftest@vger.kernel.org>
Subject: Re: [PATCH v3 4/5] guest_memfd: add support for userfaultfd minor mode
Date: Tue, 2 Dec 2025 15:59:49 +0000 [thread overview]
Message-ID: <cd354fc0-e500-472d-ac33-0bc43c0d898f@amazon.com> (raw)
In-Reply-To: <aS8HaDX5Pg9h_nkl@x1.local>
On 02/12/2025 15:36, Peter Xu wrote:
> On Tue, Dec 02, 2025 at 11:50:31AM +0000, Nikita Kalyazin wrote:
>>> It looks fine indeed, but it looks slightly weird then, as you'll have two
>>> ways to populate the page cache. Logically here atomicity is indeed not
>>> needed when you trap both MISSING + MINOR.
>>
>> I reran the test based on the UFFDIO_COPY prototype I had using your series
>> [2], and UFFDIO_COPY is slower than write() to populate 512 MiB: 237 vs 202
>> ms (+17%). Even though UFFDIO_COPY alone is functionally sufficient, I
>> would prefer to have an option to use write() where possible and only
>> falling back to UFFDIO_COPY for userspace faults to have better performance.
>
> Yes, write() should be fine.
>
> Especially to gmem, I guess write() support is needed when VMAs cannot be
> mapped at all in strict CoCo context, so it needs to be available one way
> or another.
write() is supposed to be supported only for shared memory, ie
accessible to the host. AFAIK private memory should be populated via
other mechanisms.
>
> IIUC it's because UFFDIO_COPY (or memcpy(), I recall you used to test that
> instead) will involve pgtable operations.
Yes, for memcpy() it's even worse because it triggers VMA faults for
every page. UFFDIO_COPY's overhead is lower because the only extra
thing it does compared to write() is installing user PTs.
> instead) will involve pgtable operations. So I wonder if the VMA mapping
> the gmem will still be accessed at some point later (either private->share
> convertable ones for device DMAs for CoCo, or fully shared non-CoCo use
> case), then the pgtable overhead will happen later for a write()-styled
> fault resolution.
At least in Firecracker use case, only pages that are related to PV
devices are going to get accessed by the VMM via user PTs (such as
virtio queues and buffers). The majority of pages are only touched by
vCPUs via stage-2 mappings and are never accessed via user PTs.
>
> From that POV, above number makes sense.
>
> Thanks for the extra testing results.
>
>>
>> [2]
>> https://lore.kernel.org/all/7666ee96-6f09-4dc1-8cb2-002a2d2a29cf@amazon.com
>
> --
> Peter Xu
>
next prev parent reply other threads:[~2025-12-02 16:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-30 11:18 [PATCH v3 0/5] mm, kvm: add guest_memfd support for uffd minor faults Mike Rapoport
2025-11-30 11:18 ` [PATCH v3 1/5] userfaultfd: move vma_can_userfault out of line Mike Rapoport
2025-11-30 11:18 ` [PATCH v3 2/5] userfaultfd, shmem: use a VMA callback to handle UFFDIO_CONTINUE Mike Rapoport
2025-11-30 11:18 ` [PATCH v3 3/5] mm: introduce VM_FAULT_UFFD_MINOR fault reason Mike Rapoport
2025-12-01 8:59 ` David Hildenbrand (Red Hat)
2025-11-30 11:18 ` [PATCH v3 4/5] guest_memfd: add support for userfaultfd minor mode Mike Rapoport
2025-12-01 9:12 ` David Hildenbrand (Red Hat)
2025-12-01 13:39 ` Nikita Kalyazin
2025-12-01 15:54 ` David Hildenbrand (Red Hat)
2025-12-01 16:48 ` Nikita Kalyazin
2025-12-01 18:35 ` Peter Xu
2025-12-01 20:12 ` Nikita Kalyazin
2025-12-01 20:57 ` Peter Xu
2025-12-02 11:50 ` Nikita Kalyazin
2025-12-02 15:36 ` Peter Xu
2025-12-02 15:59 ` Nikita Kalyazin [this message]
2025-12-03 9:23 ` David Hildenbrand (Red Hat)
2025-12-03 10:03 ` Nikita Kalyazin
2025-12-04 17:27 ` Nikita Kalyazin
2025-11-30 11:18 ` [PATCH v3 5/5] KVM: selftests: test userfaultfd minor for guest_memfd Mike Rapoport
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=cd354fc0-e500-472d-ac33-0bc43c0d898f@amazon.com \
--to=kalyazin@amazon.com \
--cc=Liam.Howlett@oracle.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=baolin.wang@linux.alibaba.com \
--cc=david@kernel.org \
--cc=hughd@google.com \
--cc=jthoughton@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mhocko@suse.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=rppt@kernel.org \
--cc=seanjc@google.com \
--cc=shuah@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
/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