On 4/20/26 14:51, Michael S. Tsirkin wrote: > Hi!
> > v2 - this is an attempt to address David Hildenbrand's comments: > overloading GFP and using page->private, support for > balloon deflate. > > I hope this one is acceptable, API wise. > > I also went ahead and implemented an alternative approach > that David suggested: > using GFP_ZERO to zero userspace pages. > The issue is simple: on some architectures, one has to know the > userspace fault address in order to flush the cache. > > So, I had to propagate the fault address everywhere. As I said, that might not be necessary. vma_alloc_folio() is the interface we mostly care about in that regard. > A lot of churn, and my concern is, if we miss even one > place, silent, subtle data corruption will result and only > on some arches (x86 will be fine). Which would *already* be the case of you use folio_alloc(GFP_ZERO) instead of magical vma_alloc_folio() + folio_zero_user(). I don't really see how vma_alloc_folio_hints() -- that also consumes the address -- is any better in that regard? When we just do the right thing with vma_alloc_folio(GFP_ZERO), at least vma_alloc_folio() users will not accidentally do the wrong thing by forgetting to use folio_zero_user(). > > Still, you can view that approach here: > https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git gfp_zero > > David, if you still feel I should switch to that approach, > let me know. Personally, I'd rather keep that as a separate > project from this optimization. I'd prefer if we extend vma_alloc_folio() to just handle GFP_ZERO for us. But let's hear other opinions first. -- Cheers, David

