On Tue, Jul 20, 2021 at 05:01:45PM +0200, Niklas Schnelle wrote: > The helper function pci_dev_is_added() from drivers/pci/pci.h is used in > PCI arch code of both s390 and powerpc leading to awkward relative > includes. Move it to the global include/linux/pci.h and get rid of these > includes just for that one function. I agree the includes are awkward. But the arch code *using* pci_dev_is_added() seems awkward, too. AFAICS, in powerpc, pci_dev_is_added() is only used by pnv_pci_ioda_fixup_iov() and pseries_pci_fixup_iov_resources(). Those are only called from pcibios_add_device(), which is only called from pci_device_add(). Is it even possible for pci_dev_is_added() to be true in that path? s390 uses pci_dev_is_added() in recover_store(), but I don't know what that is (looks like a sysfs file, but it's not documented) or why s390 is the only arch that does this. Maybe we should make powerpc and s390 less special? > Signed-off-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx> > --- > Since v1 (and bad v2): > - Fixed accidental removal of PCI_DPC_RECOVERED, PCI_DPC_RECOVERING > defines and also move these to include/linux/pci.h > > arch/powerpc/platforms/powernv/pci-sriov.c | 3 --- > arch/powerpc/platforms/pseries/setup.c | 1 - > arch/s390/pci/pci_sysfs.c | 2 -- > drivers/pci/hotplug/acpiphp_glue.c | 1 - > drivers/pci/pci.h | 15 --------------- > include/linux/pci.h | 15 +++++++++++++++ > 6 files changed, 15 insertions(+), 22 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/pci-sriov.c b/arch/powerpc/platforms/powernv/pci-sriov.c > index 28aac933a439..2e0ca5451e85 100644 > --- a/arch/powerpc/platforms/powernv/pci-sriov.c > +++ b/arch/powerpc/platforms/powernv/pci-sriov.c > @@ -9,9 +9,6 @@ > > #include "pci.h" > > -/* for pci_dev_is_added() */ > -#include "../../../../drivers/pci/pci.h" > - > /* > * The majority of the complexity in supporting SR-IOV on PowerNV comes from > * the need to put the MMIO space for each VF into a separate PE. Internally > diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c > index 631a0d57b6cd..17585ec9f955 100644 > --- a/arch/powerpc/platforms/pseries/setup.c > +++ b/arch/powerpc/platforms/pseries/setup.c > @@ -74,7 +74,6 @@ > #include <asm/hvconsole.h> > > #include "pseries.h" > -#include "../../../../drivers/pci/pci.h" > > DEFINE_STATIC_KEY_FALSE(shared_processor); > EXPORT_SYMBOL_GPL(shared_processor); > diff --git a/arch/s390/pci/pci_sysfs.c b/arch/s390/pci/pci_sysfs.c > index 6e2450c2b9c1..8dbe54ef8f8e 100644 > --- a/arch/s390/pci/pci_sysfs.c > +++ b/arch/s390/pci/pci_sysfs.c > @@ -13,8 +13,6 @@ > #include <linux/stat.h> > #include <linux/pci.h> > > -#include "../../../drivers/pci/pci.h" > - > #include <asm/sclp.h> > > #define zpci_attr(name, fmt, member) \ > diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c > index f031302ad401..4cb963f88183 100644 > --- a/drivers/pci/hotplug/acpiphp_glue.c > +++ b/drivers/pci/hotplug/acpiphp_glue.c > @@ -38,7 +38,6 @@ > #include <linux/slab.h> > #include <linux/acpi.h> > > -#include "../pci.h" > #include "acpiphp.h" > > static LIST_HEAD(bridge_list); > diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h > index 93dcdd431072..a159cd0f6f05 100644 > --- a/drivers/pci/pci.h > +++ b/drivers/pci/pci.h > @@ -383,21 +383,6 @@ static inline bool pci_dev_is_disconnected(const struct pci_dev *dev) > return dev->error_state == pci_channel_io_perm_failure; > } > > -/* pci_dev priv_flags */ > -#define PCI_DEV_ADDED 0 > -#define PCI_DPC_RECOVERED 1 > -#define PCI_DPC_RECOVERING 2 > - > -static inline void pci_dev_assign_added(struct pci_dev *dev, bool added) > -{ > - assign_bit(PCI_DEV_ADDED, &dev->priv_flags, added); > -} > - > -static inline bool pci_dev_is_added(const struct pci_dev *dev) > -{ > - return test_bit(PCI_DEV_ADDED, &dev->priv_flags); > -} > - > #ifdef CONFIG_PCIEAER > #include <linux/aer.h> > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 540b377ca8f6..ea0e23dbc8ec 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -507,6 +507,21 @@ struct pci_dev { > unsigned long priv_flags; /* Private flags for the PCI driver */ > }; > > +/* pci_dev priv_flags */ > +#define PCI_DEV_ADDED 0 > +#define PCI_DPC_RECOVERED 1 > +#define PCI_DPC_RECOVERING 2 > + > +static inline void pci_dev_assign_added(struct pci_dev *dev, bool added) > +{ > + assign_bit(PCI_DEV_ADDED, &dev->priv_flags, added); > +} > + > +static inline bool pci_dev_is_added(const struct pci_dev *dev) > +{ > + return test_bit(PCI_DEV_ADDED, &dev->priv_flags); > +} > + > static inline struct pci_dev *pci_physfn(struct pci_dev *dev) > { > #ifdef CONFIG_PCI_IOV > -- > 2.25.1 >