search for: npinned

Displaying 20 results from an estimated 45 matches for "npinned".

Did you mean: pinned
2018 Dec 13
5
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
..._msg(struct vhost_dev *dev) > spin_unlock(&dev->iotlb_lock); > } > > +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > + size_t size, int write) > +{ > + struct page **pages; > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > + int npinned; > + void *vaddr; > + > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > + if (!pages) > + return -ENOMEM; > + > + npinned = get_user_pages_fast(uaddr, npages, write, pages); > + if (npinned != npages) > + goto err; > + As I said I have doubts a...
2018 Dec 13
5
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
..._msg(struct vhost_dev *dev) > spin_unlock(&dev->iotlb_lock); > } > > +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > + size_t size, int write) > +{ > + struct page **pages; > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > + int npinned; > + void *vaddr; > + > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > + if (!pages) > + return -ENOMEM; > + > + npinned = get_user_pages_fast(uaddr, npages, write, pages); > + if (npinned != npages) > + goto err; > + As I said I have doubts a...
2018 Dec 14
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...b_lock); > > > } > > > +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > > > + size_t size, int write) > > > +{ > > > + struct page **pages; > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > + int npinned; > > > + void *vaddr; > > > + > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > + if (!pages) > > > + return -ENOMEM; > > > + > > > + npinned = get_user_pages_fast(uaddr, npages, write, pages); > > &...
2018 Dec 14
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...b_lock); > > > } > > > +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > > > + size_t size, int write) > > > +{ > > > + struct page **pages; > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > + int npinned; > > > + void *vaddr; > > > + > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > + if (!pages) > > > + return -ENOMEM; > > > + > > > + npinned = get_user_pages_fast(uaddr, npages, write, pages); > > &...
2019 Sep 06
1
[PATCH 1/2] Revert "vhost: access vq metadata through kernel virtual address"
...} > - > -static int vhost_map_prefetch(struct vhost_virtqueue *vq, > - int index) > -{ > - struct vhost_map *map; > - struct vhost_uaddr *uaddr = &vq->uaddrs[index]; > - struct page **pages; > - int npages = DIV_ROUND_UP(uaddr->size, PAGE_SIZE); > - int npinned; > - void *vaddr, *v; > - int err; > - int i; > - > - spin_lock(&vq->mmu_lock); > - > - err = -EFAULT; > - if (vq->invalidate_count) > - goto err; > - > - err = -ENOMEM; > - map = kmalloc(sizeof(*map), GFP_ATOMIC); > - if (!map) > - goto err; &g...
2019 Sep 05
8
[PATCH 0/2] Revert and rework on the metadata accelreation
Hi: Per request from Michael and Jason, the metadata accelreation is reverted in this version and rework in next version. Please review. Thanks Jason Wang (2): Revert "vhost: access vq metadata through kernel virtual address" vhost: re-introducing metadata acceleration through kernel virtual address drivers/vhost/vhost.c | 202 +++++++++++++++++++++++++-----------------
2019 Sep 05
8
[PATCH 0/2] Revert and rework on the metadata accelreation
Hi: Per request from Michael and Jason, the metadata accelreation is reverted in this version and rework in next version. Please review. Thanks Jason Wang (2): Revert "vhost: access vq metadata through kernel virtual address" vhost: re-introducing metadata acceleration through kernel virtual address drivers/vhost/vhost.c | 202 +++++++++++++++++++++++++-----------------
2018 Dec 13
11
[PATCH net-next 0/3] vhost: accelerate metadata access through vmap()
Hi: This series tries to access virtqueue metadata through kernel virtual address instead of copy_user() friends since they had too much overheads like checks, spec barriers or even hardware feature toggling. Test shows about 24% improvement on TX PPS. It should benefit other cases as well. Please review Jason Wang (3): vhost: generalize adding used elem vhost: fine grain userspace memory
2018 Dec 13
11
[PATCH net-next 0/3] vhost: accelerate metadata access through vmap()
Hi: This series tries to access virtqueue metadata through kernel virtual address instead of copy_user() friends since they had too much overheads like checks, spec barriers or even hardware feature toggling. Test shows about 24% improvement on TX PPS. It should benefit other cases as well. Please review Jason Wang (3): vhost: generalize adding used elem vhost: fine grain userspace memory
2019 Sep 08
3
[PATCH 2/2] vhost: re-introducing metadata acceleration through kernel virtual address
...} > + > +static int vhost_map_prefetch(struct vhost_virtqueue *vq, > + int index) > +{ > + struct vhost_map *map; > + struct vhost_uaddr *uaddr = &vq->uaddrs[index]; > + struct page **pages; > + int npages = DIV_ROUND_UP(uaddr->size, PAGE_SIZE); > + int npinned; > + void *vaddr, *v; > + int err; > + int i; > + > + spin_lock(&vq->mmu_lock); > + > + err = -EFAULT; > + if (vq->invalidate_count) > + goto err; > + > + err = -ENOMEM; > + map = kmalloc(sizeof(*map), GFP_ATOMIC); > + if (!map) > + goto err; &g...
2019 Sep 08
3
[PATCH 2/2] vhost: re-introducing metadata acceleration through kernel virtual address
...} > + > +static int vhost_map_prefetch(struct vhost_virtqueue *vq, > + int index) > +{ > + struct vhost_map *map; > + struct vhost_uaddr *uaddr = &vq->uaddrs[index]; > + struct page **pages; > + int npages = DIV_ROUND_UP(uaddr->size, PAGE_SIZE); > + int npinned; > + void *vaddr, *v; > + int err; > + int i; > + > + spin_lock(&vq->mmu_lock); > + > + err = -EFAULT; > + if (vq->invalidate_count) > + goto err; > + > + err = -ENOMEM; > + map = kmalloc(sizeof(*map), GFP_ATOMIC); > + if (!map) > + goto err; &g...
2018 Dec 24
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > > > > > + size_t size, int write) > > > > > +{ > > > > > + struct page **pages; > > > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > > > + int npinned; > > > > > + void *vaddr; > > > > > + > > > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > > > + if (!pages) > > > > > + return -ENOMEM; > > > > > + > > > > > + n...
2018 Dec 24
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > > > > > + size_t size, int write) > > > > > +{ > > > > > + struct page **pages; > > > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > > > + int npinned; > > > > > + void *vaddr; > > > > > + > > > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > > > + if (!pages) > > > > > + return -ENOMEM; > > > > > + > > > > > + n...
2018 Dec 13
0
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...@@ -614,6 +617,102 @@ static void vhost_clear_msg(struct vhost_dev *dev) spin_unlock(&dev->iotlb_lock); } +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, + size_t size, int write) +{ + struct page **pages; + int npages = DIV_ROUND_UP(size, PAGE_SIZE); + int npinned; + void *vaddr; + + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); + if (!pages) + return -ENOMEM; + + npinned = get_user_pages_fast(uaddr, npages, write, pages); + if (npinned != npages) + goto err; + + vaddr = vmap(pages, npages, VM_MAP, PAGE_KERNEL); + if (!vaddr) + goto er...
2019 Sep 05
0
[PATCH 1/2] Revert "vhost: access vq metadata through kernel virtual address"
...get_used_size(vq, vq->num), - true); -} - -static int vhost_map_prefetch(struct vhost_virtqueue *vq, - int index) -{ - struct vhost_map *map; - struct vhost_uaddr *uaddr = &vq->uaddrs[index]; - struct page **pages; - int npages = DIV_ROUND_UP(uaddr->size, PAGE_SIZE); - int npinned; - void *vaddr, *v; - int err; - int i; - - spin_lock(&vq->mmu_lock); - - err = -EFAULT; - if (vq->invalidate_count) - goto err; - - err = -ENOMEM; - map = kmalloc(sizeof(*map), GFP_ATOMIC); - if (!map) - goto err; - - pages = kmalloc_array(npages, sizeof(struct page *), GFP_ATOMIC); -...
2019 Jan 04
1
[RFC PATCH V3 5/5] vhost: access vq metadata through kernel virtual address
..._msg(struct vhost_dev *dev) > spin_unlock(&dev->iotlb_lock); > } > > +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, > + size_t size, int write) > +{ > + struct page **pages; > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > + int npinned; > + void *vaddr; > + int err = 0; > + > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > + if (!pages) > + return -ENOMEM; > + > + npinned = get_user_pages_fast(uaddr, npages, write, pages); > + if (npinned != npages) { > + err = -EFAULT; > +...
2018 Dec 14
0
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...spin_unlock(&dev->iotlb_lock); >> } >> >> +static int vhost_init_vmap(struct vhost_vmap *map, unsigned long uaddr, >> + size_t size, int write) >> +{ >> + struct page **pages; >> + int npages = DIV_ROUND_UP(size, PAGE_SIZE); >> + int npinned; >> + void *vaddr; >> + >> + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); >> + if (!pages) >> + return -ENOMEM; >> + >> + npinned = get_user_pages_fast(uaddr, npages, write, pages); >> + if (npinned != npages) >> + goto er...
2019 Sep 09
0
[PATCH 2/2] vhost: re-introducing metadata acceleration through kernel virtual address
...ost_map_prefetch(struct vhost_virtqueue *vq, >> + int index) >> +{ >> + struct vhost_map *map; >> + struct vhost_uaddr *uaddr = &vq->uaddrs[index]; >> + struct page **pages; >> + int npages = DIV_ROUND_UP(uaddr->size, PAGE_SIZE); >> + int npinned; >> + void *vaddr, *v; >> + int err; >> + int i; >> + >> + spin_lock(&vq->mmu_lock); >> + >> + err = -EFAULT; >> + if (vq->invalidate_count) >> + goto err; >> + >> + err = -ENOMEM; >> + map = kmalloc(sizeof(*map), GF...
2018 Dec 25
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...ned long uaddr, > > > > > > > + size_t size, int write) > > > > > > > +{ > > > > > > > + struct page **pages; > > > > > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > > > > > + int npinned; > > > > > > > + void *vaddr; > > > > > > > + > > > > > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > > > > > + if (!pages) > > > > > > > + return -ENOMEM; >...
2018 Dec 25
2
[PATCH net-next 3/3] vhost: access vq metadata through kernel virtual address
...ned long uaddr, > > > > > > > + size_t size, int write) > > > > > > > +{ > > > > > > > + struct page **pages; > > > > > > > + int npages = DIV_ROUND_UP(size, PAGE_SIZE); > > > > > > > + int npinned; > > > > > > > + void *vaddr; > > > > > > > + > > > > > > > + pages = kmalloc_array(npages, sizeof(struct page *), GFP_KERNEL); > > > > > > > + if (!pages) > > > > > > > + return -ENOMEM; >...