From: Greg KH <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
To: Stuart Yoder <stuart.yoder-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Cc: "kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org"
<jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org>,
"will.deacon-5wv7dgnIgG8@public.gmane.org"
<will.deacon-5wv7dgnIgG8@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Bjorn Helgaas <bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Varun Sethi <Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
"kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org"
<kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org>,
"Rafael J. Wysocki"
<rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
"agraf-l3A5Bk7waGM@public.gmane.org"
<agraf-l3A5Bk7waGM@public.gmane.org>,
Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>,
Dmitry Kasatkin
<d.kasatkin-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Scott Wood <scottwood-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
Antonios Motakis
<a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
"tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org"
<tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>,
Toshi Kani <toshi.kani-VXdhtT5mjnY@public.gmane.org>,
"a.rigo-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org"
<a.rigo-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>,
"iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [RFC PATCH v4 01/10] driver core: export driver_probe_device()
Date: Thu, 20 Feb 2014 14:43:37 -0800 [thread overview]
Message-ID: <20140220224337.GA20097@kroah.com> (raw)
In-Reply-To: <b6374a0f30194969ba4622ff2f58ae65-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
On Thu, Feb 20, 2014 at 10:34:35PM +0000, Stuart Yoder wrote:
>
>
> > -----Original Message-----
> > From: Yoder Stuart-B08248
> > Sent: Saturday, February 15, 2014 12:19 PM
> > To: 'Greg KH'
> > Cc: Antonios Motakis; alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org;
> > kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org; iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org; linux-
> > kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org;
> > a.rigo-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org; kim.phillips-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org;
> > jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org; kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Bhushan Bharat-R65777; Wood
> > Scott-B07421; christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org; agraf-l3A5Bk7waGM@public.gmane.org; Sethi Varun-
> > B16395; will.deacon-5wv7dgnIgG8@public.gmane.org; Tejun Heo; Rafael J. Wysocki; Guenter Roeck;
> > Toshi Kani; Joe Perches; Dmitry Kasatkin; Michal Hocko; Bjorn Helgaas
> > Subject: RE: [RFC PATCH v4 01/10] driver core: export
> > driver_probe_device()
> >
> >
> >
> > > -----Original Message-----
> > > From: Greg KH [mailto:gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org]
> > > Sent: Saturday, February 15, 2014 11:34 AM
> > > To: Yoder Stuart-B08248
> > > Cc: Antonios Motakis; alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org;
> > > kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org; iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org; linux-
> > > kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org;
> > > a.rigo-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org; kim.phillips-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org;
> > > jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org; kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Bhushan Bharat-R65777;
> > Wood
> > > Scott-B07421; christoffer.dall-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org; agraf-l3A5Bk7waGM@public.gmane.org; Sethi Varun-
> > > B16395; will.deacon-5wv7dgnIgG8@public.gmane.org; Tejun Heo; Rafael J. Wysocki; Guenter
> > Roeck;
> > > Toshi Kani; Joe Perches; Dmitry Kasatkin; Michal Hocko; Bjorn Helgaas
> > > Subject: Re: [RFC PATCH v4 01/10] driver core: export
> > > driver_probe_device()
> > >
> > > On Sat, Feb 15, 2014 at 04:33:44PM +0000, Stuart Yoder wrote:
> > > > > > Why? driver_probe_device() allows a driver to explicitly bind
> > > > > > to a specific device. What is conceptually wrong with allowing
> > > > > > that?
> > > > >
> > > > > Because that's not how a bus should work, and the fact that no
> > other
> > > > > subsystem in the kernel does that might be a hint you are trying to
> > > do
> > > > > something a bit "wrong" here.
> > > >
> > > > Let me try to succinctly as I can describe the problem we are trying
> > to
> > > > solve here...
> > > >
> > > > The vfio mechanism in the kernel (e.g. vfio-pci) allows devices to be
> > > > exposed user space (via file descriptors), enabling user space
> > > > drivers. So, for example to export an e1000 card to user space, I do
> > > > this:
> > > >
> > > > echo 0001:03:00.0 >
> > /sys/bus/pci/devices/0001:03:00.0/driver/unbind
> > > > echo 8086 10d3 > /sys/bus/pci/drivers/vfio-pci/new_id
> > >
> > > What's wrong with using the "bind" file instead? That picks a specific
> > > device and binds it to a specific driver. Or have we been down this
> > > path before? :)
> >
> > Yes we have :) The "bind" file does not bypass device ID checks, so
> > it wouldn't work without new_id or a wildcard match of some kind.
> >
> > > And that is for a PCI "driver" not a totally separate bus, which it
> > > looks like you are wanting to do here.
> >
> > vfio-pci is a PCI driver, not a bus (drivers/vfio/pci/vfio_pci.c).
> >
> > > > The first step unbinds the target device (0001:03:00.0) from the
> > normal
> > > > e1000 driver.
> > > >
> > > > The second step causes the vfio-pci driver to bind to device
> > > 0001:03:00.0.
> > > > This second step tells vfio-pci that it now handles e1000 device IDs,
> > > > and the vfio-pci drivers registers with the PCI bus to handle '8086
> > > 10d3'.
> > > >
> > > > That works, but it is ugly. We now have 2 active drivers handling
> > > > the same device type...which introduces various possible race
> > > conditions.
> > > >
> > > > We never want vfio-pci to auto-bind to any new device that shows up
> > > > on the PCI bus. Binding a device to vfio-pci must be an explicit
> > > > action by an administrator.
> > >
> > > Then use the "bind" file.
> >
> > See above.
> >
> > > > You mentioned previously that user space can sort out the problem
> > > > of multiple drivers registered for handling the same device type.
> > > > That is true, but doesn't help here. We don't want vfio-pci
> > > > to handle _all_ e1000 cards, just explicitly selected e1000 cards.
> > > >
> > > > We want the normal e1000 driver to be loaded and to bind to new
> > > > devices that may be hot-plugged.
> > >
> > > I want a pony too...
> >
> > It's not that difficult...this patch accomplishes it by
> > simply allowing drivers to call driver_probe_device().
> >
> > > > There are 2 proposed mechanisms that have been put forth, both of
> > > > which you have now rejected:
> > > >
> > > > 1. sysfs_bind_only flag was proposed which would allow a vfio
> > > > driver (like vfio-pci) to only bind by explicit request
> > through
> > > > the sysfs 'bind' file.
> > >
> > > Why did I reject this? What did the patch look like?
> >
> > https://lkml.org/lkml/2013/12/3/253
> >
> >
> > > > 2. Have the vfio driver call driver_probe_device() to explicitly
> > > bind
> > > > a particular device instance to the driver. Only change we
> > need
> > > > here is the EXPORT_SYMBOL.
> > >
> > > How are you going to prevent the driver from being bound to the device
> > > in the core with this change? How are you going to call this function?
> > > When? On what action of the user?
> >
> > The vfio-pci driver would create a sysfs object "vfio_bind".
> >
> > User would do:
> > echo 0001:03:00.0 > /sys/bus/pci/drivers/vfio-pci/vfio_bind
> >
> > vfio-pci would call driver_probe_device() which binds
> > the specific device to the vfio-pci driver...and there is
> > no ambiguity.
> >
> > > > Are you in principle opposed to any mechanism that would allow 2
> > > drivers
> > > > to be resident/active and allow a sysadmin to explicitly bind a
> > > > particular device instance to the driver of their choice?
> > >
> > > No, that works today with the bind/unbind/new_id files, it's just that
> > > you don't like it :)
> >
> > We don't like it because of the ambiguities/race-conditions with
> > the current situation.
> >
> > A vfio driver, like vfio-pci, certainly is a bit different than a normal
> > driver, in that it really is not device ID aware. It simply passes
> > through device resources (mappable regions, IRQs) to user space without
> > interpreting or understanding them. It is kind of a "meta" driver, but
> > it is not a bus. Every bus type would need its own vfio driver to
> > do this type of device pass through.
>
> Hi Greg,
>
> Any further thoughts on this?
Sorry, been swamped with other patches and stable stuff and not had a
time to look at it. Give me a few days...
next prev parent reply other threads:[~2014-02-20 22:43 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-08 17:29 [RFC PATCH v4 00/10] VFIO support for platform devices Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 04/10] VFIO_PLATFORM: Initial skeleton of " Antonios Motakis
[not found] ` <1391880580-471-1-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-02-08 17:29 ` [RFC PATCH v4 01/10] driver core: export driver_probe_device() Antonios Motakis
[not found] ` <1391880580-471-2-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-02-14 22:27 ` Greg KH
[not found] ` <20140214222716.GA11838-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-02-14 23:00 ` Stuart Yoder
[not found] ` <ba7597fd8c9f4d91bbccfb42e31a165e-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-02-15 2:47 ` Greg KH
[not found] ` <20140215024725.GA2542-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-02-15 16:33 ` Stuart Yoder
[not found] ` <7043e1edd9974de590dcb392cd8aff14-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-02-15 17:33 ` Greg KH
[not found] ` <20140215173348.GA8056-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-02-15 18:19 ` Stuart Yoder
[not found] ` <38f0473542954fe8b312a1f7b61a3d21-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-02-18 0:38 ` Scott Wood
2014-02-20 22:34 ` Stuart Yoder
[not found] ` <b6374a0f30194969ba4622ff2f58ae65-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-02-20 22:43 ` Greg KH [this message]
[not found] ` <20140220224337.GA20097-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-03-06 22:25 ` Stuart Yoder
2014-03-26 1:40 ` mechanism to allow a driver to bind to any device Stuart Yoder
[not found] ` <54cd150235ba4954becdd12f725c5ebd-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-03-26 14:40 ` Konrad Rzeszutek Wilk
[not found] ` <20140326144025.GA18387-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-03-26 15:06 ` Alexander Graf
[not found] ` <D45FC8F2-7807-4BBB-A253-8EFCD091D6BD-l3A5Bk7waGM@public.gmane.org>
2014-03-26 16:21 ` Alex Williamson
[not found] ` <1395850862.632.247.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-03-26 16:32 ` Konrad Rzeszutek Wilk
[not found] ` <20140326163209.GB21368-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-03-26 16:49 ` Alex Williamson
[not found] ` <1395852592.632.253.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-03-26 17:04 ` Konrad Rzeszutek Wilk
[not found] ` <20140326170406.GA22902-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-03-26 17:26 ` Alex Williamson
2014-03-26 17:51 ` Stuart Yoder
2014-03-26 22:09 ` Alex Williamson
[not found] ` <1395871761.632.316.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-03-28 16:58 ` Konrad Rzeszutek Wilk
[not found] ` <20140328165809.GA12659-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2014-03-28 17:10 ` Alex Williamson
[not found] ` <1396026623.4502.34.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-03-31 22:36 ` Kim Phillips
[not found] ` <20140331173627.e4abfb3397287c3b9aff6606-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-03-31 23:52 ` Alex Williamson
2014-03-31 18:47 ` Stuart Yoder
[not found] ` <7d1b495cdb6a415e8d3b7f60f409991c-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-03-31 19:47 ` Greg KH
[not found] ` <20140331194705.GA13014-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-03-31 20:23 ` Stuart Yoder
[not found] ` <c6a10ce9bfd84287b5c5aa3809987b2b-ufbTtyGzTTT8GZusEWM6WuO6mTEJWrR4XA4E9RH9d+qIuWR1G4zioA@public.gmane.org>
2014-03-31 22:32 ` Kim Phillips
2014-03-31 18:32 ` Stuart Yoder
2014-03-26 16:24 ` Konrad Rzeszutek Wilk
2014-03-26 15:32 ` Stuart Yoder
2014-03-26 21:39 ` Antonios Motakis
[not found] ` <CAG8rG2xCvCGJWwZTnkia5GD3BVJZB9SmKOm79T6Q1FnhgB+urw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-28 6:59 ` Greg KH
[not found] ` <20140328065942.GB14619-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-03-31 18:21 ` Stuart Yoder
2014-03-26 21:42 ` Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 02/10] VFIO_IOMMU_TYPE1: Introduce the VFIO_DMA_MAP_FLAG_EXEC flag Antonios Motakis
[not found] ` <1391880580-471-3-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-02-10 20:04 ` Alex Williamson
2014-02-08 17:29 ` [RFC PATCH v4 03/10] VFIO_IOMMU_TYPE1: workaround to build for platform devices Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 05/10] VFIO_PLATFORM: Return info for device and its memory mapped IO regions Antonios Motakis
[not found] ` <1391880580-471-6-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-02-10 22:32 ` Alex Williamson
2014-02-08 17:29 ` [RFC PATCH v4 06/10] VFIO_PLATFORM: Read and write support for the device fd Antonios Motakis
[not found] ` <1391880580-471-7-git-send-email-a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org>
2014-02-10 22:45 ` Alex Williamson
[not found] ` <1392072326.15608.181.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-02-10 23:12 ` Scott Wood
[not found] ` <1392073951.6733.383.camel-88ow+0ZRuxG2UiBs7uKeOtHuzzzSOjJt@public.gmane.org>
2014-02-10 23:20 ` Alex Williamson
2014-02-08 17:29 ` [RFC PATCH v4 07/10] VFIO_PLATFORM: Support MMAP of MMIO regions Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 08/10] VFIO_PLATFORM: Return IRQ info Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 09/10] VFIO_PLATFORM: Initial interrupts support Antonios Motakis
2014-02-08 17:29 ` [RFC PATCH v4 10/10] VFIO_PLATFORM: Support for maskable and automasked interrupts Antonios Motakis
-- strict thread matches above, loose matches on Subject: below --
2014-03-06 22:31 [RFC PATCH v4 01/10] driver core: export driver_probe_device() Konrad Rzeszutek Wilk
2014-03-06 22:31 Konrad Rzeszutek Wilk
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=20140220224337.GA20097@kroah.com \
--to=gregkh-hqyy1w1ycw8ekmwlsbkhg0b+6bgklq7r@public.gmane.org \
--cc=Varun.Sethi-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=a.motakis-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
--cc=a.rigo-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
--cc=agraf-l3A5Bk7waGM@public.gmane.org \
--cc=bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=d.kasatkin-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=jan.kiszka-kv7WeFo6aLtBDgjK7y7TUQ@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=kvmarm-FPEHb7Xf0XXUo1n7N8X6UoWGPAHP3yOg@public.gmane.org \
--cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
--cc=rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=scottwood-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=stuart.yoder-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=tech-lrHrjnjw1UfHK3s98zE1ajGjJy/sRE9J@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=toshi.kani-VXdhtT5mjnY@public.gmane.org \
--cc=will.deacon-5wv7dgnIgG8@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).