* [PATCH for-4.5-rc 0/4] ocrdma bug fixes
@ 2016-02-05 14:36 Selvin Xavier
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Selvin Xavier @ 2016-02-05 14:36 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, Selvin Xavier
This patch series contains some of the bug fixes for ocrdma driver.
Selvin Xavier (4):
RDMA/ocrdma: Initialize stats resources in the driver before ib device
registration.
RDMA/ocrdma: populate max_sge_rd in device attributes
RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion
RDMA/ocrdma: Fixing ocrdma debugfs directory remove
drivers/infiniband/hw/ocrdma/ocrdma_main.c | 6 ++++++
drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 16 +++++-----------
drivers/infiniband/hw/ocrdma/ocrdma_stats.h | 2 ++
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 7 +++----
4 files changed, 16 insertions(+), 15 deletions(-)
--
2.2.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH for-4.5-rc 1/4] RDMA/ocrdma: Initialize stats resources in the driver before ib device registration.
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
@ 2016-02-05 14:36 ` Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 2/4] RDMA/ocrdma: populate max_sge_rd in device attributes Selvin Xavier
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Selvin Xavier @ 2016-02-05 14:36 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, Selvin Xavier
In the latest kernel, process_mad hook of the driver can be invoked as
soon as device is registered. In this hook, ocrdma driver is issuing a
command to get the stats counters from the HW. This is triggering system
crash since the statistics command resources are not allocated by the driver.
Changing the sequence of initialization to avoid this crash.
Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
---
drivers/infiniband/hw/ocrdma/ocrdma_main.c | 6 ++++++
drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 14 ++++----------
drivers/infiniband/hw/ocrdma/ocrdma_stats.h | 2 ++
3 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_main.c b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
index 5738493..f387430 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_main.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_main.c
@@ -228,6 +228,11 @@ static int ocrdma_alloc_resources(struct ocrdma_dev *dev)
ocrdma_alloc_pd_pool(dev);
+ if (!ocrdma_alloc_stats_resources(dev)) {
+ pr_err("%s: stats resource allocation failed\n", __func__);
+ goto alloc_err;
+ }
+
spin_lock_init(&dev->av_tbl.lock);
spin_lock_init(&dev->flush_q_lock);
return 0;
@@ -238,6 +243,7 @@ alloc_err:
static void ocrdma_free_resources(struct ocrdma_dev *dev)
{
+ ocrdma_release_stats_resources(dev);
kfree(dev->stag_arr);
kfree(dev->qp_tbl);
kfree(dev->cq_tbl);
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
index 86c303a..fc02e86 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
@@ -64,10 +64,11 @@ static int ocrdma_add_stat(char *start, char *pcur,
return cpy_len;
}
-static bool ocrdma_alloc_stats_mem(struct ocrdma_dev *dev)
+bool ocrdma_alloc_stats_resources(struct ocrdma_dev *dev)
{
struct stats_mem *mem = &dev->stats_mem;
+ mutex_init(&dev->stats_lock);
/* Alloc mbox command mem*/
mem->size = max_t(u32, sizeof(struct ocrdma_rdma_stats_req),
sizeof(struct ocrdma_rdma_stats_resp));
@@ -91,13 +92,14 @@ static bool ocrdma_alloc_stats_mem(struct ocrdma_dev *dev)
return true;
}
-static void ocrdma_release_stats_mem(struct ocrdma_dev *dev)
+void ocrdma_release_stats_resources(struct ocrdma_dev *dev)
{
struct stats_mem *mem = &dev->stats_mem;
if (mem->va)
dma_free_coherent(&dev->nic_info.pdev->dev, mem->size,
mem->va, mem->pa);
+ mem->va = NULL;
kfree(mem->debugfs_mem);
}
@@ -838,15 +840,9 @@ void ocrdma_add_port_stats(struct ocrdma_dev *dev)
&dev->reset_stats, &ocrdma_dbg_ops))
goto err;
- /* Now create dma_mem for stats mbx command */
- if (!ocrdma_alloc_stats_mem(dev))
- goto err;
-
- mutex_init(&dev->stats_lock);
return;
err:
- ocrdma_release_stats_mem(dev);
debugfs_remove_recursive(dev->dir);
dev->dir = NULL;
}
@@ -856,8 +852,6 @@ void ocrdma_rem_port_stats(struct ocrdma_dev *dev)
if (!dev->dir)
return;
debugfs_remove(dev->dir);
- mutex_destroy(&dev->stats_lock);
- ocrdma_release_stats_mem(dev);
}
void ocrdma_init_debugfs(void)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.h b/drivers/infiniband/hw/ocrdma/ocrdma_stats.h
index c9e58d0..bba1fec 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.h
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.h
@@ -65,6 +65,8 @@ enum OCRDMA_STATS_TYPE {
void ocrdma_rem_debugfs(void);
void ocrdma_init_debugfs(void);
+bool ocrdma_alloc_stats_resources(struct ocrdma_dev *dev);
+void ocrdma_release_stats_resources(struct ocrdma_dev *dev);
void ocrdma_rem_port_stats(struct ocrdma_dev *dev);
void ocrdma_add_port_stats(struct ocrdma_dev *dev);
int ocrdma_pma_counters(struct ocrdma_dev *dev,
--
2.2.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH for-4.5-rc 2/4] RDMA/ocrdma: populate max_sge_rd in device attributes
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2016-02-05 14:36 ` [PATCH for-4.5-rc 1/4] RDMA/ocrdma: Initialize stats resources in the driver before ib device registration Selvin Xavier
@ 2016-02-05 14:36 ` Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 3/4] RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion Selvin Xavier
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Selvin Xavier @ 2016-02-05 14:36 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, Selvin Xavier
max_sge_rd is used by some of the ULPs to calculate the maximum
number of SGEs that can be used for RDMA READ. Populating this
value in the response of query_device verb. Also, avoid checking
the max_srq_sge while populating max_sge.
Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
---
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index d4c687b..7cf1324 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -125,8 +125,8 @@ int ocrdma_query_device(struct ib_device *ibdev, struct ib_device_attr *attr,
IB_DEVICE_SYS_IMAGE_GUID |
IB_DEVICE_LOCAL_DMA_LKEY |
IB_DEVICE_MEM_MGT_EXTENSIONS;
- attr->max_sge = min(dev->attr.max_send_sge, dev->attr.max_srq_sge);
- attr->max_sge_rd = 0;
+ attr->max_sge = dev->attr.max_send_sge;
+ attr->max_sge_rd = attr->max_sge;
attr->max_cq = dev->attr.max_cq;
attr->max_cqe = dev->attr.max_cqe;
attr->max_mr = dev->attr.max_mr;
--
2.2.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH for-4.5-rc 3/4] RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2016-02-05 14:36 ` [PATCH for-4.5-rc 1/4] RDMA/ocrdma: Initialize stats resources in the driver before ib device registration Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 2/4] RDMA/ocrdma: populate max_sge_rd in device attributes Selvin Xavier
@ 2016-02-05 14:36 ` Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 4/4] RDMA/ocrdma: Fixing ocrdma debugfs directory remove Selvin Xavier
2016-02-05 20:12 ` [PATCH for-4.5-rc 0/4] ocrdma bug fixes Doug Ledford
4 siblings, 0 replies; 6+ messages in thread
From: Selvin Xavier @ 2016-02-05 14:36 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, Selvin Xavier
Currently returning the pkey value instead of pkey index.
pkey index is always zero since ocrdma supports only default
pkey.
Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
---
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index 7cf1324..37620b4 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -2726,8 +2726,7 @@ static int ocrdma_update_ud_rcqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe)
OCRDMA_CQE_UD_STATUS_MASK) >> OCRDMA_CQE_UD_STATUS_SHIFT;
ibwc->src_qp = le32_to_cpu(cqe->flags_status_srcqpn) &
OCRDMA_CQE_SRCQP_MASK;
- ibwc->pkey_index = le32_to_cpu(cqe->ud.rxlen_pkey) &
- OCRDMA_CQE_PKEY_MASK;
+ ibwc->pkey_index = 0;
ibwc->wc_flags = IB_WC_GRH;
ibwc->byte_len = (le32_to_cpu(cqe->ud.rxlen_pkey) >>
OCRDMA_CQE_UD_XFER_LEN_SHIFT);
--
2.2.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH for-4.5-rc 4/4] RDMA/ocrdma: Fixing ocrdma debugfs directory remove
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
` (2 preceding siblings ...)
2016-02-05 14:36 ` [PATCH for-4.5-rc 3/4] RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion Selvin Xavier
@ 2016-02-05 14:36 ` Selvin Xavier
2016-02-05 20:12 ` [PATCH for-4.5-rc 0/4] ocrdma bug fixes Doug Ledford
4 siblings, 0 replies; 6+ messages in thread
From: Selvin Xavier @ 2016-02-05 14:36 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
Cc: dledford-H+wXaHxf7aLQT0dZR+AlfA, Selvin Xavier
During the ocrdma device remove sequence, the debugfs directory
tree of each ocrdma device needs to be removed. Use
debugfs_remove_recursive instead of debugfs_remove.
Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
---
drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
index fc02e86..255f774 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_stats.c
@@ -851,7 +851,7 @@ void ocrdma_rem_port_stats(struct ocrdma_dev *dev)
{
if (!dev->dir)
return;
- debugfs_remove(dev->dir);
+ debugfs_remove_recursive(dev->dir);
}
void ocrdma_init_debugfs(void)
--
2.2.0
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH for-4.5-rc 0/4] ocrdma bug fixes
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
` (3 preceding siblings ...)
2016-02-05 14:36 ` [PATCH for-4.5-rc 4/4] RDMA/ocrdma: Fixing ocrdma debugfs directory remove Selvin Xavier
@ 2016-02-05 20:12 ` Doug Ledford
4 siblings, 0 replies; 6+ messages in thread
From: Doug Ledford @ 2016-02-05 20:12 UTC (permalink / raw)
To: Selvin Xavier, linux-rdma-u79uwXL29TY76Z2rM5mHXA
[-- Attachment #1: Type: text/plain, Size: 1042 bytes --]
On 02/05/2016 09:36 AM, Selvin Xavier wrote:
> This patch series contains some of the bug fixes for ocrdma driver.
>
> Selvin Xavier (4):
> RDMA/ocrdma: Initialize stats resources in the driver before ib device
> registration.
> RDMA/ocrdma: populate max_sge_rd in device attributes
> RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion
> RDMA/ocrdma: Fixing ocrdma debugfs directory remove
>
> drivers/infiniband/hw/ocrdma/ocrdma_main.c | 6 ++++++
> drivers/infiniband/hw/ocrdma/ocrdma_stats.c | 16 +++++-----------
> drivers/infiniband/hw/ocrdma/ocrdma_stats.h | 2 ++
> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 7 +++----
> 4 files changed, 16 insertions(+), 15 deletions(-)
>
I was just about to post a crash report for ocrdma in 4.5-rc2 + my
queued fixes. I'll pull these and see if the crash is gone (the first
patch looks a good candidate to fix the crash).
--
Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
GPG KeyID: 0E572FDD
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 884 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-02-05 20:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-05 14:36 [PATCH for-4.5-rc 0/4] ocrdma bug fixes Selvin Xavier
[not found] ` <1454683001-21275-1-git-send-email-selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
2016-02-05 14:36 ` [PATCH for-4.5-rc 1/4] RDMA/ocrdma: Initialize stats resources in the driver before ib device registration Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 2/4] RDMA/ocrdma: populate max_sge_rd in device attributes Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 3/4] RDMA/ocrdma: Fix pkey_index returned by driver in rq work completion Selvin Xavier
2016-02-05 14:36 ` [PATCH for-4.5-rc 4/4] RDMA/ocrdma: Fixing ocrdma debugfs directory remove Selvin Xavier
2016-02-05 20:12 ` [PATCH for-4.5-rc 0/4] ocrdma bug fixes Doug Ledford
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).