On 6/19/2026 8:31 AM, Ackerley Tng via B4 Relay wrote: > From: Ackerley Tng <[email protected]> > > Introduce KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES to advertise the > availability of the KVM_SET_MEMORY_ATTRIBUTES2 ioctl. > > KVM_SET_MEMORY_ATTRIBUTES2 is a guest_memfd-scoped version of the existing > KVM_SET_MEMORY_ATTRIBUTES VM ioctl. It allows userspace to manage memory > attributes, such as KVM_MEMORY_ATTRIBUTE_PRIVATE, directly on a guest_memfd > file descriptor. > > This new version uses struct kvm_memory_attributes2, which adds an > error_offset field to the output. This allows KVM to return the specific > offset that triggered an error, which is especially useful for handling > EAGAIN results caused by transient page reference counts during attribute > conversions. > > Update the KVM API documentation to define the new ioctl and its behavior, > and add the necessary UAPI definitions and capability checks. > > Suggested-by: Sean Christopherson <[email protected]> > Suggested-by: Michael Roth <[email protected]> > Signed-off-by: Ackerley Tng <[email protected]>
Reviewed-by: Binbin Wu <[email protected]> Two nits below. > > +4.145 KVM_SET_MEMORY_ATTRIBUTES2 > +--------------------------------- > + > +:Capability: KVM_CAP_GUEST_MEMFD_MEMORY_ATTRIBUTES > +:Architectures: all > +:Type: guest_memfd ioctl > +:Parameters: struct kvm_memory_attributes2 (in/out) > +:Returns: 0 on success, <0 on error > + > +Errors: > + > + ========== =============================================================== > + EINVAL The specified `offset` or `size` were invalid (e.g. not ^ was > + page aligned, causes an overflow, or size is zero). > + EFAULT The parameter address was invalid. > + EAGAIN Some page within requested range had unexpected refcounts. The > + offset of the page will be returned in `error_offset`. > + ENOMEM Ran out of memory trying to track private/shared state > + ========== =============================================================== [...] > + > +Set attributes for a range of offsets within a guest_memfd to > +KVM_MEMORY_ATTRIBUTE_PRIVATE to limit the specified guest_memfd backed > +memory range for guest_use. Even if KVM_CAP_GUEST_MEMFD_MMAP is ^ guest use > +supported, after a successful call to set > +KVM_MEMORY_ATTRIBUTE_PRIVATE, the requested range will not be mappable > +into host userspace and will only be mappable by the guest. > +
