* [PATCH 0/2] Expose max_sge_rd correctly
@ 2015-10-27 9:40 Sagi Grimberg
2015-10-27 9:40 ` [PATCH 1/2] mlx4: Expose correct max_sge_rd limit Sagi Grimberg
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Sagi Grimberg @ 2015-10-27 9:40 UTC (permalink / raw)
To: linux-rdma, target-devel
Cc: Steve Wise, Nicholas A. Bellinger, Or Gerlitz, Doug Ledford
This addresses a specific mlx4 issue where the max_sge_rd
is actually smaller than max_sge (rdma reads with max_sge
entries completes with error).
The second patch removes the explicit work-around from the
iser target code.
This applies on top of Christoph's device attributes modification.
Sagi Grimberg (2):
mlx4: Expose correct max_sge_rd limit
iser-target: Remove explicit mlx4 work-around
drivers/infiniband/hw/mlx4/main.c | 3 ++-
drivers/infiniband/ulp/isert/ib_isert.c | 10 ++--------
2 files changed, 4 insertions(+), 9 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [PATCH 1/2] mlx4: Expose correct max_sge_rd limit
2015-10-27 9:40 [PATCH 0/2] Expose max_sge_rd correctly Sagi Grimberg
@ 2015-10-27 9:40 ` Sagi Grimberg
[not found] ` <1445938846-9240-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-10-27 16:24 ` Bart Van Assche
2015-10-27 9:40 ` [PATCH 2/2] iser-target: Remove explicit mlx4 work-around Sagi Grimberg
[not found] ` <1445938846-9240-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2 siblings, 2 replies; 11+ messages in thread
From: Sagi Grimberg @ 2015-10-27 9:40 UTC (permalink / raw)
To: linux-rdma, target-devel
Cc: Steve Wise, Nicholas A. Bellinger, Or Gerlitz, Doug Ledford
mlx4 devices (ConnectX-2, ConnectX-3) can not issue
max_sge in a single RDMA_READ request (resulting in
a completion error). Thus, expose lower max_sge_rd
to avoid this issue.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
---
drivers/infiniband/hw/mlx4/main.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 3889723..46305dc 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -499,7 +499,8 @@ static int mlx4_ib_init_device_flags(struct ib_device *ibdev)
ibdev->max_qp_wr = dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE;
ibdev->max_sge = min(dev->dev->caps.max_sq_sg,
dev->dev->caps.max_rq_sg);
- ibdev->max_sge_rd = ibdev->max_sge;
+ /* reserve 2 sge slots for rdma reads */
+ ibdev->max_sge_rd = ibdev->max_sge - 2;
ibdev->max_cq = dev->dev->quotas.cq;
ibdev->max_cqe = dev->dev->caps.max_cqes;
ibdev->max_mr = dev->dev->quotas.mpt;
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread[parent not found: <1445938846-9240-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>]
* Re: [PATCH 1/2] mlx4: Expose correct max_sge_rd limit
[not found] ` <1445938846-9240-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2015-10-27 14:39 ` Or Gerlitz
2015-10-27 16:03 ` Sagi Grimberg
0 siblings, 1 reply; 11+ messages in thread
From: Or Gerlitz @ 2015-10-27 14:39 UTC (permalink / raw)
To: Sagi Grimberg, linux-rdma-u79uwXL29TY76Z2rM5mHXA,
target-devel-u79uwXL29TY76Z2rM5mHXA
Cc: Steve Wise, Nicholas A. Bellinger, Doug Ledford, Yishai Hadas
On 10/27/2015 11:40 AM, Sagi Grimberg wrote:
> mlx4 devices (ConnectX-2, ConnectX-3) can not issue
> max_sge in a single RDMA_READ request (resulting in
> a completion error). Thus, expose lower max_sge_rd
> to avoid this issue.
Sagi,
I can hear your pain when wearing the iser target driver maintainer hat.
Still, this patch is currently pure WA b/c we didn't do RCA (Root Cause
Analysis)
Lets wait for RCA (which might yield the same patch, BTW) and keep
suffering in LIO
Or.
>
> Signed-off-by: Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
> ---
> drivers/infiniband/hw/mlx4/main.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
> index 3889723..46305dc 100644
> --- a/drivers/infiniband/hw/mlx4/main.c
> +++ b/drivers/infiniband/hw/mlx4/main.c
> @@ -499,7 +499,8 @@ static int mlx4_ib_init_device_flags(struct ib_device *ibdev)
> ibdev->max_qp_wr = dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE;
> ibdev->max_sge = min(dev->dev->caps.max_sq_sg,
> dev->dev->caps.max_rq_sg);
> - ibdev->max_sge_rd = ibdev->max_sge;
> + /* reserve 2 sge slots for rdma reads */
> + ibdev->max_sge_rd = ibdev->max_sge - 2;
> ibdev->max_cq = dev->dev->quotas.cq;
> ibdev->max_cqe = dev->dev->caps.max_cqes;
> ibdev->max_mr = dev->dev->quotas.mpt;
--
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] 11+ messages in thread* Re: [PATCH 1/2] mlx4: Expose correct max_sge_rd limit
2015-10-27 14:39 ` Or Gerlitz
@ 2015-10-27 16:03 ` Sagi Grimberg
[not found] ` <562FA05F.4050805-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
0 siblings, 1 reply; 11+ messages in thread
From: Sagi Grimberg @ 2015-10-27 16:03 UTC (permalink / raw)
To: Or Gerlitz, Sagi Grimberg, linux-rdma, target-devel
Cc: Steve Wise, Nicholas A. Bellinger, Doug Ledford, Yishai Hadas
On 27/10/2015 16:39, Or Gerlitz wrote:
> On 10/27/2015 11:40 AM, Sagi Grimberg wrote:
>> mlx4 devices (ConnectX-2, ConnectX-3) can not issue
>> max_sge in a single RDMA_READ request (resulting in
>> a completion error). Thus, expose lower max_sge_rd
>> to avoid this issue.
>
> Sagi,
Hey Or,
> Still, this patch is currently pure WA b/c we didn't do RCA (Root Cause
> Analysis)
So from my discussions with the HW folks a RDMA_READ wqe cannot exceed
512B. The wqe control segment is 16 bytes, the rdma section is 12 bytes
(rkey + raddr) and each sge is 16 bytes so the computation is:
(512B-16B-12B)/16B = 30.
The reason is that the HW needs to fetch the rdma_read wqe on the RX
path (rdma_read response) and it has a limited buffer at that point.
Perhaps a dedicated #define for that is needed here.
I'll add that in the change log in v1.
Cheers,
Sagi.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/2] mlx4: Expose correct max_sge_rd limit
2015-10-27 9:40 ` [PATCH 1/2] mlx4: Expose correct max_sge_rd limit Sagi Grimberg
[not found] ` <1445938846-9240-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2015-10-27 16:24 ` Bart Van Assche
[not found] ` <562FA544.4040508-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
1 sibling, 1 reply; 11+ messages in thread
From: Bart Van Assche @ 2015-10-27 16:24 UTC (permalink / raw)
To: Sagi Grimberg, linux-rdma, target-devel
Cc: Steve Wise, Nicholas A. Bellinger, Or Gerlitz, Doug Ledford
On 10/27/2015 02:40 AM, Sagi Grimberg wrote:
> mlx4 devices (ConnectX-2, ConnectX-3) can not issue
> max_sge in a single RDMA_READ request (resulting in
> a completion error). Thus, expose lower max_sge_rd
> to avoid this issue.
>
> Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
> ---
> drivers/infiniband/hw/mlx4/main.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
> index 3889723..46305dc 100644
> --- a/drivers/infiniband/hw/mlx4/main.c
> +++ b/drivers/infiniband/hw/mlx4/main.c
> @@ -499,7 +499,8 @@ static int mlx4_ib_init_device_flags(struct ib_device *ibdev)
> ibdev->max_qp_wr = dev->dev->caps.max_wqes - MLX4_IB_SQ_MAX_SPARE;
> ibdev->max_sge = min(dev->dev->caps.max_sq_sg,
> dev->dev->caps.max_rq_sg);
> - ibdev->max_sge_rd = ibdev->max_sge;
> + /* reserve 2 sge slots for rdma reads */
> + ibdev->max_sge_rd = ibdev->max_sge - 2;
> ibdev->max_cq = dev->dev->quotas.cq;
> ibdev->max_cqe = dev->dev->caps.max_cqes;
> ibdev->max_mr = dev->dev->quotas.mpt;
Hello Sagi,
Is this the same issue as what has been discussed in
http://www.spinics.net/lists/linux-rdma/msg21799.html ?
Thanks,
Bart.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 2/2] iser-target: Remove explicit mlx4 work-around
2015-10-27 9:40 [PATCH 0/2] Expose max_sge_rd correctly Sagi Grimberg
2015-10-27 9:40 ` [PATCH 1/2] mlx4: Expose correct max_sge_rd limit Sagi Grimberg
@ 2015-10-27 9:40 ` Sagi Grimberg
[not found] ` <1445938846-9240-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2 siblings, 0 replies; 11+ messages in thread
From: Sagi Grimberg @ 2015-10-27 9:40 UTC (permalink / raw)
To: linux-rdma, target-devel
Cc: Steve Wise, Nicholas A. Bellinger, Or Gerlitz, Doug Ledford
The driver now exposes sufficient limits so we can
avoid having mlx4 specific work-around.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
---
drivers/infiniband/ulp/isert/ib_isert.c | 10 ++--------
1 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index 96336a9..303cea7 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -141,14 +141,8 @@ isert_create_qp(struct isert_conn *isert_conn,
attr.recv_cq = comp->cq;
attr.cap.max_send_wr = ISERT_QP_MAX_REQ_DTOS;
attr.cap.max_recv_wr = ISERT_QP_MAX_RECV_DTOS + 1;
- /*
- * FIXME: Use devattr.max_sge - 2 for max_send_sge as
- * work-around for RDMA_READs with ConnectX-2.
- *
- * Also, still make sure to have at least two SGEs for
- * outgoing control PDU responses.
- */
- attr.cap.max_send_sge = max(2, device->ib_device->max_sge - 2);
+ attr.cap.max_send_sge = min(device->ib_device->max_sge,
+ device->ib_device->max_sge_rd);
isert_conn->max_sge = attr.cap.max_send_sge;
attr.cap.max_recv_sge = 1;
--
1.7.1
^ permalink raw reply related [flat|nested] 11+ messages in thread[parent not found: <1445938846-9240-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>]
* RE: [PATCH 0/2] Expose max_sge_rd correctly
[not found] ` <1445938846-9240-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
@ 2015-10-27 14:26 ` Steve Wise
0 siblings, 0 replies; 11+ messages in thread
From: Steve Wise @ 2015-10-27 14:26 UTC (permalink / raw)
To: 'Sagi Grimberg', linux-rdma-u79uwXL29TY76Z2rM5mHXA,
target-devel-u79uwXL29TY76Z2rM5mHXA
Cc: 'Nicholas A. Bellinger', 'Or Gerlitz',
'Doug Ledford'
> -----Original Message-----
> From: Sagi Grimberg [mailto:sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org]
> Sent: Tuesday, October 27, 2015 4:41 AM
> To: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; target-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> Cc: Steve Wise; Nicholas A. Bellinger; Or Gerlitz; Doug Ledford
> Subject: [PATCH 0/2] Expose max_sge_rd correctly
>
> This addresses a specific mlx4 issue where the max_sge_rd
> is actually smaller than max_sge (rdma reads with max_sge
> entries completes with error).
>
> The second patch removes the explicit work-around from the
> iser target code.
>
> This applies on top of Christoph's device attributes modification.
>
Looks correct to me.
Series Reviewed-by: Steve Wise <swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
--
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] 11+ messages in thread
end of thread, other threads:[~2015-10-27 17:37 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-27 9:40 [PATCH 0/2] Expose max_sge_rd correctly Sagi Grimberg
2015-10-27 9:40 ` [PATCH 1/2] mlx4: Expose correct max_sge_rd limit Sagi Grimberg
[not found] ` <1445938846-9240-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-10-27 14:39 ` Or Gerlitz
2015-10-27 16:03 ` Sagi Grimberg
[not found] ` <562FA05F.4050805-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-10-27 16:12 ` Or Gerlitz
[not found] ` <562FA273.5090700-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-10-27 16:17 ` Sagi Grimberg
2015-10-27 16:24 ` Bart Van Assche
[not found] ` <562FA544.4040508-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-10-27 16:31 ` Sagi Grimberg
[not found] ` <562FA6E8.4040005-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-10-27 17:37 ` Eli Cohen
2015-10-27 9:40 ` [PATCH 2/2] iser-target: Remove explicit mlx4 work-around Sagi Grimberg
[not found] ` <1445938846-9240-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-10-27 14:26 ` [PATCH 0/2] Expose max_sge_rd correctly Steve Wise
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.