[PATCH v2] drm/ttm: Do not put non-struct page memory into PUD/PMDs

Jason Gunthorpe jgg at nvidia.com
Fri Oct 22 19:00:32 UTC 2021


On Thu, Oct 21, 2021 at 01:40:30PM +0200, Daniel Vetter wrote:
> On Wed, Oct 20, 2021 at 11:09:58AM -0300, Jason Gunthorpe wrote:
> > On Wed, Oct 20, 2021 at 08:34:33AM +0200, Thomas Hellström wrote:
> > 
> > > Follow up question: If we resurrect this in the proper way (and in that case
> > > only for x86_64) is there something we need to pay particular attention to
> > > WRT the ZONE_DEVICE refcounting fixing you mention above?
> > 
> > Similar to PTE it should be completely separated from ZONE_DEVICE.
> > 
> > Seeing the special bit set at any level should trigger all page table
> > walkers to never try to get a struct page.
> > 
> > Today some of the page table walkers are trying to do this with
> > vma_is_special(), all of those should end up being the Pxx_SPECIAL
> > test instead.
> 
> My understanding is that vma_is_special is for platforms which don't have
> pte_special, and hence can't do gup_fast. At least I was assuming this is
> why vma_is_special is a thing, and why some architectures cannot do
> gup_fast.

AFAIK that is what vm_normal_page() is for as the rules for MIXED are
complicated 

Once the semi-bogus usages in the PUD/PMD page table walkers are
removed the only remaining users are in arch code around vdso, and I
haven't tried to figure that out..

Jason


More information about the dri-devel mailing list