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.

This bug was introduced by this commit in 3.15:

        commit 05eb23893c2cf9502a9cec0c32e7f1d1ed2895c8
        Author: Steve Wise <[email protected]>
        Date:   Fri Mar 14 21:52:08 2014 +0530

            cxgb4/iw_cxgb4: Doorbell Drop Avoidance Bug Fixes

Signed-off-by: Steve Wise <[email protected]>
Cc: [email protected] # v3.15
---

 drivers/infiniband/hw/cxgb4/device.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb4/device.c 
b/drivers/infiniband/hw/cxgb4/device.c
index cbcb72d..7db82b2 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);

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to