Messages in this thread | | | From | Jason Gunthorpe <> | Subject | Re: [PATCH 04/15] mm: remove the pgmap field from struct hmm_vma_walk | Date | Fri, 16 Aug 2019 12:24:25 +0000 |
| |
On Thu, Aug 15, 2019 at 08:54:46PM -0700, Dan Williams wrote:
> > However, this means we cannot do any processing of ZONE_DEVICE pages > > outside the driver lock, so eg, doing any DMA map that might rely on > > MEMORY_DEVICE_PCI_P2PDMA has to be done in the driver lock, which is > > a bit unfortunate. > > Wouldn't P2PDMA use page pins? Not needing to hold a lock over > ZONE_DEVICE page operations was one of the motivations for plumbing > get_dev_pagemap() with a percpu-ref.
hmm_range_fault() doesn't use page pins at all, so if a ZONE_DEVICE page comes out of it then it needs to use another locking pattern.
If I follow it all right:
We can do a get_dev_pagemap inside the page_walk and touch the pgmap, or we can do the 'device mutex && retry' pattern and touch the pgmap in the driver, under that lock.
However in all cases the current get_dev_pagemap()'s in the page walk are not necessary, and we can delete them.
?
Jason
| |