On 03/16/2018 12:14 PM, jgli...@redhat.com wrote: > From: Jérôme Glisse <jgli...@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 <jhubb...@nvidia.com> thanks, -- John Hubbard NVIDIA