Messages in this thread Patch in this message | | | Date | Wed, 16 Dec 2009 12:07:24 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | [mm][RFC][PATCH 7/11] mm accessor for inifiniband |
| |
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Replacing mmap_sem with mm_accessor, for inifiniband.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> --- drivers/infiniband/core/umem.c | 14 +++++++------- drivers/infiniband/hw/ipath/ipath_user_pages.c | 12 ++++++------ drivers/infiniband/hw/ipath/ipath_user_sdma.c | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-)
Index: mmotm-mm-accessor/drivers/infiniband/hw/ipath/ipath_user_pages.c =================================================================== --- mmotm-mm-accessor.orig/drivers/infiniband/hw/ipath/ipath_user_pages.c +++ mmotm-mm-accessor/drivers/infiniband/hw/ipath/ipath_user_pages.c @@ -162,24 +162,24 @@ int ipath_get_user_pages(unsigned long s { int ret; - down_write(¤t->mm->mmap_sem); + mm_write_lock(current->mm); ret = __get_user_pages(start_page, num_pages, p, NULL); - up_write(¤t->mm->mmap_sem); + mm_write_unlock(current->mm); return ret; } void ipath_release_user_pages(struct page **p, size_t num_pages) { - down_write(¤t->mm->mmap_sem); + mm_write_lock(current->mm); __ipath_release_user_pages(p, num_pages, 1); current->mm->locked_vm -= num_pages; - up_write(¤t->mm->mmap_sem); + mm_write_unlock(current->mm); } struct ipath_user_pages_work { @@ -193,9 +193,9 @@ static void user_pages_account(struct wo struct ipath_user_pages_work *work = container_of(_work, struct ipath_user_pages_work, work); - down_write(&work->mm->mmap_sem); + mm_write_lock(work->mm); work->mm->locked_vm -= work->num_pages; - up_write(&work->mm->mmap_sem); + mm_write_unlock(work->mm); mmput(work->mm); kfree(work); } Index: mmotm-mm-accessor/drivers/infiniband/hw/ipath/ipath_user_sdma.c =================================================================== --- mmotm-mm-accessor.orig/drivers/infiniband/hw/ipath/ipath_user_sdma.c +++ mmotm-mm-accessor/drivers/infiniband/hw/ipath/ipath_user_sdma.c @@ -811,9 +811,9 @@ int ipath_user_sdma_writev(struct ipath_ while (dim) { const int mxp = 8; - down_write(¤t->mm->mmap_sem); + mm_write_lock(current->mm); ret = ipath_user_sdma_queue_pkts(dd, pq, &list, iov, dim, mxp); - up_write(¤t->mm->mmap_sem); + mm_write_unlock(current->mm); if (ret <= 0) goto done_unlock; Index: mmotm-mm-accessor/drivers/infiniband/core/umem.c =================================================================== --- mmotm-mm-accessor.orig/drivers/infiniband/core/umem.c +++ mmotm-mm-accessor/drivers/infiniband/core/umem.c @@ -133,7 +133,7 @@ struct ib_umem *ib_umem_get(struct ib_uc npages = PAGE_ALIGN(size + umem->offset) >> PAGE_SHIFT; - down_write(¤t->mm->mmap_sem); + mm_write_lock(current->mm); locked = npages + current->mm->locked_vm; lock_limit = rlimit(RLIMIT_MEMLOCK) >> PAGE_SHIFT; @@ -207,7 +207,7 @@ out: } else current->mm->locked_vm = locked; - up_write(¤t->mm->mmap_sem); + mm_write_unlock(current->mm); if (vma_list) free_page((unsigned long) vma_list); free_page((unsigned long) page_list); @@ -220,9 +220,9 @@ static void ib_umem_account(struct work_ { struct ib_umem *umem = container_of(work, struct ib_umem, work); - down_write(&umem->mm->mmap_sem); + mm_write_lock(umem->mm); umem->mm->locked_vm -= umem->diff; - up_write(&umem->mm->mmap_sem); + mm_write_unlock(umem->mm); mmput(umem->mm); kfree(umem); } @@ -256,7 +256,7 @@ void ib_umem_release(struct ib_umem *ume * we defer the vm_locked accounting to the system workqueue. */ if (context->closing) { - if (!down_write_trylock(&mm->mmap_sem)) { + if (!mm_write_trylock(mm)) { INIT_WORK(&umem->work, ib_umem_account); umem->mm = mm; umem->diff = diff; @@ -265,10 +265,10 @@ void ib_umem_release(struct ib_umem *ume return; } } else - down_write(&mm->mmap_sem); + mm_write_lock(mm); current->mm->locked_vm -= diff; - up_write(&mm->mmap_sem); + mm_write_unlock(mm); mmput(mm); kfree(umem); }
| |