From: Ackerley Tng <ackerleytng@google.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
David Hildenbrand <david@redhat.com>,
Fuad Tabba <tabba@google.com>
Subject: Re: [PATCH v2 01/13] KVM: Rework KVM_CAP_GUEST_MEMFD_MMAP into KVM_CAP_GUEST_MEMFD_FLAGS
Date: Tue, 07 Oct 2025 09:09:01 -0700 [thread overview]
Message-ID: <diqzh5waelsy.fsf@google.com> (raw)
In-Reply-To: <aOQkaJ05FjsZz7yn@google.com>
Sean Christopherson <seanjc@google.com> writes:
> On Mon, Oct 06, 2025, Ackerley Tng wrote:
>> Sean Christopherson <seanjc@google.com> writes:
>>
>> > Rework the not-yet-released KVM_CAP_GUEST_MEMFD_MMAP into a more generic
>> > KVM_CAP_GUEST_MEMFD_FLAGS capability so that adding new flags doesn't
>> > require a new capability, and so that developers aren't tempted to bundle
>> > multiple flags into a single capability.
>> >
>> > Note, kvm_vm_ioctl_check_extension_generic() can only return a 32-bit
>> > value, but that limitation can be easily circumvented by adding e.g.
>> > KVM_CAP_GUEST_MEMFD_FLAGS2 in the unlikely event guest_memfd supports more
>> > than 32 flags.
>>
>> I know you suggested that guest_memfd's HugeTLB sizes shouldn't be
>> squashed into the flags. Just using that as an example, would those
>> kinds of flags (since they're using the upper bits, above the lower 32
>> bits) be awkward to represent in this new model?
>
> Are you asking specifically about flags that use bits 63:32? If so, no, I don't
> see those as being awkward to deal with. Hopefully we kill of 32-bit KVM and it's
> a complete non-issue, but even if we have to add KVM_CAP_GUEST_MEMFD_FLAGS2, I
> don't see it being all that awkward for userspace to do:
>
> uint64_t supported_gmem_flags = kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS) |
> (kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS2) << 32);
>
> We could even mimic what Intel did with 64-bit VMCS fields to handle 32-bit mode,
> and explicitly name the second one KVM_CAP_GUEST_MEMFD_FLAGS_HI:
>
> uint64_t supported_gmem_flags = kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS) |
> (kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS_HI) << 32);
>
Had the same thing in mind, I guess having a precedent (and seeing it in
code) makes it seem less awkward. Thanks!
> so that if KVM_CAP_GUEST_MEMFD_FLAGS_HI precedes 64-bit-only KVM, it could become
> fully redundant, i.e. where someday this would hold true:
>
> kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS) ==
> kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS) | kvm_check_extension(KVM_CAP_GUEST_MEMFD_FLAGS_HI) << 32
>
>> In this model, conditionally valid flags are always set,
>
> I followed everything except this snippet.
>
I meant "conditionally valid" as in if GUEST_MEMFD_FLAG_BAR was valid
only when GUEST_MEMFD_FLAG_FOO is set, then with this model, when
KVM_CAP_GUEST_MEMFD_FLAGS is queried, would KVM return
GUEST_MEMFD_FLAG_MMAP | GUEST_MEMFD_FLAG_FOO | GUEST_MEMFD_FLAG_BAR,
where GUEST_MEMFD_FLAG_BAR is the conditionally valid flag?
>> but userspace won't be able to do a flags check against the returned 32-bit
>> value. Or do you think when this issue comes up, we'd put the flags in the
>> upper bits in KVM_CAP_GUEST_MEMFD_FLAGS2 and userspace would then check
>> against the OR-ed set of flags instead?
>
> As above, enumerate support for flags 63:32 in a separate capability.
Got it.
next prev parent reply other threads:[~2025-10-07 16:09 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-03 23:25 [PATCH v2 00/13] KVM: guest_memfd: MMAP and related fixes Sean Christopherson
2025-10-03 23:25 ` [PATCH v2 01/13] KVM: Rework KVM_CAP_GUEST_MEMFD_MMAP into KVM_CAP_GUEST_MEMFD_FLAGS Sean Christopherson
2025-10-06 19:16 ` Ackerley Tng
2025-10-06 20:19 ` Sean Christopherson
2025-10-07 16:09 ` Ackerley Tng [this message]
2025-10-07 16:13 ` Sean Christopherson
2025-10-10 14:07 ` David Hildenbrand
2025-10-03 23:25 ` [PATCH v2 02/13] KVM: guest_memfd: Add INIT_SHARED flag, reject user page faults if not set Sean Christopherson
2025-10-07 16:14 ` Ackerley Tng
2025-10-10 14:08 ` David Hildenbrand
2025-10-03 23:25 ` [PATCH v2 03/13] KVM: guest_memfd: Invalidate SHARED GPAs if gmem supports INIT_SHARED Sean Christopherson
2025-10-07 16:31 ` Ackerley Tng
2025-10-10 14:09 ` David Hildenbrand
2025-10-03 23:25 ` [PATCH v2 04/13] KVM: Explicitly mark KVM_GUEST_MEMFD as depending on KVM_GENERIC_MMU_NOTIFIER Sean Christopherson
2025-10-10 14:10 ` David Hildenbrand
2025-10-03 23:25 ` [PATCH v2 05/13] KVM: guest_memfd: Allow mmap() on guest_memfd for x86 VMs with private memory Sean Christopherson
2025-10-07 16:43 ` Ackerley Tng
2025-10-10 14:11 ` David Hildenbrand
2025-10-03 23:25 ` [PATCH v2 06/13] KVM: selftests: Stash the host page size in a global in the guest_memfd test Sean Christopherson
2025-10-06 18:30 ` Ackerley Tng
2025-10-03 23:26 ` [PATCH v2 07/13] KVM: selftests: Create a new guest_memfd for each testcase Sean Christopherson
2025-10-06 18:29 ` Ackerley Tng
2025-10-07 22:54 ` Lisa Wang
2025-10-10 15:04 ` David Hildenbrand
2025-10-10 20:12 ` Sean Christopherson
2025-10-03 23:26 ` [PATCH v2 08/13] KVM: selftests: Add test coverage for guest_memfd without GUEST_MEMFD_FLAG_MMAP Sean Christopherson
2025-10-03 23:26 ` [PATCH v2 09/13] KVM: selftests: Add wrappers for mmap() and munmap() to assert success Sean Christopherson
2025-10-03 23:26 ` [PATCH v2 10/13] KVM: selftests: Isolate the guest_memfd Copy-on-Write negative testcase Sean Christopherson
2025-10-06 18:28 ` Ackerley Tng
2025-10-03 23:26 ` [PATCH v2 11/13] KVM: selftests: Add wrapper macro to handle and assert on expected SIGBUS Sean Christopherson
2025-10-06 18:21 ` Ackerley Tng
2025-10-07 21:16 ` Lisa Wang
2025-10-03 23:26 ` [PATCH v2 12/13] KVM: selftests: Verify that faulting in private guest_memfd memory fails Sean Christopherson
2025-10-06 18:26 ` Ackerley Tng
2025-10-03 23:26 ` [PATCH v2 13/13] KVM: selftests: Verify that reads to inaccessible guest_memfd VMAs SIGBUS Sean Christopherson
2025-10-06 18:22 ` Ackerley Tng
2025-10-06 19:24 ` Sean Christopherson
2025-10-07 18:06 ` Lisa Wang
2025-10-10 21:30 ` [PATCH v2 00/13] KVM: guest_memfd: MMAP and related fixes Sean Christopherson
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=diqzh5waelsy.fsf@google.com \
--to=ackerleytng@google.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=tabba@google.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 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.