linux-rdma.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: "Hefty, Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "Dalessandro,
	Dennis"
	<dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"Weiny, Ira" <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org"
	<dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 0/7] IB/hfi1: Remove write() and use ioctl() for user access
Date: Thu, 14 Apr 2016 15:27:02 -0600	[thread overview]
Message-ID: <20160414212702.GA14137@obsidianresearch.com> (raw)
In-Reply-To: <1828884A29C6694DAF28B7E6B8A82373AB041C34-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>

On Thu, Apr 14, 2016 at 08:01:30PM +0000, Hefty, Sean wrote:
> Dropping to just linux-rdma list for a more details uABI discussion
> 
> > As for the 'one char device', I actually think it would be really
> > simple.
> > 
> > Add a new uverbs ioctl:
> > 
> >  int hfi1_fd = ioctl(uverbs_fd, RDMA_GET_DRIVER_OPS_FD, "psm2.intel.com");
> > 
> >  ioctl(hfi1_fd, HFI1_IOCTL_ASSIGN_CTXT, ...);
> >  write(hfi1_fd, ...);
> > 
> > At least that gives us far better options for discovery and versioning
> > of this stuff than a driver-specific char device.
> 
> I think it would help the discussion if the advantages/disadvantages
> of this approach were described over just opening a driver specific
> file.

This gives us a very easy way to associate a driver specific FD with
RDMA device in the kernel, using the common discovery/id/naming
scheme.

It lets drivers support multiple interfaces, so we get better ABI
control and an easier way to migrate ABIs (eg qib to hfi1). It even
handles this change hfi1/qib are about to do without requiring more
syfs files, just request the new name and fall back to the old name if
it fails.

It doesn't have the problem of what happens when *old* user space
opens the *new* cdev - eg that seems like it will blow up with the
proposed hfi1 patches.

We don't have to create a universe of unique char devices with all the
related complexity: that includes permissions, selinux, and
namespaces/containers. If you can access uverbs then you can access
the driver ops too. This uniform permission model is already
implemented by the large user space stack and distros.

A driver using this interface can retain a handle to the kernel side
of the uverbs (eg, it can access the idrs). This means the driver
interface can re-use objects created on the uverbs interface, eg a PD,
CQ, QP, etc, so it covers a far broader application space with code
re-use than an isolated cdev possibly can.

On the other hand, I can think of no benefit to a driver specific
/dev/ node. (this idea that 'psm' is somehow unrelated to the RDMA
subsystem, and deserving its own cdev is silly)

> Because trying to form an application interface that's the
> union of hardware interfaces seems problematic.  We _may_ be better
> thinking in terms if an Infiniband Core + iWarp Core + PSM Core
> (with appropriate code re-use between them), than viewing the entire
> world as RDMA Core.

We have at least tried to merge rocee/ib/iwarp into a common API based
upon their multi-vendor standards. That is what one calls the RDMA
core.

I have no personal problem with adding more well defined things to the
core, even if it doesn't strongly overlap the existing stuff.

However, that doesn't describe PSM. There is no PSM kernel uAPI
interface.  The existing things are very low level hardware specific
accelerator upcalls that seem to be used to cobble together the
'common' PSM interface in userspace. The only two pieces of hardware
to implement PSM do not even use the same kernel API, seemingly by
design.

Hardly something we can talk about as 'core'. This is the very
definition of driver specific.

So what is needed here is the best way we can design to access those
calls. I called it RDMA_GET_DRIVER_OPS_FD for a reason. *driver*
specific calls. Userspace has to sort out the mess, and the uAPI
driver specific facet naturally retires when the driver becomes
disused.

Maybe 'psm.intel.com' was a bad choice, but I wanted to be clear this
wasn't a dumping ground for any and all driver crap (like eeprom,
etc). Just the high speed focused API. Perhaps 'sdma.intel.com' or
something?

> I say may because I haven't thought through the details.  But from a
> high level, the IB core and PSM core appear to have basically no
> overlap.

They overlap in device discovery, access control, hot plug/unplug and
other boring core things. Just because the data motion is totally
different doesn't mean they benefit at all from being apart.

If someone wants to define a set of PSM APIs and propose them as
uverbs ioctls, then go for it.

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2016-04-14 21:27 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-14 15:41 [PATCH 0/7] IB/hfi1: Remove write() and use ioctl() for user access Dennis Dalessandro
     [not found] ` <20160414153727.6387.96381.stgit-9QXIwq+3FY+1XWohqUldA0EOCMrvLtNR@public.gmane.org>
2016-04-14 15:41   ` [PATCH 1/7] IB/hfi1: Export drivers user sw version via sysfs Dennis Dalessandro
2016-04-18 13:05     ` Christoph Hellwig
2016-04-14 15:41 ` [PATCH 2/7] IB/hfi1: Remove unused user command Dennis Dalessandro
2016-04-18 13:05   ` Christoph Hellwig
2016-04-14 15:41 ` [PATCH 3/7] IB/hfi1: Add ioctl() interface for user commands Dennis Dalessandro
2016-04-14 15:41 ` [PATCH 4/7] IB/hfi1: Remove write(), use ioctl() for user cmds Dennis Dalessandro
2016-04-14 15:42 ` [PATCH 5/7] IB/hfi1: Add trace message in user IOCTL handling Dennis Dalessandro
2016-04-14 15:42 ` [PATCH 6/7] IB/hfi1: Consolidate IOCTL defines Dennis Dalessandro
2016-04-14 15:42 ` [PATCH 7/7] IB/hfi1: Move eprom to its own device Dennis Dalessandro
2016-04-14 16:45 ` [PATCH 0/7] IB/hfi1: Remove write() and use ioctl() for user access Jason Gunthorpe
2016-04-14 17:48   ` Ira Weiny
     [not found]     ` <20160414174830.GA11641-no5AT4YuGWKtqXYlAKuG4QC/G2K4zDHf@public.gmane.org>
2016-04-14 18:05       ` Jason Gunthorpe
     [not found]         ` <20160414180540.GA12554-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-14 18:42           ` Dennis Dalessandro
     [not found]             ` <20160414184200.GA10416-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-14 18:56               ` Jason Gunthorpe
     [not found]                 ` <20160414185659.GB12997-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-14 20:01                   ` Hefty, Sean
     [not found]                     ` <1828884A29C6694DAF28B7E6B8A82373AB041C34-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-14 20:35                       ` Woodruff, Robert J
2016-04-14 21:27                       ` Jason Gunthorpe [this message]
     [not found]                         ` <20160414212702.GA14137-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-15  0:02                           ` Ira Weiny
     [not found]                             ` <20160415000242.GA18400-no5AT4YuGWKtqXYlAKuG4QC/G2K4zDHf@public.gmane.org>
2016-04-15  0:30                               ` Hefty, Sean
2016-04-15  4:41                               ` Jason Gunthorpe
     [not found]                                 ` <20160415044124.GA16805-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-15 17:30                                   ` Hefty, Sean
     [not found]                                     ` <1828884A29C6694DAF28B7E6B8A82373AB0422AE-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-15 18:18                                       ` Jason Gunthorpe
     [not found]                                         ` <20160415181811.GA22322-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-15 21:04                                           ` Hefty, Sean
     [not found]                                             ` <1828884A29C6694DAF28B7E6B8A82373AB042530-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-15 21:14                                               ` Leon Romanovsky
2016-04-15 22:03                                               ` Jason Gunthorpe
     [not found]                                                 ` <20160415220340.GB24204-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-16 16:22                                                   ` Ira Weiny
2016-04-18 17:55                                                     ` Jason Gunthorpe
     [not found]                                                       ` <20160418175559.GC13865-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-18 18:15                                                         ` Dennis Dalessandro
     [not found]                                                           ` <20160418181535.GB7596-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-18 18:24                                                             ` Jason Gunthorpe
     [not found]                                                               ` <20160418182453.GA14930-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-19  1:36                                                                 ` Dennis Dalessandro
     [not found]                                                                   ` <20160419013649.GA28612-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-19 17:35                                                                     ` Jason Gunthorpe
2016-04-14 21:08                   ` Hefty, Sean
     [not found]                     ` <1828884A29C6694DAF28B7E6B8A82373AB041C90-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-14 21:40                       ` Jason Gunthorpe
2016-04-15  4:01     ` Leon Romanovsky
2016-04-15 16:17       ` Ira Weiny
2016-04-15 17:30         ` Leon Romanovsky
2016-04-15 17:34           ` Christoph Hellwig
2016-04-15 17:44             ` Woodruff, Robert J
2016-04-15 21:03               ` Leon Romanovsky
     [not found]             ` <20160415173401.GA10868-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-04-15 17:46               ` Hefty, Sean
2016-04-15 21:23             ` Leon Romanovsky
     [not found]               ` <20160415212328.GF10689-2ukJVAZIZ/Y@public.gmane.org>
2016-04-15 23:28                 ` Ira Weiny
2016-04-16  6:09                   ` Leon Romanovsky
     [not found]                     ` <20160416060940.GB6349-2ukJVAZIZ/Y@public.gmane.org>
2016-04-16 15:29                       ` Dennis Dalessandro
2016-04-15 23:37               ` Jason Gunthorpe
2016-04-16  6:00                 ` Leon Romanovsky
2016-04-16 19:19                   ` Al Viro
     [not found]                     ` <20160416191917.GY25498-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
2016-04-18 12:00                       ` Dennis Dalessandro
2016-04-14 17:52   ` Dennis Dalessandro
     [not found]     ` <20160414175243.GA9310-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-14 18:46       ` Jason Gunthorpe
2016-04-20 20:36       ` Jason Gunthorpe
     [not found]         ` <20160420203616.GA28991-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-22 18:38           ` Dennis Dalessandro
     [not found]             ` <20160422183844.GB21996-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-26 15:23               ` Jason Gunthorpe
     [not found]   ` <20160414164550.GC6247-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-18 13:09     ` Christoph Hellwig
     [not found]       ` <20160418130909.GD11508-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-04-18 17:40         ` Jason Gunthorpe
     [not found]           ` <20160418174047.GB13865-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-18 18:24             ` Christoph Hellwig
2016-04-19  3:45               ` Ira Weiny
     [not found]                 ` <20160419034548.GG27515-MvMViLc3Pe+yjJhlop0iC9h3ngVCH38I@public.gmane.org>
2016-04-19 18:40                   ` Christoph Hellwig
     [not found]               ` <20160418182411.GA4904-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-04-19 17:38                 ` Jason Gunthorpe
     [not found]                   ` <20160419173817.GF20844-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-19 20:44                     ` Hefty, Sean
     [not found]                       ` <1828884A29C6694DAF28B7E6B8A82373AB0439B0-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-19 21:38                         ` Jason Gunthorpe
2016-04-20 20:46                         ` Doug Ledford
     [not found]                           ` <5717EAC1.6020602-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-26 13:05                             ` Doug Ledford
     [not found]                               ` <571F6795.8020808-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-26 15:21                                 ` Jason Gunthorpe
2016-04-27  5:21                                 ` Weiny, Ira
     [not found]                                   ` <2807E5FD2F6FDA4886F6618EAC48510E22EC6A98-8k97q/ur5Z2krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-27 14:45                                     ` Doug Ledford

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=20160414212702.GA14137@obsidianresearch.com \
    --to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
    --cc=dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /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).