Re: RFC: (re-)binding the VFIO platform driver to a platform device

From: Scott Wood
Date: Wed Oct 02 2013 - 17:35:38 EST


On Wed, 2013-10-02 at 14:16 -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> On Wed, Oct 02, 2013 at 04:08:41PM -0500, Scott Wood wrote:
> > On Wed, 2013-10-02 at 13:37 -0700, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> > > On Wed, Oct 02, 2013 at 11:43:30AM -0700, Christoffer Dall wrote:
> > > > > 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.
> > >
> > > You can do that today, with any PCI driver (or USB driver as well), just
> > > use the bind/unbind files in sysfs and you had better "know" what you
> > > are doing...
> >
> > sysfs bind won't work if it driver_match_device() fails. PCI has
> > PCI_ANY_ID, so the missing piece for PCI is a way to say that the driver
> > should not bind to a device except when explicitly requested via sysfs
> > bind.
> >
> > I don't see any equivalent functionality to PCI_ANY_ID for platform
> > devices.
>
> Nor should it. If you are wanting to bind platform devices to different
> things based on "ids" or "strings" or something else, then you had
> better not be using a platform device because that is not what you have
> anymore.

I don't see how anything could be considered a platform device under
your definition. Even before all the device tree stuff came along,
platform devices were still bound based on strings.

> Yes, I know the OF stuff uses platform devices, and again, it's one
> reason why I don't like it at all. So fix OF devices "properly",
> creating your own bus and device type, and then you will not have these
> issues.

That's what we used to have... It was merged with platform bus because
so many devices may be probed multiple different ways (device tree,
platform data, ACPI, etc). OF is not a bus. A platform device
discovered from OF is still a platform device, just as an i2c device
discovered from OF is still an i2c device.

If you don't like devices that don't sit on some formalized bus and can
be described in more than one way, fine, but that won't make them go
away.

And even if we did still have a separate OF platform bus, my point about
there not being a wildcard match applies to of_device_id as well. It
certainly is not the case that "this is already there, and has been for
years with no problems".

> greg "I should never have let platform devices be created" k-h

The alternative is what? A bunch of duplicated code, with a different
bus type for every SoC family, just so you can put a name on it?

-Scott



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/