On 8/7/26 23:52, Ackerley Tng via B4 Relay wrote: > From: Ackerley Tng <[email protected]> > > 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
