Message ID | 20210622000310.728294-1-mcgrof@kernel.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [1/2] pci: export pci_dev_unlock() and the respective unlock | expand |
Hello Luis, Hello Bjorn, Interesting timing, I currently have a very similar patch lying around though with also exporting pci_dev_lock(). I'm planning to use that for upcoming support of automatic PCI devices recovery on s390x following the Documentation/PCI/pci-error-recovery.rst recovery flow. There too exprting these functions would make the code simpler to grok in my opinion. So if Bjorn accepts this there could soon be another user, not sure if one would want to then already export pci_dev_lock() too or wait until my patches so it's not exported without users. Best regards, Niklas Schnelle
Please update the subject line to match the convention: PCI: Export pci_dev_trylock() and pci_dev_unlock() On Mon, Jun 21, 2021 at 05:03:09PM -0700, Luis Chamberlain wrote: > Other places in the kernel use this form, and so just > provide a common path for it. > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> With tweaks mentioned here: Acked-by: Bjorn Helgaas <bhelgaas@google.com> > --- > drivers/pci/pci.c | 6 ++++-- > include/linux/pci.h | 3 +++ > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index f09821af1d2e..b1d9bb3f5ae2 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -5027,7 +5027,7 @@ static void pci_dev_lock(struct pci_dev *dev) > } > > /* Return 1 on successful lock, 0 on contention */ > -static int pci_dev_trylock(struct pci_dev *dev) > +int pci_dev_trylock(struct pci_dev *dev) > { > if (pci_cfg_access_trylock(dev)) { > if (device_trylock(&dev->dev)) > @@ -5037,12 +5037,14 @@ static int pci_dev_trylock(struct pci_dev *dev) > > return 0; > } > +EXPORT_SYMBOL_GPL(pci_dev_trylock); > > -static void pci_dev_unlock(struct pci_dev *dev) > +void pci_dev_unlock(struct pci_dev *dev) > { > device_unlock(&dev->dev); > pci_cfg_access_unlock(dev); > } > +EXPORT_SYMBOL_GPL(pci_dev_unlock); > > static void pci_dev_save_and_disable(struct pci_dev *dev) > { > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 6248e044dd29..c55368f58965 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -1353,6 +1353,9 @@ int devm_request_pci_bus_resources(struct device *dev, > /* Temporary until new and working PCI SBR API in place */ > int pci_bridge_secondary_bus_reset(struct pci_dev *dev); > > +int pci_dev_trylock(struct pci_dev *dev); > +void pci_dev_unlock(struct pci_dev *dev); Move next to pci_cfg_access_lock(), which seems a little more related. > #define pci_bus_for_each_resource(bus, res, i) \ > for (i = 0; \ > (res = pci_bus_resource_n(bus, i)) || i < PCI_BRIDGE_RESOURCE_NUM; \ > -- > 2.30.2 >
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index f09821af1d2e..b1d9bb3f5ae2 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5027,7 +5027,7 @@ static void pci_dev_lock(struct pci_dev *dev) } /* Return 1 on successful lock, 0 on contention */ -static int pci_dev_trylock(struct pci_dev *dev) +int pci_dev_trylock(struct pci_dev *dev) { if (pci_cfg_access_trylock(dev)) { if (device_trylock(&dev->dev)) @@ -5037,12 +5037,14 @@ static int pci_dev_trylock(struct pci_dev *dev) return 0; } +EXPORT_SYMBOL_GPL(pci_dev_trylock); -static void pci_dev_unlock(struct pci_dev *dev) +void pci_dev_unlock(struct pci_dev *dev) { device_unlock(&dev->dev); pci_cfg_access_unlock(dev); } +EXPORT_SYMBOL_GPL(pci_dev_unlock); static void pci_dev_save_and_disable(struct pci_dev *dev) { diff --git a/include/linux/pci.h b/include/linux/pci.h index 6248e044dd29..c55368f58965 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1353,6 +1353,9 @@ int devm_request_pci_bus_resources(struct device *dev, /* Temporary until new and working PCI SBR API in place */ int pci_bridge_secondary_bus_reset(struct pci_dev *dev); +int pci_dev_trylock(struct pci_dev *dev); +void pci_dev_unlock(struct pci_dev *dev); + #define pci_bus_for_each_resource(bus, res, i) \ for (i = 0; \ (res = pci_bus_resource_n(bus, i)) || i < PCI_BRIDGE_RESOURCE_NUM; \
Other places in the kernel use this form, and so just provide a common path for it. Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> --- drivers/pci/pci.c | 6 ++++-- include/linux/pci.h | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-)