On Wed, Jun 04, 2025 at 07:35:24PM -0700, Dan Williams wrote: > If all dax pages are special, then vm_normal_page() should never find > them and gup should fail. > > ...oh, but vm_normal_page_p[mu]d() is not used in the gup path, and > 'special' is not set in the pte path.
That seems really suboptimal?? Why would pmd and pte be different? > I think for any p[mu]d where p[mu]d_page() is ok to use should never set > 'special', right? There should be dedicated functions for installing pages and PFNs, only the PFN one would set the special bit. And certainly your tests *should* be failing as special entries should never ever be converted to struct page. Jason