LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: jackm <jackm@dev.mellanox.co.il>
To: "Håkon Bugge" <haakon.bugge@oracle.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>,
	Doug Ledford <dledford@redhat.com>,
	Don Hiatt <don.hiatt@intel.com>,
	Dasaratharaman Chandramouli
	<dasaratharaman.chandramouli@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Sean Hefty <sean.hefty@intel.com>,
	OFED mailing list <linux-rdma@vger.kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] IB/core: Make ib_mad_client_id atomic
Date: Mon, 23 Apr 2018 22:16:18 +0300	[thread overview]
Message-ID: <20180423221618.0000795d@dev.mellanox.co.il> (raw)
In-Reply-To: <50E3FE4A-2C6E-4493-92E1-383C349FAE3A@oracle.com>

On Mon, 23 Apr 2018 16:19:57 +0200
Håkon Bugge <haakon.bugge@oracle.com> wrote:


> > 
> > This actually looks like a genuine bug, why is it described only as
> > 'confusing'? ib_register_mad_agent is callable from userspace, so at
> > least two userspace agents can race and get the same TID’s.  
> 
> My understanding is that every lookup is using the {port, TID} tuple.
> As such, it is not a bug, but, very confusing.
Haakon, you are correct (see snippet from the IB spec, below).

We will NOT have a situation where there are 2 threads/apps
with the same agent ID on the *same port* (accessing the agent ID
allocator is protected by a per-port spinlock). Having the same agent ID
on DIFFERENT ports is OK.
Thus, there is NO bug here. (But as Haakon says, IMHO it is more robust
to avoid having the same agent ID for 2 agents even if those agents are
on different ports).

> 
> > TIDs need to be globally unique on the entire machine.  
> 
Jason, that is not exactly correct.

>From the IB Spec 1.3, C13-18.1.1 (in section 13.4.6.4 - TransactionID
usage):
"When initiating a new operation, MADHeader:TransactionID
shall be set to such a value that within that MAD the combination of
TID, SGID, and MgmtClass is different from that of any other currently
executing operation. If the MAD does not have a GRH, its SLID is used
in the combination in place of an SGID."

Since the SGID/SLID is different for each port, the per-port guarantee
of no 2 agents receiving the same agent-ID value is sufficient.

-Jack

  reply	other threads:[~2018-04-23 19:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-18 14:24 Håkon Bugge
2018-04-18 18:51 ` Weiny, Ira
2018-04-19  2:59 ` Yanjun Zhu
2018-04-20  3:55 ` Doug Ledford
2018-04-20 15:34   ` Jason Gunthorpe
2018-04-23 14:19     ` Håkon Bugge
2018-04-23 19:16       ` jackm [this message]
2018-04-26 16:06         ` Håkon Bugge
2018-04-26 18:32           ` jackm
     [not found]             ` <9fdd3ec4-ee91-5442-e753-25d2ecd27ea9@xsintricity.com>
     [not found]               ` <A58D5192-06E7-46A3-869C-273E9A2BC128@oracle.com>
2018-04-27 19:08                 ` Doug Ledford
2018-04-30 11:50                   ` Håkon Bugge
2018-04-30 14:49         ` Jason Gunthorpe
2018-04-30 17:10           ` Doug Ledford
2018-04-30 17:49             ` Weiny, Ira
2018-04-30 23:01             ` Jason Gunthorpe
2018-05-01  4:38             ` jackm
2018-05-01  6:40               ` Håkon Bugge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180423221618.0000795d@dev.mellanox.co.il \
    --to=jackm@dev.mellanox.co.il \
    --cc=dasaratharaman.chandramouli@intel.com \
    --cc=dledford@redhat.com \
    --cc=don.hiatt@intel.com \
    --cc=haakon.bugge@oracle.com \
    --cc=ira.weiny@intel.com \
    --cc=jgg@ziepe.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=sean.hefty@intel.com \
    --subject='Re: [PATCH] IB/core: Make ib_mad_client_id atomic' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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