From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: OFVWG <ofvwg-ZwoEplunGu1OwGhvXhtEPSCwEArCW2h5@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: "Hefty,
Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"Weiny, Ira" <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Subject: Further thoughts on uAPI
Date: Tue, 19 Apr 2016 19:25:26 -0600 [thread overview]
Message-ID: <20160420012526.GA25508@obsidianresearch.com> (raw)
Thinking more deeply about what Liran presented, we can go a bit
further and multiplex on the object type as well as the action.
Specifically, let's have generic ioctl of the form:
create_object
query_object
modify_object
delete_object
Generically taking the same common struct:
struct {
u32 length;
u32 object_type; // Eg QP,PD,etc
u32 user_handle; // in/out
u32 reserved;
u64 data[];
};
Where data follows some kind of structured attribute format like Liran
was exploring ala netlink.
>From this point we can obviously capture nearly all of the verbs
objects, but this also can become a clean way for us to allow drivers
to export driver-specific objects as well. (eg object_type & (1<<31)
== driver specific)
With one more entry point (call_driver_on_object) this would cover a
lot of cases. Maybe we have many such entry points for performance.
>From there we'd probably have to define a few other common up calls.
Study of objects:
'device','port' - Pre-existing and read-only, query_object returns
information like we have today
'pd','mr','mw','cq','srq','qp','ah' - Basic objects, not all have a modify/query
'flow','xrc',etc - extra objects
Additional entry points:
poll_cq/req_notify_cq - These are high speed, so simple ioctls, or
driver specific
post recv/send - drivers implement these via call_driver_on_object
attach/detach mcast - Could be 'modify' a qp, or could be new ioctls
async_event - Should be an ioctl
get_fd - Convert the object to a fd (eg async_fd, comp_channel, etc)
I think this would substantially address the concern that the uapi is
'verbs' or 'qp' specific. Clearly there is space here for any number
of object families related to RDMA devices.
It is also discoverable since we can have a query_object that returns
all 'object_types' the device driver supports.
Sean, is this more agreeable to you than the unstructured fd idea?
The kernel common code side is pretty straightforward, just a bunch of
tables of function pointers, templates and idrs for each object_type.
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 reply other threads:[~2016-04-20 1:25 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 1:25 Jason Gunthorpe [this message]
[not found] ` <20160420012526.GA25508-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-20 4:54 ` Further thoughts on uAPI Hefty, Sean
2016-04-21 12:32 ` Hefty, Sean
2016-04-21 13:35 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB044043-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-21 13:54 ` Hefty, Sean
2016-04-21 14:03 ` Leon Romanovsky
[not found] ` <20160421140347.GI26951-2ukJVAZIZ/Y@public.gmane.org>
2016-04-21 14:35 ` Hefty, Sean
2016-04-21 17:24 ` Jason Gunthorpe
[not found] ` <20160421172428.GA5102-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-22 16:35 ` Hefty, Sean
2016-04-24 20:11 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB045101-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-25 18:19 ` Jason Gunthorpe
[not found] ` <20160425181953.GC7675-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-25 19:16 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB04548E-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-25 20:53 ` Jason Gunthorpe
2016-04-26 13:18 ` Doug Ledford
[not found] ` <571F6A8C.9080100-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-26 14:33 ` Jason Gunthorpe
2016-04-24 14:15 ` Liran Liss
[not found] ` <AM3PR05MB141161876D5CA05B1993D20CB1610-LOZWmgKjnYgmsg45OnKo/9qRiQSDpxhJvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-04-26 14:19 ` Doug Ledford
[not found] ` <571F78F9.8010401-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-26 14:58 ` Jason Gunthorpe
[not found] ` <20160426145813.GB24104-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-26 16:38 ` Doug Ledford
[not found] ` <571F9968.3080501-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2016-04-26 16:54 ` Jason Gunthorpe
2016-04-26 16:46 ` Hefty, Sean
2016-04-25 16:29 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB0453F5-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-25 18:32 ` Jason Gunthorpe
[not found] ` <20160425183243.GD7675-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2016-04-25 18:51 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373AB045460-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2016-04-25 20:22 ` Jason Gunthorpe
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=20160420012526.GA25508@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ofvwg-ZwoEplunGu1OwGhvXhtEPSCwEArCW2h5@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