From: "Allen Hubbe" <Allen.Hubbe@dell.com>
To: "'Logan Gunthorpe'" <logang@deltatee.com>,
<linux-ntb@googlegroups.com>, <linux-pci@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Cc: "'Jon Mason'" <jdmason@kudzu.us>,
"'Dave Jiang'" <dave.jiang@intel.com>,
"'Bjorn Helgaas'" <bhelgaas@google.com>,
"'Greg Kroah-Hartman'" <gregkh@linuxfoundation.org>,
"'Kurt Schwemmer'" <kurt.schwemmer@microsemi.com>,
"'Stephen Bates'" <sbates@raithlin.com>,
"'Serge Semin'" <fancer.lancer@gmail.com>,
<Sergey.Semin@t-platforms.ru>
Subject: RE: [RFC PATCH 00/13] Switchtec NTB Support
Date: Fri, 16 Jun 2017 14:08:52 -0400 [thread overview]
Message-ID: <000201d2e6cb$9f4f4e50$ddedeaf0$@dell.com> (raw)
In-Reply-To: <6c2b819d-d000-38e2-29ee-d532f92909d2@deltatee.com>
From: Logan Gunthorpe
> On 16/06/17 09:34 AM, Allen Hubbe wrote:
> > In code review, I really only have found minor nits. Overall, the =
driver looks good.
>=20
> Great, thanks for such a quick review!
>=20
> > In switchtec_ntb_part_op, there is a delay of up to 50s (1000 * =
50ms). This looks like a thread
> context, so it could involve the scheduler for the delay instead of =
spinning for up to 50s before
> bailing.
>=20
> Good point. If I were to change this to msleep_interruptible would =
that
> be acceptable?
I would be satisfied.
>=20
> > There are a few instances like this:
> >> + dev_dbg(&stdev->dev, "%s\n", __func__);
>=20
> > Where the printing of __func__ could be controlled by dyndbg=3D+pf. =
The debug message could be more
> useful.
>=20
> Ok, I'll change that.
>=20
> > In switchtec_ntb_db_set_mask and friends, an in-memory copy of the =
mask bits is protected by a
> spinlock. Elsewhere, you noted that the db bits are shared between =
all ports, so the db bitset is
> chopped up to be shared between the ports. Is the db mask also =
shared, and how is the spinlock
> sufficient for synchronizing access to the mask bits between multiple =
ports?
>=20
> Well, there are 64 doorbells that are shared between ports but each =
port
> has it's own in and out registers for the doorbells. So triggering
> doorbell one on one port's ODB actually triggers it on every ports =
IDB.
> So these are shared only in the sense that each port needs to know =
which
> dbs it cares about. Seeing each port has their own registers they =
don't
> have to worry about synchronization.
>=20
> The mask is only protected by a spin lock seeing multiple callers of
> db_set_mask and db_clr_mask on the same port may step on each others
> toes. So if two processes try to mask different bits they both must =
get
> masked in the end and therefore some kind of synchronization must be
> involved.
Thanks for clearing that up. Now I understand, each port has its own =
independent set of mask bits. So, while the doorbell numbers are =
assigned globally, the registers themselves are per port. For the mask =
bits, the mask behavior only affects the local port.
>=20
> > The IDT switch also does not have hardware scratchpads. Could the =
code you wrote for emulated
> scratchpads be made into shared library code for ntb drivers? Also, =
some ntb clients may not need
> scratchpad support. If it is not natively supported by a driver, can =
the emulated scratchpad support
> be an optional feature?
>=20
> Hmm, interesting idea. A few pieces could possibly be made common but =
it
> depends mostly on hardware having the resources to make use of it.
> Switchtec has extra LUT memory windows that made this possible. Unless
> you object I'm inclined to leave it as is and I'd be happy to work =
with
> the IDT folks to create a common solution in the future.
Alright. I'll leave it to you to find and reconcile common =
functionalities of the drivers. What about making spad emulation =
optional?
>=20
> Logan
There was a comment on irc.oftc.net #ntb wishing for patch v2 to be =
fewer patches. Something like, 1/2: prep the existing switch driver, =
2/2: introduce the ntb driver.
next prev parent reply other threads:[~2017-06-16 18:09 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-15 20:37 [RFC PATCH 00/13] Switchtec NTB Support Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 01/13] switchtec: move structure definitions into a common header Logan Gunthorpe
2017-06-17 5:11 ` Greg Kroah-Hartman
2017-06-15 20:37 ` [RFC PATCH 02/13] switchtec: export class symbol for use in upper layer driver Logan Gunthorpe
2017-06-17 5:11 ` Greg Kroah-Hartman
2017-06-17 16:16 ` Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 03/13] switchtec: add ntb hardware register definitions Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 04/13] switchtec: add link event notifier block Logan Gunthorpe
2017-06-17 5:14 ` Greg Kroah-Hartman
2017-06-17 16:20 ` Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 05/13] switchtec_ntb: introduce initial ntb driver Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 06/13] switchtec_ntb: initialize hardware for memory windows Logan Gunthorpe
2017-06-17 5:16 ` Greg Kroah-Hartman
2017-06-17 16:39 ` Logan Gunthorpe
2017-06-18 0:33 ` Greg Kroah-Hartman
2017-06-15 20:37 ` [RFC PATCH 07/13] switchtec_ntb: initialize hardware for doorbells and messages Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 08/13] switchtec_ntb: add skeleton ntb driver Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 09/13] switchtec_ntb: add link management Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 10/13] switchtec_ntb: implement doorbell registers Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 11/13] switchtec_ntb: implement scratchpad registers Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 12/13] switchtec_ntb: add memory window support Logan Gunthorpe
2017-06-15 20:37 ` [RFC PATCH 13/13] switchtec_ntb: update switchtec documentation with notes for ntb Logan Gunthorpe
2017-06-16 13:53 ` [RFC PATCH 00/13] Switchtec NTB Support Allen Hubbe
2017-06-16 14:09 ` Logan Gunthorpe
2017-06-16 15:34 ` Allen Hubbe
2017-06-16 16:47 ` Logan Gunthorpe
2017-06-16 17:39 ` Serge Semin
2017-06-16 18:08 ` Allen Hubbe [this message]
2017-06-16 19:17 ` Logan Gunthorpe
2017-06-16 16:33 ` Serge Semin
2017-06-16 17:08 ` Logan Gunthorpe
2017-06-16 18:38 ` Serge Semin
2017-06-16 19:34 ` Logan Gunthorpe
2017-06-16 20:21 ` Serge Semin
2017-06-17 5:09 ` 'Greg Kroah-Hartman'
2017-06-17 16:11 ` Logan Gunthorpe
2017-06-17 16:15 ` Logan Gunthorpe
2017-06-19 19:14 ` Jon Mason
2017-06-19 20:07 ` Jon Mason
2017-06-19 20:27 ` Logan Gunthorpe
2017-06-19 21:09 ` Jon Mason
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='000201d2e6cb$9f4f4e50$ddedeaf0$@dell.com' \
--to=allen.hubbe@dell.com \
--cc=Sergey.Semin@t-platforms.ru \
--cc=bhelgaas@google.com \
--cc=dave.jiang@intel.com \
--cc=fancer.lancer@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=jdmason@kudzu.us \
--cc=kurt.schwemmer@microsemi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-ntb@googlegroups.com \
--cc=linux-pci@vger.kernel.org \
--cc=logang@deltatee.com \
--cc=sbates@raithlin.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).