summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/sw
diff options
context:
space:
mode:
authorBernard Metzler <bmt@zurich.ibm.com>2019-09-09 15:29:45 +0200
committerJason Gunthorpe <jgg@mellanox.com>2019-09-13 16:59:55 -0300
commit4db8fd4973329810c8549b08df12907e6fe921c2 (patch)
tree2b5e0ed06fc693ee76f2ede3a82ab035df507ea7 /drivers/infiniband/sw
parent75c66515e4fea4e9bb488b6125e014220f846c61 (diff)
downloadlinux-stable-4db8fd4973329810c8549b08df12907e6fe921c2.tar.gz
linux-stable-4db8fd4973329810c8549b08df12907e6fe921c2.tar.bz2
linux-stable-4db8fd4973329810c8549b08df12907e6fe921c2.zip
RDMA/siw: Relax from kmap_atomic() use in TX path
Since the transmit path is never executed in an atomic context, we do not need kmap_atomic() and can always use less demanding kmap(). Link: https://lore.kernel.org/r/20190909132945.30462-1-bmt@zurich.ibm.com Signed-off-by: Bernard Metzler <bmt@zurich.ibm.com> Reviewed-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'drivers/infiniband/sw')
-rw-r--r--drivers/infiniband/sw/siw/siw_qp_tx.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/infiniband/sw/siw/siw_qp_tx.c b/drivers/infiniband/sw/siw/siw_qp_tx.c
index 8e72f955921d..5d97bba0ce6d 100644
--- a/drivers/infiniband/sw/siw/siw_qp_tx.c
+++ b/drivers/infiniband/sw/siw/siw_qp_tx.c
@@ -76,16 +76,15 @@ static int siw_try_1seg(struct siw_iwarp_tx *c_tx, void *paddr)
if (unlikely(!p))
return -EFAULT;
- buffer = kmap_atomic(p);
+ buffer = kmap(p);
if (likely(PAGE_SIZE - off >= bytes)) {
memcpy(paddr, buffer + off, bytes);
- kunmap_atomic(buffer);
} else {
unsigned long part = bytes - (PAGE_SIZE - off);
memcpy(paddr, buffer + off, part);
- kunmap_atomic(buffer);
+ kunmap(p);
if (!mem->is_pbl)
p = siw_get_upage(mem->umem,
@@ -97,11 +96,10 @@ static int siw_try_1seg(struct siw_iwarp_tx *c_tx, void *paddr)
if (unlikely(!p))
return -EFAULT;
- buffer = kmap_atomic(p);
- memcpy(paddr + part, buffer,
- bytes - part);
- kunmap_atomic(buffer);
+ buffer = kmap(p);
+ memcpy(paddr + part, buffer, bytes - part);
}
+ kunmap(p);
}
}
return (int)bytes;