All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker
@ 2019-07-30 13:37 Gal Pressman
  2019-07-30 15:22 ` Leon Romanovsky
  0 siblings, 1 reply; 4+ messages in thread
From: Gal Pressman @ 2019-07-30 13:37 UTC (permalink / raw)
  To: Jason Gunthorpe, Doug Ledford, Leon Romanovsky; +Cc: linux-rdma, Gal Pressman

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(-)

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);
-- 
2.22.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker
  2019-07-30 13:37 [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker Gal Pressman
@ 2019-07-30 15:22 ` Leon Romanovsky
  2019-07-31 15:36   ` Doug Ledford
  0 siblings, 1 reply; 4+ messages in thread
From: Leon Romanovsky @ 2019-07-30 15:22 UTC (permalink / raw)
  To: Gal Pressman; +Cc: Jason Gunthorpe, Doug Ledford, linux-rdma

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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker
  2019-07-30 15:22 ` Leon Romanovsky
@ 2019-07-31 15:36   ` Doug Ledford
  2019-07-31 16:09     ` Gal Pressman
  0 siblings, 1 reply; 4+ messages in thread
From: Doug Ledford @ 2019-07-31 15:36 UTC (permalink / raw)
  To: Leon Romanovsky, Gal Pressman; +Cc: Jason Gunthorpe, linux-rdma

[-- Attachment #1: Type: text/plain, Size: 1560 bytes --]

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.

-- 
Doug Ledford <dledford@redhat.com>
    GPG KeyID: B826A3330E572FDD
    Fingerprint = AE6B 1BDA 122B 23B4 265B  1274 B826 A333 0E57 2FDD

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker
  2019-07-31 15:36   ` Doug Ledford
@ 2019-07-31 16:09     ` Gal Pressman
  0 siblings, 0 replies; 4+ messages in thread
From: Gal Pressman @ 2019-07-31 16:09 UTC (permalink / raw)
  To: Doug Ledford, Leon Romanovsky; +Cc: Jason Gunthorpe, linux-rdma

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.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-07-31 16:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-30 13:37 [PATCH for-rc v2] RDMA/restrack: Track driver QP types in resource tracker Gal Pressman
2019-07-30 15:22 ` Leon Romanovsky
2019-07-31 15:36   ` Doug Ledford
2019-07-31 16:09     ` Gal Pressman

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.