Message ID | 20190904122600.GA28660@gondor.apana.org.au (mailing list archive) |
---|---|
State | Mainlined, archived |
Commit | 0d8006ddbe89cbaedef06a8789ddefa1164a3a77 |
Headers | show |
Series | PCI: Add stub pci_irq_vector and others | expand |
On 2019/9/4 20:26, Herbert Xu wrote: > On Wed, Sep 04, 2019 at 05:10:34AM -0700, Ard Biesheuvel wrote: >> >> This is the reason we have so many empty static inline functions in >> header files - it ensures that the symbols are declared even if the >> only invocations are from dead code. > > Does this patch work? It works, Thanks. Tested-by: YueHaibing <yuehaibing@huawei.com> > > ---8<--- > This patch adds stub functions pci_alloc_irq_vectors_affinity and > pci_irq_vector when CONFIG_PCI is off so that drivers can use them > without resorting to ifdefs. > > It also moves the PCI_IRQ_* macros outside of the ifdefs so that > they are always available. > > Fixes: 625f269a5a7a ("crypto: inside-secure - add support for...") > Reported-by: kbuild test robot <lkp@intel.com> > Reported-by: YueHaibing <yuehaibing@huawei.com> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 9e700d9f9f28..74415ee62211 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -925,6 +925,11 @@ enum { > PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, /* Scan all, not just dev 0 */ > }; > > +#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > +#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > +#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > +#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > + > /* These external functions are only available when PCI support is enabled */ > #ifdef CONFIG_PCI > > @@ -1408,11 +1413,6 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus, > int pci_set_vga_state(struct pci_dev *pdev, bool decode, > unsigned int command_bits, u32 flags); > > -#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > -#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > -#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > -#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > - > /* > * Virtual interrupts allow for more interrupts to be allocated > * than the device has interrupts for. These are not programmed > @@ -1517,14 +1517,6 @@ static inline int pci_irq_get_node(struct pci_dev *pdev, int vec) > } > #endif > > -static inline int > -pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > - unsigned int max_vecs, unsigned int flags) > -{ > - return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > - NULL); > -} > - > /** > * pci_irqd_intx_xlate() - Translate PCI INTx value to an IRQ domain hwirq > * @d: the INTx IRQ domain > @@ -1780,8 +1772,29 @@ static inline const struct pci_device_id *pci_match_id(const struct pci_device_i > struct pci_dev *dev) > { return NULL; } > static inline bool pci_ats_disabled(void) { return true; } > + > +static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr) > +{ > + return -EINVAL; > +} > + > +static inline int > +pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags, > + struct irq_affinity *aff_desc) > +{ > + return -ENOSPC; > +} > #endif /* CONFIG_PCI */ > > +static inline int > +pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags) > +{ > + return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > + NULL); > +} > + > #ifdef CONFIG_PCI_ATS > /* Address Translation Service */ > void pci_ats_init(struct pci_dev *dev); >
On Wed, Sep 04, 2019 at 10:26:00PM +1000, Herbert Xu wrote: > On Wed, Sep 04, 2019 at 05:10:34AM -0700, Ard Biesheuvel wrote: > > > > This is the reason we have so many empty static inline functions in > > header files - it ensures that the symbols are declared even if the > > only invocations are from dead code. > > Does this patch work? > > ---8<--- > This patch adds stub functions pci_alloc_irq_vectors_affinity and > pci_irq_vector when CONFIG_PCI is off so that drivers can use them > without resorting to ifdefs. > > It also moves the PCI_IRQ_* macros outside of the ifdefs so that > they are always available. > > Fixes: 625f269a5a7a ("crypto: inside-secure - add support for...") I don't see this commit in Linus' tree yet. I'd like to include the actual reason for this patch in the commit log. I assume it's fixing a build issue, but I'd like to be a little more specific about it. > Reported-by: kbuild test robot <lkp@intel.com> > Reported-by: YueHaibing <yuehaibing@huawei.com> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> > > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 9e700d9f9f28..74415ee62211 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -925,6 +925,11 @@ enum { > PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, /* Scan all, not just dev 0 */ > }; > > +#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > +#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > +#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > +#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > + > /* These external functions are only available when PCI support is enabled */ > #ifdef CONFIG_PCI > > @@ -1408,11 +1413,6 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus, > int pci_set_vga_state(struct pci_dev *pdev, bool decode, > unsigned int command_bits, u32 flags); > > -#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > -#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > -#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > -#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > - > /* > * Virtual interrupts allow for more interrupts to be allocated > * than the device has interrupts for. These are not programmed > @@ -1517,14 +1517,6 @@ static inline int pci_irq_get_node(struct pci_dev *pdev, int vec) > } > #endif > > -static inline int > -pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > - unsigned int max_vecs, unsigned int flags) > -{ > - return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > - NULL); > -} > - > /** > * pci_irqd_intx_xlate() - Translate PCI INTx value to an IRQ domain hwirq > * @d: the INTx IRQ domain > @@ -1780,8 +1772,29 @@ static inline const struct pci_device_id *pci_match_id(const struct pci_device_i > struct pci_dev *dev) > { return NULL; } > static inline bool pci_ats_disabled(void) { return true; } > + > +static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr) > +{ > + return -EINVAL; > +} > + > +static inline int > +pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags, > + struct irq_affinity *aff_desc) > +{ > + return -ENOSPC; > +} > #endif /* CONFIG_PCI */ > > +static inline int > +pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags) > +{ > + return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > + NULL); > +} > + > #ifdef CONFIG_PCI_ATS > /* Address Translation Service */ > void pci_ats_init(struct pci_dev *dev); > -- > Email: Herbert Xu <herbert@gondor.apana.org.au> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
On Thu, Sep 05, 2019 at 04:07:22PM -0500, Bjorn Helgaas wrote: > > > This patch adds stub functions pci_alloc_irq_vectors_affinity and > > pci_irq_vector when CONFIG_PCI is off so that drivers can use them > > without resorting to ifdefs. > > > > It also moves the PCI_IRQ_* macros outside of the ifdefs so that > > they are always available. > > > > Fixes: 625f269a5a7a ("crypto: inside-secure - add support for...") > > I don't see this commit in Linus' tree yet. > > I'd like to include the actual reason for this patch in the commit > log. I assume it's fixing a build issue, but I'd like to be a little > more specific about it. The patch in question is https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git/commit/?id=625f269a5a7a3643771320387e474bd0a61d9654 Thanks,
On Wed, Sep 04, 2019 at 10:26:00PM +1000, Herbert Xu wrote: > On Wed, Sep 04, 2019 at 05:10:34AM -0700, Ard Biesheuvel wrote: > > > > This is the reason we have so many empty static inline functions in > > header files - it ensures that the symbols are declared even if the > > only invocations are from dead code. > > Does this patch work? > > ---8<--- > This patch adds stub functions pci_alloc_irq_vectors_affinity and > pci_irq_vector when CONFIG_PCI is off so that drivers can use them > without resorting to ifdefs. > > It also moves the PCI_IRQ_* macros outside of the ifdefs so that > they are always available. > > Fixes: 625f269a5a7a ("crypto: inside-secure - add support for...") > Reported-by: kbuild test robot <lkp@intel.com> > Reported-by: YueHaibing <yuehaibing@huawei.com> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Since you've already sent your crypto pull request for v5.4, would you like me to include this in mine? If you'd rather send it yourself, I'd prefer: PCI: Add pci_irq_vector() and other stubs when !CONFIG_PCI Add stub functions pci_alloc_irq_vectors_affinity() and pci_irq_vector() when CONFIG_PCI is off so drivers can use them without resorting to ifdefs. Also move the PCI_IRQ_* macros outside of the ifdefs so they are always available. Acked-by: Bjorn Helgaas <bhelgaas@google.com> > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 9e700d9f9f28..74415ee62211 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -925,6 +925,11 @@ enum { > PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, /* Scan all, not just dev 0 */ > }; > > +#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > +#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > +#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > +#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > + > /* These external functions are only available when PCI support is enabled */ > #ifdef CONFIG_PCI > > @@ -1408,11 +1413,6 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus, > int pci_set_vga_state(struct pci_dev *pdev, bool decode, > unsigned int command_bits, u32 flags); > > -#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ > -#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ > -#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ > -#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ > - > /* > * Virtual interrupts allow for more interrupts to be allocated > * than the device has interrupts for. These are not programmed > @@ -1517,14 +1517,6 @@ static inline int pci_irq_get_node(struct pci_dev *pdev, int vec) > } > #endif > > -static inline int > -pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > - unsigned int max_vecs, unsigned int flags) > -{ > - return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > - NULL); > -} > - > /** > * pci_irqd_intx_xlate() - Translate PCI INTx value to an IRQ domain hwirq > * @d: the INTx IRQ domain > @@ -1780,8 +1772,29 @@ static inline const struct pci_device_id *pci_match_id(const struct pci_device_i > struct pci_dev *dev) > { return NULL; } > static inline bool pci_ats_disabled(void) { return true; } > + > +static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr) > +{ > + return -EINVAL; > +} > + > +static inline int > +pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags, > + struct irq_affinity *aff_desc) > +{ > + return -ENOSPC; > +} > #endif /* CONFIG_PCI */ > > +static inline int > +pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, > + unsigned int max_vecs, unsigned int flags) > +{ > + return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, > + NULL); > +} > + > #ifdef CONFIG_PCI_ATS > /* Address Translation Service */ > void pci_ats_init(struct pci_dev *dev); > -- > Email: Herbert Xu <herbert@gondor.apana.org.au> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
On Fri, Sep 20, 2019 at 02:42:16PM -0500, Bjorn Helgaas wrote: > On Wed, Sep 04, 2019 at 10:26:00PM +1000, Herbert Xu wrote: > > On Wed, Sep 04, 2019 at 05:10:34AM -0700, Ard Biesheuvel wrote: > > > > > > This is the reason we have so many empty static inline functions in > > > header files - it ensures that the symbols are declared even if the > > > only invocations are from dead code. > > > > Does this patch work? > > > > ---8<--- > > This patch adds stub functions pci_alloc_irq_vectors_affinity and > > pci_irq_vector when CONFIG_PCI is off so that drivers can use them > > without resorting to ifdefs. > > > > It also moves the PCI_IRQ_* macros outside of the ifdefs so that > > they are always available. > > > > Fixes: 625f269a5a7a ("crypto: inside-secure - add support for...") > > Reported-by: kbuild test robot <lkp@intel.com> > > Reported-by: YueHaibing <yuehaibing@huawei.com> > > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> > > Since you've already sent your crypto pull request for v5.4, would you > like me to include this in mine? That would be great. Thanks!
diff --git a/include/linux/pci.h b/include/linux/pci.h index 9e700d9f9f28..74415ee62211 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -925,6 +925,11 @@ enum { PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, /* Scan all, not just dev 0 */ }; +#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ +#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ +#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ +#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ + /* These external functions are only available when PCI support is enabled */ #ifdef CONFIG_PCI @@ -1408,11 +1413,6 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus, int pci_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); -#define PCI_IRQ_LEGACY (1 << 0) /* Allow legacy interrupts */ -#define PCI_IRQ_MSI (1 << 1) /* Allow MSI interrupts */ -#define PCI_IRQ_MSIX (1 << 2) /* Allow MSI-X interrupts */ -#define PCI_IRQ_AFFINITY (1 << 3) /* Auto-assign affinity */ - /* * Virtual interrupts allow for more interrupts to be allocated * than the device has interrupts for. These are not programmed @@ -1517,14 +1517,6 @@ static inline int pci_irq_get_node(struct pci_dev *pdev, int vec) } #endif -static inline int -pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, - unsigned int max_vecs, unsigned int flags) -{ - return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, - NULL); -} - /** * pci_irqd_intx_xlate() - Translate PCI INTx value to an IRQ domain hwirq * @d: the INTx IRQ domain @@ -1780,8 +1772,29 @@ static inline const struct pci_device_id *pci_match_id(const struct pci_device_i struct pci_dev *dev) { return NULL; } static inline bool pci_ats_disabled(void) { return true; } + +static inline int pci_irq_vector(struct pci_dev *dev, unsigned int nr) +{ + return -EINVAL; +} + +static inline int +pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, + unsigned int max_vecs, unsigned int flags, + struct irq_affinity *aff_desc) +{ + return -ENOSPC; +} #endif /* CONFIG_PCI */ +static inline int +pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, + unsigned int max_vecs, unsigned int flags) +{ + return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, + NULL); +} + #ifdef CONFIG_PCI_ATS /* Address Translation Service */ void pci_ats_init(struct pci_dev *dev);