Jason Gunthorpe
2020-Mar-17 12:47 UTC
[Nouveau] [PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On Tue, Mar 17, 2020 at 01:28:13PM +0100, Christoph Hellwig wrote:> On Tue, Mar 17, 2020 at 01:24:45PM +0100, Christoph Hellwig wrote: > > On Tue, Mar 17, 2020 at 09:15:36AM -0300, Jason Gunthorpe wrote: > > > > Getting rid of HMM_PFN_DEVICE_PRIVATE seems reasonable to me since a driver can > > > > look at the struct page but what if a driver needs to fault in a page from > > > > another device's private memory? Should it call handle_mm_fault()? > > > > > > Isn't that what this series basically does? > > > > > > The dev_private_owner is set to the type of pgmap the device knows how > > > to handle, and everything else is automatically faulted for the > > > device. > > > > > > If the device does not know how to handle device_private then it sets > > > dev_private_owner to NULL and it never gets device_private pfns. > > > > > > Since the device_private pfn cannot be dma mapped, drivers must have > > > explicit support for them. > > > > No, with this series (and all actual callers before this series) > > we never fault in device private pages. > > IFF we want to fault it in we'd need something like this. But I'd > really prefer to see test cases for that first.In general I think hmm_range_fault should have a mode that is the same as get_user_pages in terms of when it returns a hard failure, and generates faults. AFAIK, GUP will fault in this case? I need this for making ODP use this API. ODP is the one that is highly likely to see other driver's device_private pages and must have them always fault to CPU.> diff --git a/mm/hmm.c b/mm/hmm.c > index b75b3750e03d..2884a3d11a1f 100644 > +++ b/mm/hmm.c > @@ -276,7 +276,7 @@ static int hmm_vma_handle_pte(struct mm_walk *walk, unsigned long addr, > if (!fault && !write_fault) > return 0; > > - if (!non_swap_entry(entry)) > + if (!non_swap_entry(entry) || is_device_private_entry(entry)) > goto fault;Yes, OK, makes sense. I've been using v7 of Ralph's tester and it is working well - it has DEVICE_PRIVATE support so I think it can test this flow too. Ralph are you able? This hunk seems trivial enough to me, can we include it now? Thanks, Jason
Christoph Hellwig
2020-Mar-17 12:59 UTC
[Nouveau] [PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On Tue, Mar 17, 2020 at 09:47:55AM -0300, Jason Gunthorpe wrote:> I've been using v7 of Ralph's tester and it is working well - it has > DEVICE_PRIVATE support so I think it can test this flow too. Ralph are > you able? > > This hunk seems trivial enough to me, can we include it now?I can send a separate patch for it once the tester covers it. I don't want to add it to the original patch as it is a significant behavior change compared to the existing code.
Jason Gunthorpe
2020-Mar-17 17:32 UTC
[Nouveau] [PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On Tue, Mar 17, 2020 at 01:59:55PM +0100, Christoph Hellwig wrote:> On Tue, Mar 17, 2020 at 09:47:55AM -0300, Jason Gunthorpe wrote: > > I've been using v7 of Ralph's tester and it is working well - it has > > DEVICE_PRIVATE support so I think it can test this flow too. Ralph are > > you able? > > > > This hunk seems trivial enough to me, can we include it now? > > I can send a separate patch for it once the tester covers it. I don't > want to add it to the original patch as it is a significant behavior > change compared to the existing code.Okay. I'm happy enough for now that amdgpu will get ERROR on device_private pages. That is a bug fix in of itself. Jason
Ralph Campbell
2020-Mar-17 23:14 UTC
[Nouveau] [PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
On 3/17/20 5:59 AM, Christoph Hellwig wrote:> On Tue, Mar 17, 2020 at 09:47:55AM -0300, Jason Gunthorpe wrote: >> I've been using v7 of Ralph's tester and it is working well - it has >> DEVICE_PRIVATE support so I think it can test this flow too. Ralph are >> you able? >> >> This hunk seems trivial enough to me, can we include it now? > > I can send a separate patch for it once the tester covers it. I don't > want to add it to the original patch as it is a significant behavior > change compared to the existing code. >Attached is an updated version of my HMM tests based on linux-5.6.0-rc6. I ran this OK with Jason's 8+1 HMM patches, Christoph's 1-5 misc HMM clean ups, and Christoph's 1-4 device private page changes applied. I'm working on getting my nouveau tests running again on a different test machine and will report on that when ready. -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-mm-hmm-test-add-self-tests-for-HMM.patch Type: text/x-patch Size: 73676 bytes Desc: not available URL: <https://lists.freedesktop.org/archives/nouveau/attachments/20200317/bde8688b/attachment-0001.bin>
Seemingly Similar Threads
- [PATCH 3/4] mm: simplify device private page handling in hmm_range_fault
- [PATCH v6 0/6] mm/hmm/test: add self tests for HMM
- [PATCH 0/4] HMM tests and minor fixes
- [PATCH 00/16] mm/hmm/nouveau: THP mapping and migration
- [PATCH hmm 0/5] Adjust hmm_range_fault() API