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
next prev parent reply other threads:[~2016-04-15 0:02 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
[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: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=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 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).