On Fri, Sep 26, 2014 at 07:25:35PM +0200, Andrea Arcangeli wrote: > diff --git a/drivers/dma/iovlock.c b/drivers/dma/iovlock.c > index bb48a57..12ea7c3 100644 > --- a/drivers/dma/iovlock.c > +++ b/drivers/dma/iovlock.c > @@ -95,17 +95,11 @@ struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len) > pages += page_list->nr_pages; > > /* pin pages down */ > - down_read(¤t->mm->mmap_sem); > - ret = get_user_pages( > - current, > - current->mm, > + ret = get_user_pages_fast( > (unsigned long) iov[i].iov_base, > page_list->nr_pages, > 1, /* write */ > - 0, /* force */ > - page_list->pages, > - NULL); > - up_read(¤t->mm->mmap_sem); > + page_list->pages); > > if (ret != page_list->nr_pages) > goto unpin; > --- a/drivers/misc/sgi-gru/grufault.c > +++ b/drivers/misc/sgi-gru/grufault.c > @@ -198,8 +198,7 @@ static int non_atomic_pte_lookup(struct vm_area_struct *vma, > #else > *pageshift = PAGE_SHIFT; > #endif > - if (get_user_pages > - (current, current->mm, vaddr, 1, write, 0, &page, NULL) <= 0) > + if (get_user_pages_fast(vaddr, 1, write, &page) <= 0) > return -EFAULT; > *paddr = page_to_phys(page); > put_page(page); > diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c > index aff9689..c89dcfa 100644 > --- a/drivers/scsi/st.c > +++ b/drivers/scsi/st.c > @@ -4536,18 +4536,12 @@ static int sgl_map_user_pages(struct st_buffer *STbp, > return -ENOMEM; > > /* Try to fault in all of the necessary pages */ > - down_read(¤t->mm->mmap_sem); > /* rw==READ means read from drive, write into memory area */ > - res = get_user_pages( > - current, > - current->mm, > + res = get_user_pages_fast( > uaddr, > nr_pages, > rw == READ, > - 0, /* don't force */ > - pages, > - NULL); > - up_read(¤t->mm->mmap_sem); > + pages); > > /* Errors and no page mapped should return here */ > if (res < nr_pages) For all these and the other _fast() users, is there an actual limit to the nr_pages passed in? Because we used to have the 64 pages limit from DIO, but without that we get rather long IRQ-off latencies. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html