Messages in this thread | | | Subject | Re: [PATCH 08/14] mm/hmm: cleanup special vma handling (VM_SPECIAL) | From | John Hubbard <> | Date | Fri, 16 Mar 2018 21:35:29 -0700 |
| |
On 03/16/2018 12:14 PM, jglisse@redhat.com wrote: > From: Jérôme Glisse <jglisse@redhat.com> > > Special vma (one with any of the VM_SPECIAL flags) can not be access by > device because there is no consistent model accross device drivers on > those vma and their backing memory. > > This patch directly use hmm_range struct for hmm_pfns_special() argument > as it is always affecting the whole vma and thus the whole range. > > It also make behavior consistent after this patch both hmm_vma_fault() > and hmm_vma_get_pfns() returns -EINVAL when facing such vma. Previously > hmm_vma_fault() returned 0 and hmm_vma_get_pfns() return -EINVAL but > both were filling the HMM pfn array with special entry. >
Hi Jerome,
This seems correct.
<snip>
> @@ -486,6 +478,14 @@ static int hmm_vma_walk_pmd(pmd_t *pmdp, > return 0; > } > > +static void hmm_pfns_special(struct hmm_range *range) > +{ > + unsigned long addr = range->start, i = 0; > + > + for (; addr < range->end; addr += PAGE_SIZE, i++) > + range->pfns[i] = HMM_PFN_SPECIAL; > +}
Silly nit: the above would read more naturally, like this:
unsigned long addr, i = 0;
for (addr = range->start; addr < range->end; addr += PAGE_SIZE, i++) range->pfns[i] = HMM_PFN_SPECIAL;
Either way,
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
thanks, -- John Hubbard NVIDIA
| |