diff mbox series

[for-rc,v2] RDMA/restrack: Track driver QP types in resource tracker

Message ID 20190730133720.62548-1-galpress@amazon.com (mailing list archive)
State Superseded
Headers show
Series [for-rc,v2] RDMA/restrack: Track driver QP types in resource tracker | expand

Commit Message

Gal Pressman July 30, 2019, 1:37 p.m. UTC
The check for QP type different than XRC has wrongly excluded driver QP
types from the resource tracker.
As a result, "rdma resource show" user command would not show opened
driver QPs which does not reflect the real state of the system.

Check QP type explicitly instead of improperly assuming enum
values/ordering.

Fixes: 78a0cd648a80 ("RDMA/core: Add resource tracking for create and destroy QPs")
Signed-off-by: Gal Pressman <galpress@amazon.com>
---
v2:
* Improve commit message
---
 drivers/infiniband/core/core_priv.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Leon Romanovsky July 30, 2019, 3:22 p.m. UTC | #1
On Tue, Jul 30, 2019 at 04:37:20PM +0300, Gal Pressman wrote:
> The check for QP type different than XRC has wrongly excluded driver QP
> types from the resource tracker.
> As a result, "rdma resource show" user command would not show opened
> driver QPs which does not reflect the real state of the system.
>
> Check QP type explicitly instead of improperly assuming enum
> values/ordering.
>
> Fixes: 78a0cd648a80 ("RDMA/core: Add resource tracking for create and destroy QPs")
> Signed-off-by: Gal Pressman <galpress@amazon.com>
> ---
> v2:
> * Improve commit message

Please finish review of v0 and give enough time for reviewers to see
patch and post their notes before resending.

Thanks
Doug Ledford July 31, 2019, 3:36 p.m. UTC | #2
On Tue, 2019-07-30 at 18:22 +0300, Leon Romanovsky wrote:
> On Tue, Jul 30, 2019 at 04:37:20PM +0300, Gal Pressman wrote:
> > The check for QP type different than XRC has wrongly excluded driver
> > QP
> > types from the resource tracker.
> > As a result, "rdma resource show" user command would not show opened
> > driver QPs which does not reflect the real state of the system.
> > 
> > Check QP type explicitly instead of improperly assuming enum
> > values/ordering.
> > 
> > Fixes: 78a0cd648a80 ("RDMA/core: Add resource tracking for create
> > and destroy QPs")
> > Signed-off-by: Gal Pressman <galpress@amazon.com>
> > ---
> > v2:
> > * Improve commit message
> 
> Please finish review of v0 and give enough time for reviewers to see
> patch and post their notes before resending.

Gal, Leon was right in his comments to the v1 of this patch in terms of
the original code not being broken prior to the existence of driver qp
types.  This fix isn't needed until after the EFA driver is merged, and
the Fixes: tag is used in order for scripts to know if they need to take
a patch because they've already taken the patch prior.  So the Fixes tag
needs to be the EFA driver, not the original resource tracking commit,
as there is no issue unless the EFA driver is placed on top of the
original resource tracking commit.  Please resubmit with a proper commit
message and fixes tag.
Gal Pressman July 31, 2019, 4:09 p.m. UTC | #3
On 31/07/2019 18:36, Doug Ledford wrote:
> On Tue, 2019-07-30 at 18:22 +0300, Leon Romanovsky wrote:
>> On Tue, Jul 30, 2019 at 04:37:20PM +0300, Gal Pressman wrote:
>>> The check for QP type different than XRC has wrongly excluded driver
>>> QP
>>> types from the resource tracker.
>>> As a result, "rdma resource show" user command would not show opened
>>> driver QPs which does not reflect the real state of the system.
>>>
>>> Check QP type explicitly instead of improperly assuming enum
>>> values/ordering.
>>>
>>> Fixes: 78a0cd648a80 ("RDMA/core: Add resource tracking for create
>>> and destroy QPs")
>>> Signed-off-by: Gal Pressman <galpress@amazon.com>
>>> ---
>>> v2:
>>> * Improve commit message
>>
>> Please finish review of v0 and give enough time for reviewers to see
>> patch and post their notes before resending.
> 
> Gal, Leon was right in his comments to the v1 of this patch in terms of
> the original code not being broken prior to the existence of driver qp
> types.

Driver QP types existed before EFA was merged, and they existed when the
restrack commit was merged. So if driver QP types should be counted the restrack
commit is the one that "broke" it, not EFA.
If driver QP types were introduced in commit X, where X comes after the restrack
commit then it makes sense to target the Fixes line to commit X, but this is not
the case here.

Anyway, I'll change it to EFA as requested.

> This fix isn't needed until after the EFA driver is merged, and
> the Fixes: tag is used in order for scripts to know if they need to take
> a patch because they've already taken the patch prior.  So the Fixes tag
> needs to be the EFA driver, not the original resource tracking commit,
> as there is no issue unless the EFA driver is placed on top of the
> original resource tracking commit.  Please resubmit with a proper commit
> message and fixes tag.

Thanks, As Leon mentioned I posted v2 before v1 discussion was finished. I'll
resubmit.
diff mbox series

Patch

diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h
index 589ed805e0ad..3a8b0911c3bc 100644
--- a/drivers/infiniband/core/core_priv.h
+++ b/drivers/infiniband/core/core_priv.h
@@ -321,7 +321,9 @@  static inline struct ib_qp *_ib_create_qp(struct ib_device *dev,
 					  struct ib_udata *udata,
 					  struct ib_uobject *uobj)
 {
+	enum ib_qp_type qp_type = attr->qp_type;
 	struct ib_qp *qp;
+	bool is_xrc;
 
 	if (!dev->ops.create_qp)
 		return ERR_PTR(-EOPNOTSUPP);
@@ -339,7 +341,8 @@  static inline struct ib_qp *_ib_create_qp(struct ib_device *dev,
 	 * and more importantly they are created internaly by driver,
 	 * see mlx5 create_dev_resources() as an example.
 	 */
-	if (attr->qp_type < IB_QPT_XRC_INI) {
+	is_xrc = qp_type == IB_QPT_XRC_INI || qp_type == IB_QPT_XRC_TGT;
+	if ((qp_type < IB_QPT_MAX && !is_xrc) || qp_type == IB_QPT_DRIVER) {
 		qp->res.type = RDMA_RESTRACK_QP;
 		if (uobj)
 			rdma_restrack_uadd(&qp->res);