From: Scott Wood <scottwood@freescale.com>
To: Christoffer Dall <christoffer.dall@linaro.org>
Cc: Yoder Stuart-B08248 <B08248@freescale.com>,
Alex Williamson <alex.williamson@redhat.com>,
Kim Phillips <kim.phillips@linaro.org>,
"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"a.motakis@virtualopensystems.com"
<a.motakis@virtualopensystems.com>,
"agraf@suse.de" <agraf@suse.de>,
Wood Scott-B07421 <B07421@freescale.com>,
Sethi Varun-B16395 <B16395@freescale.com>,
Bhushan Bharat-R65777 <R65777@freescale.com>,
"peter.maydell@linaro.org" <peter.maydell@linaro.org>,
"santosh.shukla@linaro.org" <santosh.shukla@linaro.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: RFC: (re-)binding the VFIO platform driver to a platform device
Date: Wed, 2 Oct 2013 15:14:02 -0500 [thread overview]
Message-ID: <1380744842.12932.77.camel@snotra.buserror.net> (raw)
In-Reply-To: <20131002184330.GC5108@cbox>
On Wed, 2013-10-02 at 11:43 -0700, Christoffer Dall wrote:
> On Wed, Oct 02, 2013 at 01:32:38PM -0500, Scott Wood wrote:
> > On Wed, 2013-10-02 at 13:25 -0500, Yoder Stuart-B08248 wrote:
> > >
> > > > -----Original Message-----
> > > > From: Christoffer Dall [mailto:christoffer.dall@linaro.org]
> > > > Sent: Wednesday, October 02, 2013 10:14 AM
> > > > To: Alex Williamson
> > > > Cc: Kim Phillips; gregkh@linuxfoundation.org; linux-
> > > > kernel@vger.kernel.org; a.motakis@virtualopensystems.com; agraf@suse.de;
> > > > Yoder Stuart-B08248; Wood Scott-B07421; Sethi Varun-B16395; Bhushan
> > > > Bharat-R65777; peter.maydell@linaro.org; santosh.shukla@linaro.org;
> > > > kvm@vger.kernel.org
> > > > Subject: Re: RFC: (re-)binding the VFIO platform driver to a platform
> > > > device
> > > >
> > > > Wouldn't a sysfs file to add compatibility strings to the vfio-platform
> > > > driver make driver_match_device return true and make everyone happy?
> > >
> > > I had a similar thought. Why can't we do something like:
> > >
> > > echo "fsl,i2c" > /sys/bus/platform/drivers/vfio-platform/new_compatible
> > > echo 12ce0000.i2c > /sys/bus/platform/drivers/vfio-platform/bind
> > >
> > > The first steps tell vfio-platform to register itself to handle
> > > "fsl,i2c" compatible devices. The second step does the bind.
> >
> > Needing to specify the compatible is hacky (we already know what device
> > we want to bind; why do we need to scrounge up more information than
> > that, and add a new sysfs interface for extending compatible matches,
> > and a more flexible data structure to back that up?), and is racy on
> > buses that can hotplug (which driver gets the new device?).
>
> Why hacky? It seems quite reasonable to me that the user has to tell a
> subsystem that from a certain point it should be capable of handling
> some device.
But the reason that driver can handle the device has nothing to do with
the compatible -- it can handle any device on the bus (except for
limitations checked for in the probe function), but it's a policy
decision whether we want it to handle any particular device (as opposed
to a particular type of device).
Now, if we end up requiring a device-aware kernel stub for VFIO platform
devices (as was discussed for handling reset and such), we won't want a
wildcard match, but we'd still want to say that devices only get bound
to vfio upon explicit request. We also would not want userspace adding
to vfio's compatible list in that case. So perhaps a flag for "only
bind on explicit request" should be separate from the ability to supply
a wildcard match. VFIO PCI could still use the wildcard match.
> As for the data structure, isn't this a simple linked list?
It could be, but currently it's an array, which is what all the drivers
are expecting to provide. Adding a second parallel mechanism (like PCI
dynid) seems excessive compared to adding a wildcard match (on PCI such
a mechanism happened to already exist, which made it easy to use for
this, even if it wasn't necessarily the best approach). And then what
happens on non-device-tree platform devices?
> The problem with the race seems to be a common problem that hasn't even
> been solved for PCI yet, so I'm wondering if this is not an orthogonal
> issue with a separate solution, such as a priority or something like
> that.
>
> Yes, once you've added the new_compatible to the vfio-platform driver,
> it's up for grabs from both the new and the old driver, but that could
> be solved by always making sure that the vfio-platform driver is checked
> first.
...which is the opposite of what you want if a different device of the
same type is plugged in after you add the device type ID to vfio. A
"bind only by request" flag would avoid that problem.
As for the possibility that the normal driver would claim it (maybe due
to the bus being rescanned after a hotplug event?), that could be
addressed with a mechanism to atomically unbind-and-rebind, or (perhaps
easier) by making it so that once a device has been explicitly unbound,
it can only be bound again by explicit request (which would also allow a
user to say "I don't want to use this device at all" without it getting
rebound later).
Better still would be an independent "don't bind by default" flag that
the user can set in sysfs (this is different from the driver's "don't
bind by default" flag that is set by the driver), so that the action is
reversible, and so a user can set this policy regardless of whether a
driver has been loaded yet.
> > What's wrong with a non-vfio-specific flag that a driver can set, that
> > indicates that the driver is willing to try to bind to any device on the
> > bus if explicitly requested via the existing sysfs bind mechanism?
> >
> It sounds more hackish to me to invent some 'generic' flag to solve a
> very specific case.
new_compatible would be to solve an even more specific case, but both
new_compatible and a don't-bind-by-default flag could have applications
elsewhere.
> What you're suggesting would let users specify that
> a serial driver should handle a NIC hardware, no? That sounds much much
> worse to me.
The flag (and wildcard match, if applicable) would be set by the driver,
not by the user. Whereas PCI's "new_id" and the "new_compatible" being
suggested in this thread would allow exactly that, assuming the driver
doesn't reject the device in the probe function.
-Scott
next prev parent reply other threads:[~2013-10-02 20:14 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-01 18:38 Kim Phillips
2013-10-01 19:15 ` Scott Wood
2013-10-01 19:17 ` Scott Wood
2013-10-01 22:01 ` Kim Phillips
2013-10-01 21:59 ` Kim Phillips
2013-10-01 22:44 ` Scott Wood
2013-10-01 20:00 ` Greg Kroah-Hartman
2013-10-01 22:02 ` Kim Phillips
2013-10-02 1:53 ` Christoffer Dall
2013-10-02 2:35 ` Alex Williamson
2013-10-02 15:14 ` Christoffer Dall
2013-10-02 15:29 ` Alex Williamson
2013-10-02 18:25 ` Yoder Stuart-B08248
2013-10-02 18:32 ` Scott Wood
2013-10-02 18:43 ` Christoffer Dall
2013-10-02 20:04 ` Kim Phillips
2013-10-02 20:13 ` Christoffer Dall
2013-10-02 20:19 ` Scott Wood
2013-10-02 20:14 ` Scott Wood [this message]
2013-10-02 20:27 ` Christoffer Dall
2013-10-02 20:39 ` gregkh
2013-10-02 20:44 ` Christoffer Dall
2013-10-02 20:37 ` gregkh
2013-10-02 20:42 ` Christoffer Dall
2013-10-02 21:08 ` Scott Wood
2013-10-02 21:16 ` gregkh
2013-10-02 21:35 ` Scott Wood
2013-10-02 23:40 ` gregkh
2013-10-03 18:33 ` Scott Wood
2013-10-03 18:54 ` gregkh
2013-10-03 19:11 ` Scott Wood
2013-10-03 20:32 ` gregkh
2013-10-09 19:02 ` Yoder Stuart-B08248
2013-10-09 19:16 ` gregkh
2013-10-09 19:49 ` Scott Wood
2013-10-09 19:21 ` Scott Wood
2013-10-09 19:44 ` Yoder Stuart-B08248
2013-10-09 20:03 ` Scott Wood
2013-10-10 3:05 ` Kim Phillips
2013-10-10 8:01 ` Bhushan Bharat-R65777
2013-10-10 15:27 ` Scott Wood
2013-10-11 6:27 ` [PATCH 1/4] driver core: Add new device_driver flag to allow binding via sysfs only Kim Phillips
2013-10-11 6:27 ` [PATCH 2/4] driver core: platform: allow platform drivers to bind to any device Kim Phillips
2013-10-11 6:27 ` [PATCH 3/4] VFIO: pci: amend vfio-pci for explicit binding via sysfs only Kim Phillips
2013-10-11 20:43 ` Scott Wood
2013-10-11 23:17 ` Kim Phillips
2013-10-14 13:01 ` Yoder Stuart-B08248
2013-10-14 17:13 ` Scott Wood
2013-10-24 11:32 ` Bhushan Bharat-R65777
2013-10-28 17:47 ` Alex Williamson
2013-10-28 18:00 ` Scott Wood
2013-10-28 18:09 ` Scott Wood
2013-10-29 3:38 ` Bhushan Bharat-R65777
2013-10-29 3:40 ` Scott Wood
2013-10-29 3:52 ` Bhushan Bharat-R65777
2013-10-29 4:29 ` Scott Wood
2013-10-29 4:31 ` Bhushan Bharat-R65777
2013-10-29 4:35 ` Scott Wood
2013-10-29 4:45 ` Bhushan Bharat-R65777
2013-10-29 4:54 ` Scott Wood
2013-10-29 6:39 ` Bhushan Bharat-R65777
2013-10-11 6:27 ` [PATCH] VFIO: platform: allow the driver to bind to any device explicitly via sysfs Kim Phillips
2013-10-10 7:45 ` RFC: (re-)binding the VFIO platform driver to a platform device Bhushan Bharat-R65777
2013-10-10 13:43 ` Yoder Stuart-B08248
2013-10-10 15:23 ` Scott Wood
2013-10-10 15:25 ` Bhushan Bharat-R65777
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=1380744842.12932.77.camel@snotra.buserror.net \
--to=scottwood@freescale.com \
--cc=B07421@freescale.com \
--cc=B08248@freescale.com \
--cc=B16395@freescale.com \
--cc=R65777@freescale.com \
--cc=a.motakis@virtualopensystems.com \
--cc=agraf@suse.de \
--cc=alex.williamson@redhat.com \
--cc=christoffer.dall@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=kim.phillips@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peter.maydell@linaro.org \
--cc=santosh.shukla@linaro.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
Powered by JetHome