summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/hfi1/common.h
diff options
context:
space:
mode:
authorDon Hiatt <don.hiatt@intel.com>2017-10-09 21:38:19 +0200
committerDoug Ledford <dledford@redhat.com>2017-10-18 16:12:59 +0200
commitf8195f3b14a046ae33d9c369ffb59b4192f29e08 (patch)
treea7b66fa55b421c40d43c7eed99564d4f726090be /drivers/infiniband/hw/hfi1/common.h
parentIB/hfi1: Mask out A bit from psn trace (diff)
downloadlinux-f8195f3b14a046ae33d9c369ffb59b4192f29e08.tar.xz
linux-f8195f3b14a046ae33d9c369ffb59b4192f29e08.zip
IB/hfi1: Eliminate allocation while atomic
The PIO trailing buffer was being dynamically allocated but the kcalloc return value was not being checked. Further, the GFP_KERNEL was being used even though the send engine might be called with interrupts disabled. Since the maximum size of the trailing buffer is only 12 bytes (CRC = 4, LT = 1, Pad = 0 to 7 bytes) just statically allocate the buffer, remove the alloc entirely and share it with the SDMA engine by making it global. Reported-by: Leon Romanovsky <leon@kernel.org> Fixes: 566d53a82644 ("IB/hfi1: Enhance PIO/SDMA send for 16B") Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Don Hiatt <don.hiatt@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Reviewed-by: Leon Romanovsky <leon@kernel.org> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/common.h')
-rw-r--r--drivers/infiniband/hw/hfi1/common.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/common.h b/drivers/infiniband/hw/hfi1/common.h
index 3e27794ec750..7108d4d92259 100644
--- a/drivers/infiniband/hw/hfi1/common.h
+++ b/drivers/infiniband/hw/hfi1/common.h
@@ -328,6 +328,7 @@ struct diag_pkt {
#define SC15_PACKET 0xF
#define SIZE_OF_CRC 1
#define SIZE_OF_LT 1
+#define MAX_16B_PADDING 12 /* CRC = 4, LT = 1, Pad = 0 to 7 bytes */
#define LIM_MGMT_P_KEY 0x7FFF
#define FULL_MGMT_P_KEY 0xFFFF