aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rdma/hfi1/file_ops.c
diff options
context:
space:
mode:
authorMitko Haralanov <mitko.haralanov@intel.com>2016-02-05 11:57:53 -0500
committerDoug Ledford <dledford@redhat.com>2016-02-29 17:10:39 -0500
commit463e6ebc86578ef3ff5bb500f6fc9449afaeea7e (patch)
tree0f325f2ac743a5bb8be44d904f07691c6bcb5a8e /drivers/staging/rdma/hfi1/file_ops.c
parentstaging/hfi1: Add building blocks for TID caching (diff)
downloadlinux-dev-463e6ebc86578ef3ff5bb500f6fc9449afaeea7e.tar.xz
linux-dev-463e6ebc86578ef3ff5bb500f6fc9449afaeea7e.zip
staging/hfi1: Convert lock to mutex
The exp_lock lock does not need to be a spinlock as all its uses are in process context and allowing the process to sleep when the mutex is contended might be beneficial. Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/staging/rdma/hfi1/file_ops.c')
-rw-r--r--drivers/staging/rdma/hfi1/file_ops.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/staging/rdma/hfi1/file_ops.c b/drivers/staging/rdma/hfi1/file_ops.c
index 76fe60315bb4..b0348263b901 100644
--- a/drivers/staging/rdma/hfi1/file_ops.c
+++ b/drivers/staging/rdma/hfi1/file_ops.c
@@ -1611,14 +1611,14 @@ static int exp_tid_setup(struct file *fp, struct hfi1_tid_info *tinfo)
* reserved, we don't need the lock anymore since we
* are guaranteed the groups.
*/
- spin_lock(&uctxt->exp_lock);
+ mutex_lock(&uctxt->exp_lock);
if (uctxt->tidusemap[useidx] == -1ULL ||
bitidx >= BITS_PER_LONG) {
/* no free groups in the set, use the next */
useidx = (useidx + 1) % uctxt->tidmapcnt;
idx++;
bitidx = 0;
- spin_unlock(&uctxt->exp_lock);
+ mutex_unlock(&uctxt->exp_lock);
continue;
}
ngroups = ((npages - mapped) / dd->rcv_entries.group_size) +
@@ -1635,13 +1635,13 @@ static int exp_tid_setup(struct file *fp, struct hfi1_tid_info *tinfo)
* as 0 because we don't check the entire bitmap but
* we start from bitidx.
*/
- spin_unlock(&uctxt->exp_lock);
+ mutex_unlock(&uctxt->exp_lock);
continue;
}
bits_used = min(free, ngroups);
tidmap[useidx] |= ((1ULL << bits_used) - 1) << bitidx;
uctxt->tidusemap[useidx] |= tidmap[useidx];
- spin_unlock(&uctxt->exp_lock);
+ mutex_unlock(&uctxt->exp_lock);
/*
* At this point, we know where in the map we have free bits.
@@ -1677,10 +1677,10 @@ static int exp_tid_setup(struct file *fp, struct hfi1_tid_info *tinfo)
* Let go of the bits that we reserved since we are not
* going to use them.
*/
- spin_lock(&uctxt->exp_lock);
+ mutex_lock(&uctxt->exp_lock);
uctxt->tidusemap[useidx] &=
~(((1ULL << bits_used) - 1) << bitidx);
- spin_unlock(&uctxt->exp_lock);
+ mutex_unlock(&uctxt->exp_lock);
goto done;
}
/*