On 9/21/22 16:45, Dan Williams wrote: >> I'm shocked to read this - how does it make any sense? > > I think what happened is that since memremap_pages() historically > produced pages with an elevated reference count that GPU drivers skipped > taking a reference on first allocation and just passed along an elevated > reference count page to the first user. > > So either we keep that assumption or update all users to be prepared for > idle pages coming out of memremap_pages(). > > This is all in reaction to the "set_page_count(page, 1);" in > free_zone_device_page(). Which I am happy to get rid of but need from > help from MEMORY_DEVICE_{PRIVATE,COHERENT} folks to react to > memremap_pages() starting all pages at reference count 0. > Just one tiny thing to contribute to this difficult story: I think that we can make this slightly clearer by saying things like this: "The device driver is the allocator for device pages. And allocators keep pages at a refcount == 0, until they hand out the pages in response to allocation requests." To me at least, this makes it easier to see why pages are 0 or > 0 refcounts. In case that helps at all. thanks, -- John Hubbard NVIDIA