]> git.openfabrics.org - ~tnikolova/compat-rdma/.git/commitdiff
RDMA/cxgb4: Initialize the device status page
authorSteve Wise <swise@opengridcomputing.com>
Wed, 16 Jul 2014 14:29:16 +0000 (09:29 -0500)
committerSteve Wise <swise@opengridcomputing.com>
Wed, 16 Jul 2014 14:29:16 +0000 (09:29 -0500)
Cherry picked from Roland's for-next branch.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
linux-next-cherry-picks/0102-RDMA-cxgb4--Initialize-the-device-status-page.patch [new file with mode: 0644]

diff --git a/linux-next-cherry-picks/0102-RDMA-cxgb4--Initialize-the-device-status-page.patch b/linux-next-cherry-picks/0102-RDMA-cxgb4--Initialize-the-device-status-page.patch
new file mode 100644 (file)
index 0000000..defaec5
--- /dev/null
@@ -0,0 +1,29 @@
+commit 6b54d54dea82ae214e4a45a503c4ef755a8ecee8
+Author: Steve Wise <swise@opengridcomputing.com>
+Date:   Tue Jul 8 10:20:35 2014 -0500
+
+    RDMA/cxgb4: Initialize the device status page
+    
+    The status page is mapped to user processes and allows sharing the
+    device state between the kernel and user processes.  This state isn't
+    getting initialized and thus intermittently causes problems.  Namely,
+    the user process can mistakenly think the user doorbell writes are
+    disabled which causes SQ work requests to never get fetched by HW.
+    
+    Fixes: 05eb23893c2c ("cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes").
+    Signed-off-by: Steve Wise <swise@opengridcomputing.com>
+    Cc: <stable@vger.kernel.org> # v3.15
+    Signed-off-by: Roland Dreier <roland@purestorage.com>
+
+diff --git a/drivers/infiniband/hw/cxgb4/device.c b/drivers/infiniband/hw/cxgb4/device.c
+index dd93aad..16b75de 100644
+--- a/drivers/infiniband/hw/cxgb4/device.c
++++ b/drivers/infiniband/hw/cxgb4/device.c
+@@ -696,6 +696,7 @@ static int c4iw_rdev_open(struct c4iw_rdev *rdev)
+               pr_err(MOD "error allocating status page\n");
+               goto err4;
+       }
++      rdev->status_page->db_off = 0;
+       return 0;
+ err4:
+       c4iw_rqtpool_destroy(rdev);