All of lore.kernel.org
 help / color / mirror / Atom feed
From: Logan Gunthorpe <logang@deltatee.com>
To: Allen Hubbe <Allen.Hubbe@dell.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 10:47:21 -0600	[thread overview]
Message-ID: <6c2b819d-d000-38e2-29ee-d532f92909d2@deltatee.com> (raw)
In-Reply-To: <000101d2e6b6$0fcc2880$2f647980$@dell.com>



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.

Great, thanks for such a quick review!

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

Good point. If I were to change this to msleep_interruptible would that
be acceptable?

> There are a few instances like this:
>> +	dev_dbg(&stdev->dev, "%s\n", __func__);

> Where the printing of __func__ could be controlled by dyndbg=+pf.  The debug message could be more useful.

Ok, I'll change that.

> 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?

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.

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.

> 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?

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.

Logan

  reply	other threads:[~2017-06-16 16:47 UTC|newest]

Thread overview: 72+ 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 13:53   ` Allen Hubbe
2017-06-16 13:53   ` Allen Hubbe
2017-06-16 14:09   ` Logan Gunthorpe
2017-06-16 15:34     ` Allen Hubbe
2017-06-16 15:34       ` Allen Hubbe
2017-06-16 15:34       ` Allen Hubbe
2017-06-16 16:47       ` Logan Gunthorpe [this message]
2017-06-16 17:39         ` Serge Semin
2017-06-16 18:08         ` Allen Hubbe
2017-06-16 18:08           ` Allen Hubbe
2017-06-16 18:08           ` Allen Hubbe
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 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
2017-06-22 16:17   ` New NTB API Issue Logan Gunthorpe
2017-06-22 18:32     ` Allen Hubbe
2017-06-22 18:32       ` Allen Hubbe
2017-06-22 18:40       ` Logan Gunthorpe
2017-06-22 22:12         ` Allen Hubbe
2017-06-22 22:12           ` Allen Hubbe
2017-06-22 22:19           ` Logan Gunthorpe
2017-06-22 22:42             ` Allen Hubbe
2017-06-22 22:42               ` Allen Hubbe
2017-06-22 22:49               ` Logan Gunthorpe
2017-06-23 13:18                 ` Allen Hubbe
2017-06-23 13:18                   ` Allen Hubbe
2017-06-23 16:51                   ` Logan Gunthorpe
2017-06-23 19:07                     ` Allen Hubbe
2017-06-23 19:07                       ` Allen Hubbe
2017-06-23 20:39                       ` Logan Gunthorpe
2017-06-23 22:06                         ` Allen Hubbe
2017-06-23 22:06                           ` Allen Hubbe
2017-06-23 23:06                           ` Logan Gunthorpe
2017-06-23 21:47                       ` Serge Semin
2017-06-23 21:47                         ` Serge Semin
2017-06-23 21:59                         ` Logan Gunthorpe
2017-06-23 22:01                           ` Allen Hubbe
2017-06-23 22:01                             ` Allen Hubbe

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=6c2b819d-d000-38e2-29ee-d532f92909d2@deltatee.com \
    --to=logang@deltatee.com \
    --cc=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=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 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.