[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv4 14/14] xen/gntdev: provide find_special_page VMA operation
On Mon, 26 Jan 2015, David Vrabel wrote: > For a PV guest, use the find_special_page op to find the right page. > To handle VMAs being split, remember the start of the original VMA so > the correct index in the pages array can be calculated. > > Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> Very nice. Reviewed-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > drivers/xen/gntdev.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c > index 8ea10eb..826e731 100644 > --- a/drivers/xen/gntdev.c > +++ b/drivers/xen/gntdev.c > @@ -93,6 +93,7 @@ struct grant_map { > struct gnttab_map_grant_ref *kmap_ops; > struct gnttab_unmap_grant_ref *kunmap_ops; > struct page **pages; > + unsigned long pages_vm_start; > }; > > static int unmap_grant_pages(struct grant_map *map, int offset, int pages); > @@ -444,9 +445,18 @@ static void gntdev_vma_close(struct vm_area_struct *vma) > gntdev_put_map(priv, map); > } > > +static struct page *gntdev_vma_find_special_page(struct vm_area_struct *vma, > + unsigned long addr) > +{ > + struct grant_map *map = vma->vm_private_data; > + > + return map->pages[(addr - map->pages_vm_start) >> PAGE_SHIFT]; > +} > + > static struct vm_operations_struct gntdev_vmops = { > .open = gntdev_vma_open, > .close = gntdev_vma_close, > + .find_special_page = gntdev_vma_find_special_page, > }; > > /* ------------------------------------------------------------------ */ > @@ -870,6 +880,8 @@ static int gntdev_mmap(struct file *flip, struct > vm_area_struct *vma) > vma->vm_end - vma->vm_start, > set_grant_ptes_as_special, NULL); > } > + > + map->pages_vm_start = vma->vm_start; > } > > return 0; > -- > 1.7.10.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |