From: Christoffer Dall <christoffer.dall@linaro.org>
To: Kim Phillips <kim.phillips@linaro.org>
Cc: scottwood@freescale.com, B08248@freescale.com,
alex.williamson@redhat.com, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, a.motakis@virtualopensystems.com,
agraf@suse.de, B07421@freescale.com, B16395@freescale.com,
R65777@freescale.com, 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
Date: Wed, 2 Oct 2013 21:13:07 +0100 [thread overview]
Message-ID: <20131002201307.GA3029@lvm> (raw)
In-Reply-To: <20131002150415.458f40ac97cd6ea9de9c590d@linaro.org>
On Wed, Oct 02, 2013 at 03:04:15PM -0500, Kim Phillips wrote:
> On Wed, 2 Oct 2013 11:43:30 -0700
> Christoffer Dall <christoffer.dall@linaro.org> 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.
>
> I think what Scott is saying is that the first echo above is somewhat
> redundant with the second: they're both talking to the vfio-platform
> driver about an i2c device.
>
ok, fair enough, I didn't commit particularly to that interface, but
having a special hook for checking a flag kind of like the strcmp hack
you posted, just seems weird to me; it would be better if the vfio
driver can add the bind string to the list of compatible devices it can
bind to, and then use the generic bind mechanism in the kernel. But I'm
honestly not familiar enough with the implementaiton specific bits of
the syfs interface to argue how the changes are for one method vs. the
other.
> > As for the data structure, isn't this a simple linked list?
> >
> > 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.
>
> I agree; adding 'direct'/'atomic' functionality to the existing bind
> sysfs file, i.e., bind_store() logic to perform device_release_driver()
> logic if dev->driver != NULL, all under the same device_lock() is an
> independent problem from binding the VFIO platform driver to a platform
> device.
>
> > 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.
>
> not sure I understand the priority problem here - haven't looked at PCI
> yet - but, given the above 'atomic bind' functionality described above,
> the new and old driver wouldn't be requesting to bind to the same
> device simultaneously, no?
>
AFAIU, the problem occurs with hotplug. If you add the compatibility
string to a new driver and then hotplug a device with the string, then
which driver gets the device?
> > (I'm not familiar with these data structures, but I would imagine
> > something like re-inserting the vfio-platform driver in the
> > list/tree/... whenever adding a new_compatible value might possibly be
> > one solution).
> >
> > > 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. 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.
>
> I thought that was the nature of VFIO drivers...it's a 'meta-' driver,
> used for enabling userspace drivers at large.
>
Yes, vfio is a meta driver, therefore it needs to be able to do
something special, but the generic driver/device/bus matching framework
doesn't need an extra generic feature allowing you to bind driver X to
device Y for all combinations of X and Y depending on some flag...
Someone please correct me if there are more use cases for this and this
is in fact worth a generic solution.
-Christoffer
next prev parent reply other threads:[~2013-10-02 20:13 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-01 18:38 RFC: (re-)binding the VFIO platform driver to a platform device 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 [this message]
2013-10-02 20:19 ` Scott Wood
2013-10-02 20:14 ` Scott Wood
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=20131002201307.GA3029@lvm \
--to=christoffer.dall@linaro.org \
--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=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 \
--cc=scottwood@freescale.com \
/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).