[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
Hello Thomas, On Sun, Nov 6, 2016 at 10:59 PM, Thomas Monjalon wrote: > 2016-10-25 14:50, Ben Walker: >> If the user asks to probe multiple times, the probe >> callback should only be called on devices that don't have >> a driver already loaded. >> >> This is useful if a driver is registered after the >> execution of a program has started and the list of devices >> needs to be re-scanned. >> >> Signed-off-by: Ben Walker > > Applied, thanks Can you add a follow up patch I will send shortly ? Thanks. -- David Marchand
[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
2016-10-25 14:50, Ben Walker: > If the user asks to probe multiple times, the probe > callback should only be called on devices that don't have > a driver already loaded. > > This is useful if a driver is registered after the > execution of a program has started and the list of devices > needs to be re-scanned. > > Signed-off-by: Ben Walker Applied, thanks
[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
On 10/26/2016 3:20 AM, Ben Walker wrote: > If the user asks to probe multiple times, the probe > callback should only be called on devices that don't have > a driver already loaded. > > This is useful if a driver is registered after the > execution of a program has started and the list of devices > needs to be re-scanned. > > Signed-off-by: Ben Walker > --- > lib/librte_eal/common/eal_common_pci.c | 4 > 1 file changed, 4 insertions(+) > > diff --git a/lib/librte_eal/common/eal_common_pci.c > b/lib/librte_eal/common/eal_common_pci.c > index 638cd86..971ad20 100644 > --- a/lib/librte_eal/common/eal_common_pci.c > +++ b/lib/librte_eal/common/eal_common_pci.c > @@ -289,6 +289,10 @@ pci_probe_all_drivers(struct rte_pci_device *dev) > if (dev == NULL) > return -1; > > + /* Check if a driver is already loaded */ > + if (dev->driver != NULL) > + return 0; > + In case if it is required to change the driver assigned to a device, would it mean application relies on detach(dev)->new-driver-plugged-in->attach(dev) sequence? To me, the above change sounds fine. Though, I am not aware if there is even a use case for changing driver assigned to a device. detach()->attach() should be able to work in those cases, I think. > TAILQ_FOREACH(dr, _driver_list, next) { > rc = rte_eal_pci_probe_one_driver(dr, dev); > if (rc < 0) > - Shreyansh
[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
On Thu, Oct 27, 2016 at 3:28 PM, David Marchand wrote: > On Tue, Oct 25, 2016 at 11:50 PM, Ben Walker > wrote: >> If the user asks to probe multiple times, the probe >> callback should only be called on devices that don't have >> a driver already loaded. >> >> This is useful if a driver is registered after the >> execution of a program has started and the list of devices >> needs to be re-scanned. > > Why not use the hotplug api, attaching explicitely one pci device ? Ah, scratch that. I've been too quick to reply. Ok, you are loading a new driver. -- David Marchand
[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
Hello Benjamin, On Tue, Oct 25, 2016 at 11:50 PM, Ben Walker wrote: > If the user asks to probe multiple times, the probe > callback should only be called on devices that don't have > a driver already loaded. > > This is useful if a driver is registered after the > execution of a program has started and the list of devices > needs to be re-scanned. Why not use the hotplug api, attaching explicitely one pci device ? > Signed-off-by: Ben Walker > --- > lib/librte_eal/common/eal_common_pci.c | 4 > 1 file changed, 4 insertions(+) > > diff --git a/lib/librte_eal/common/eal_common_pci.c > b/lib/librte_eal/common/eal_common_pci.c > index 638cd86..971ad20 100644 > --- a/lib/librte_eal/common/eal_common_pci.c > +++ b/lib/librte_eal/common/eal_common_pci.c > @@ -289,6 +289,10 @@ pci_probe_all_drivers(struct rte_pci_device *dev) > if (dev == NULL) > return -1; > > + /* Check if a driver is already loaded */ > + if (dev->driver != NULL) > + return 0; > + This can do the trick, yes. To be safe, I think we are missing a check in rte_eal_pci_probe_one_driver() so that dev->driver is only set when the probe function from the driver did succeed. -- David Marchand
[dpdk-dev] [PATCH] pci: Don't call probe callback if driver already loaded.
If the user asks to probe multiple times, the probe callback should only be called on devices that don't have a driver already loaded. This is useful if a driver is registered after the execution of a program has started and the list of devices needs to be re-scanned. Signed-off-by: Ben Walker --- lib/librte_eal/common/eal_common_pci.c | 4 1 file changed, 4 insertions(+) diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c index 638cd86..971ad20 100644 --- a/lib/librte_eal/common/eal_common_pci.c +++ b/lib/librte_eal/common/eal_common_pci.c @@ -289,6 +289,10 @@ pci_probe_all_drivers(struct rte_pci_device *dev) if (dev == NULL) return -1; + /* Check if a driver is already loaded */ + if (dev->driver != NULL) + return 0; + TAILQ_FOREACH(dr, _driver_list, next) { rc = rte_eal_pci_probe_one_driver(dr, dev); if (rc < 0) -- 2.7.4