Message ID | 20210729203740.1377045-6-u.kleine-koenig@pengutronix.de (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | PCI: Drop duplicated tracking of a pci_dev's bound driver | expand |
On Thu, Jul 29, 2021 at 10:37:40PM +0200, Uwe Kleine-König wrote:
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
I know I can not take patches without any changelog text, maybe other
maintainers are more lax :(
On Fri, Jul 30, 2021 at 07:14:27AM +0200, Greg Kroah-Hartman wrote: > On Thu, Jul 29, 2021 at 10:37:40PM +0200, Uwe Kleine-König wrote: > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> > > I know I can not take patches without any changelog text, maybe other > maintainers are more lax :( Ah right, I admit to not invest much car here, mainly because I didn't expect that this patch makes it in very soon as there are many maintainers involved in the patches this one depends on. I'd write something like: Currently it's tracked twice which driver is bound to a given pci device. Now that all users of the pci specific one (struct pci_dev::driver) are updated to use an access macro (pci_driver_of_dev()), change the macro to use the information from the driver core and remove the driver member from struct pci_dev. Best regards Uwe
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 740d5bf5d411..5d950eb476e2 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -305,12 +305,10 @@ static long local_pci_probe(void *_ddi) * its remove routine. */ pm_runtime_get_sync(dev); - pci_dev->driver = pci_drv; rc = pci_drv->probe(pci_dev, ddi->id); if (!rc) return rc; if (rc < 0) { - pci_dev->driver = NULL; pm_runtime_put_sync(dev); return rc; } @@ -376,7 +374,6 @@ static int pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, * @pci_dev: PCI device being probed * * returns 0 on success, else error. - * side-effect: pci_dev->driver is set to drv when drv claims pci_dev. */ static int __pci_device_probe(struct pci_driver *drv, struct pci_dev *pci_dev) { @@ -451,7 +448,6 @@ static int pci_device_remove(struct device *dev) pm_runtime_put_noidle(dev); } pcibios_free_irq(pci_dev); - pci_dev->driver = NULL; pci_iov_remove(pci_dev); /* Undo the runtime PM settings in local_pci_probe() */ diff --git a/include/linux/pci.h b/include/linux/pci.h index 778f3b5e6f23..f44ab76e216f 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -342,7 +342,6 @@ struct pci_dev { u16 pcie_flags_reg; /* Cached PCIe Capabilities Register */ unsigned long *dma_alias_mask;/* Mask of enabled devfn aliases */ - struct pci_driver *driver; /* Driver bound to this device */ u64 dma_mask; /* Mask of the bits of bus address this device implements. Normally this is 0xffffffff. You only need to change @@ -887,7 +886,7 @@ struct pci_driver { }; #define to_pci_driver(drv) container_of(drv, struct pci_driver, driver) -#define pci_driver_of_dev(pdev) ((pdev)->driver) +#define pci_driver_of_dev(pdev) ((pdev)->dev.driver ? to_pci_driver((pdev)->dev.driver) : NULL) /** * PCI_DEVICE - macro used to describe a specific PCI device
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> --- drivers/pci/pci-driver.c | 4 ---- include/linux/pci.h | 3 +-- 2 files changed, 1 insertion(+), 6 deletions(-)