All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Jason Gunthorpe
	<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: "Hefty,
	Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	"Dalessandro,
	Dennis"
	<dennis.dalessandro-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 20:02:43 -0400	[thread overview]
Message-ID: <20160415000242.GA18400@rhel.sc.intel.com> (raw)
In-Reply-To: <20160414212702.GA14137-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>

On Thu, Apr 14, 2016 at 03:27:02PM -0600, Jason Gunthorpe wrote:
> 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.

CQs and QPs will never, ever, be used by psm.  They are just not part of the
hardware...

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

The difference here is that roce/ib/iwarp were all QP based devices with very
similar semantics.

Following on Seans idea.

I think if we are going to merge into a single device it should be a more
fabric agnostic device.  Perhaps /dev/hsi (for high speed interconnect).

>From there we could use what you are proposing for a truly device agnostic
interface.  Those devices which export both verbs and psm would result in both
of these calls working.

int uverbs_fd = ioctl(hsi_fd, RDMA_GET_DRIVER_OPS_FD, "verbs");
int psm2_fd = ioctl(hsi_fd, RDMA_GET_DRIVER_OPS_FD, "psm2.intel.com");

If/when we define commonalities we can define a common interface and export
that or better yet just promote those to the hsi_fd directly.

Features, once vetted, can be promoted.

We could even start out with a second verbs interface to try things out.

int uverbs2_fd = ioctl(hsi_fd, RDMA_GET_DRIVER_OPS_FD, "verbs2.0");

> 
> 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 think psm.intel.com is appropriate.  sdma is different.

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

This is part of the problem; PSM != verbs.

That is why I think it is most appropriate to have a separate set of ioctls.

This proposal also gives us time to get the verbs2.0 interface baked while the
existing /dev/infiniband/* interfaces are still present.

Ira

> 
> 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-15  0:02 UTC|newest]

Thread overview: 85+ 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-14 15:41     ` 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
2016-04-14 18:05         ` Jason Gunthorpe
     [not found]         ` <20160414180540.GA12554-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-14 18:42           ` Dennis Dalessandro
2016-04-14 18:42             ` Dennis Dalessandro
     [not found]             ` <20160414184200.GA10416-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-14 18:56               ` Jason Gunthorpe
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
     [not found]                         ` <20160414212702.GA14137-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-15  0:02                           ` Ira Weiny [this message]
     [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: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 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-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-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-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-14 18:46         ` Jason Gunthorpe
2016-04-20 20:36       ` 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
2016-04-22 18:38             ` Dennis Dalessandro
     [not found]             ` <20160422183844.GB21996-W4f6Xiosr+yv7QzWx2u06xL4W9x8LtSr@public.gmane.org>
2016-04-26 15:23               ` Jason Gunthorpe
2016-04-26 15:23                 ` Jason Gunthorpe
     [not found]   ` <20160414164550.GC6247-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-18 13:09     ` Christoph Hellwig
2016-04-18 13:09       ` Christoph Hellwig
     [not found]       ` <20160418130909.GD11508-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-04-18 17:40         ` Jason Gunthorpe
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-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
2016-04-19 18:40                     ` Christoph Hellwig
     [not found]               ` <20160418182411.GA4904-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-04-19 17:38                 ` Jason Gunthorpe
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=20160415000242.GA18400@rhel.sc.intel.com \
    --to=ira.weiny-ral2jqcrhueavxtiumwx3w@public.gmane.org \
    --cc=dennis.dalessandro-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@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 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.