summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/hfi1/verbs.h
diff options
context:
space:
mode:
authorKaike Wan <kaike.wan@intel.com>2019-01-24 06:36:48 -0800
committerDoug Ledford <dledford@redhat.com>2019-02-05 17:53:55 -0500
commita0b34f75ec209e40f06912380533ec525691544f (patch)
treefc11bed576ed43e217c7719d88623d311d825aa4 /drivers/infiniband/hw/hfi1/verbs.h
parent24b11923da4c7dbf5690d3ac74710affaf564196 (diff)
downloadlinux-a0b34f75ec209e40f06912380533ec525691544f.tar.gz
linux-a0b34f75ec209e40f06912380533ec525691544f.tar.bz2
linux-a0b34f75ec209e40f06912380533ec525691544f.zip
IB/hfi1: Add interlock between a TID RDMA request and other requests
This locking mechanism is designed to provent vavious memory corruption scenarios from occurring when requests are pipelined, especially when RDMA READ/WRITE requests are interleaved with TID RDMA READ/WRITE requests: 1. READ-AFTER-READ; 2. READ-AFTER-WRITE; 3. WRITE-AFTER-READ; When memory corruption is likely, a request will be held back until previous requests have been completed. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Mitko Haralanov <mitko.haralanov@intel.com> Signed-off-by: Kaike Wan <kaike.wan@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/verbs.h')
-rw-r--r--drivers/infiniband/hw/hfi1/verbs.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/hfi1/verbs.h b/drivers/infiniband/hw/hfi1/verbs.h
index 7642b59ad5d2..841727a684d5 100644
--- a/drivers/infiniband/hw/hfi1/verbs.h
+++ b/drivers/infiniband/hw/hfi1/verbs.h
@@ -171,6 +171,9 @@ struct hfi1_qp_priv {
u8 hdr_type; /* 9B or 16B */
unsigned long tid_timer_timeout_jiffies;
+ /* variables for the TID RDMA SE state machine */
+ u32 s_flags;
+
/* For TID RDMA READ */
u32 tid_r_reqs; /* Num of tid reads requested */
u32 tid_r_comp; /* Num of tid reads completed */