From f35d803b88ddfded20f404aa3cf53f334605d0b2 Mon Sep 17 00:00:00 2001 From: Dotan Barak Date: Wed, 11 Jul 2012 03:45:12 -0600 Subject: [PATCH] ib_core: User mode FMR fixes 2012-06-11 Orabug: 21517998 Signed-off-by: Arun Kaimalettu (Ported from UEK2/Mellanox OFED 1.5.5R2) Signed-off-by: Mukesh Kacker --- drivers/infiniband/core/fmr_pool.c | 4 ++-- drivers/infiniband/core/uverbs_cmd.c | 1 + drivers/infiniband/core/uverbs_main.c | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/core/fmr_pool.c b/drivers/infiniband/core/fmr_pool.c index dfadbc0c45dc..2e9e1404c209 100644 --- a/drivers/infiniband/core/fmr_pool.c +++ b/drivers/infiniband/core/fmr_pool.c @@ -299,8 +299,8 @@ static int ib_fmr_cleanup_thread(void *pool_ptr) set_current_state(TASK_INTERRUPTIBLE); if (atomic_read(&pool->flush_ser) - atomic_read(&pool->req_ser) >= 0 && !kthread_should_stop()) { - /* run once in 1 sec */ - time_left = schedule_timeout((HZ/FMR_SPLIT_COUNT)/20); + /* run once in 50 mills */ + time_left = schedule_timeout(msecs_to_jiffies(50)); } __set_current_state(TASK_RUNNING); } while (!kthread_should_stop()); diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index aa39c2ec531c..51731346c3a6 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c @@ -1750,6 +1750,7 @@ err_copy: err_unreg: ib_fmr_pool_unmap(fmr); + atomic_dec(&pd->usecnt); err_free_sg: /* if mapped already, this will be freed while flushing */ diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index fedf6008603b..c8b3ada3d4ca 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c @@ -306,9 +306,11 @@ static int ib_uverbs_cleanup_ucontext(struct ib_uverbs_file *file, list_for_each_entry_safe(uobj, tmp, &context->fmr_list, list) { struct ib_pool_fmr *fmr = uobj->object; + struct ib_pd *pd = fmr->pd; idr_remove_uobj(&ib_uverbs_fmr_idr, uobj); ib_fmr_pool_unmap(fmr); + atomic_dec(&pd->usecnt); kfree(uobj); } -- 2.50.1