On 8/7/26 23:52, Ackerley Tng via B4 Relay wrote:
From: Ackerley Tng <redacted>
Before conversion, a guest_memfd could be either all shared, or all
You mean "in-place conversion support" ?
private, configured at creation time using the INIT_SHARED flag. Hence,
when zapping pages from stage 2 page tables, guest_memfd can filter which
to zap based on the initial shared/private state.
With conversion, guest_memfd tracks shared/private state on a per-page
Same here.
level, so a range can contain both private and shared pages. Zap both
private and shared pages for simplicity.
An alternative would be to iterate guest_memfd attributes and only zap both
if shared and private pages exist within the range. Setting both the shared
and private filters lets the zapping logic do that iteration instead.
I mean, we just want to zap anything that belongs to guest_memfd, independent of
shared vs. private, really?
IOW, it's not about shared vs. private, but really about zapping anything that
belongs to guest_memfd.
So, couldn't there just be a KVM_FILTER_GMEM thingy instead?
But I didn't quite digest how these filters are used.
I can see that kvm_gfn_range_filter_to_root_types() does some magic to them, but
I am not a KVM MMU expert to know what KVM_MIRROR_ROOTS would mean.
--
Cheers,
David