On 3/5/19 8:30 AM, Arnd Bergmann wrote: > > diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c > index b24ddac1604b..290b6aca7e1d 100644 > --- a/drivers/xen/privcmd.c > +++ b/drivers/xen/privcmd.c > @@ -723,26 +723,6 @@ static long privcmd_ioctl_restrict(struct file *file, > void __user *udata) > return 0; > } > > -struct remap_pfn { > - struct mm_struct *mm; > - struct page **pages; > - pgprot_t prot; > - unsigned long i; > -}; > - > -static int remap_pfn_fn(pte_t *ptep, pgtable_t token, unsigned long addr, > - void *data) > -{ > - struct remap_pfn *r = data; > - struct page *page = r->pages[r->i]; > - pte_t pte = pte_mkspecial(pfn_pte(page_to_pfn(page), r->prot)); > - > - set_pte_at(r->mm, addr, ptep, pte); > - r->i++; > - > - return 0; > -} > - > static long privcmd_ioctl_mmap_resource(struct file *file, void __user > *udata) > { > struct privcmd_data *data = file->private_data; > @@ -809,15 +789,7 @@ static long privcmd_ioctl_mmap_resource(struct file > *file, void __user *udata) > goto out; > > if (xen_feature(XENFEAT_auto_translated_physmap)) { > - struct remap_pfn r = { > - .mm = vma->vm_mm, > - .pages = vma->vm_private_data, > - .prot = vma->vm_page_prot, > - }; > - > - rc = apply_to_page_range(r.mm, kdata.addr, > - kdata.num << PAGE_SHIFT, > - remap_pfn_fn, &r); > + rc = xen_remap_vma_range(vma, kdata.addr, kdata.num << > PAGE_SHIFT);
I wonder whether drivers/xen/xlate_mmu.c might be a good place for these routines. -boris _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel