Message ID | 20220717033453.2896843-2-shorne@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Updates for asm-generic/pci.h | expand |
Hi Stafford, On Sun, Jul 17, 2022 at 5:35 AM Stafford Horne <shorne@gmail.com> wrote: > The generic pci.h header now only provides a definition of > pci_get_legacy_ide_irq which is used by architectures that support PNP. > Of the architectures that use asm-generic/pci.h this is only x86. > > This patch removes the old pci.h in order to make room for a new > pci.h to be used by arm64, riscv, openrisc, etc. > > The existing code in pci.h is moved out to x86. On other architectures > we clean up any outstanding references. > > Suggested-by: Arnd Bergmann <arnd@arndb.de> > Link: https://lore.kernel.org/lkml/CAK8P3a0JmPeczfmMBE__vn=Jbvf=nkbpVaZCycyv40pZNCJJXQ@mail.gmail.com/ > Signed-off-by: Stafford Horne <shorne@gmail.com> Thanks for your patch! > --- a/arch/m68k/include/asm/pci.h > +++ b/arch/m68k/include/asm/pci.h > @@ -2,11 +2,14 @@ > #ifndef _ASM_M68K_PCI_H > #define _ASM_M68K_PCI_H > > -#include <asm-generic/pci.h> > - > #define pcibios_assign_all_busses() 1 > > #define PCIBIOS_MIN_IO 0x00000100 > #define PCIBIOS_MIN_MEM 0x02000000 > > +static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) > +{ > + return channel ? 15 : 14; > +} > + I thought you were not going to add this? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Sun, Jul 17, 2022 at 12:34:52PM +0900, Stafford Horne wrote: > The generic pci.h header now only provides a definition of > pci_get_legacy_ide_irq which is used by architectures that support PNP. > Of the architectures that use asm-generic/pci.h this is only x86. Please move this into a separate header, ike legacy-ide.h. It doens't have anyting to do with actual PCI support.
On Mon, Jul 18, 2022 at 6:33 AM Christoph Hellwig <hch@infradead.org> wrote: > > On Sun, Jul 17, 2022 at 12:34:52PM +0900, Stafford Horne wrote: > > The generic pci.h header now only provides a definition of > > pci_get_legacy_ide_irq which is used by architectures that support PNP. > > Of the architectures that use asm-generic/pci.h this is only x86. > > Please move this into a separate header, ike legacy-ide.h. It doens't > have anyting to do with actual PCI support. It looks like asm/libata-portmap.h is meant to have this information already, and this is what libata uses, while drivers/ide used the pci_get_legacy_ide_irq() function for the same purpose. Only ia64 and powerpc have interesting definitions of both, and they return the same thing, so I think this is sufficient to remove the last caller: diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c index 2fa0f7d55259..d7a6250589d6 100644 --- a/drivers/pnp/resource.c +++ b/drivers/pnp/resource.c @@ -16,7 +16,7 @@ #include <asm/io.h> #include <asm/dma.h> #include <asm/irq.h> -#include <linux/pci.h> +#include <linux/libata.h> #include <linux/ioport.h> #include <linux/init.h> @@ -322,8 +322,8 @@ static int pci_dev_uses_irq(struct pnp_dev *pnp, struct pci_dev *pci, * treat the compatibility IRQs as busy. */ if ((progif & 0x5) != 0x5) - if (pci_get_legacy_ide_irq(pci, 0) == irq || - pci_get_legacy_ide_irq(pci, 1) == irq) { + if (ATA_PRIMARY_IRQ(pci) == irq || + ATA_SECONDARY_IRQ(pci) == irq) { pnp_dbg(&pnp->dev, " legacy IDE device %s " "using irq %d\n", pci_name(pci), irq); return 1; This is fine on the architectures that currently return an error from pci_get_legacy_ide_irq() but will change to returning 15/14 instead, because they do not support ISA devices, so pci_dev_uses_irq() will never be called either. Arnd
On Mon, Jul 18, 2022 at 10:40:34AM +0200, Arnd Bergmann wrote: > On Mon, Jul 18, 2022 at 6:33 AM Christoph Hellwig <hch@infradead.org> wrote: > > > > On Sun, Jul 17, 2022 at 12:34:52PM +0900, Stafford Horne wrote: > > > The generic pci.h header now only provides a definition of > > > pci_get_legacy_ide_irq which is used by architectures that support PNP. > > > Of the architectures that use asm-generic/pci.h this is only x86. > > > > Please move this into a separate header, ike legacy-ide.h. It doens't > > have anyting to do with actual PCI support. > > It looks like asm/libata-portmap.h is meant to have this information already, > and this is what libata uses, while drivers/ide used the > pci_get_legacy_ide_irq() > function for the same purpose. > > Only ia64 and powerpc have interesting definitions of both, and they > return the same thing, so I think this is sufficient to remove the last caller: > > diff --git a/drivers/pnp/resource.c b/drivers/pnp/resource.c > index 2fa0f7d55259..d7a6250589d6 100644 > --- a/drivers/pnp/resource.c > +++ b/drivers/pnp/resource.c > @@ -16,7 +16,7 @@ > #include <asm/io.h> > #include <asm/dma.h> > #include <asm/irq.h> > -#include <linux/pci.h> > +#include <linux/libata.h> > #include <linux/ioport.h> > #include <linux/init.h> > > @@ -322,8 +322,8 @@ static int pci_dev_uses_irq(struct pnp_dev *pnp, > struct pci_dev *pci, > * treat the compatibility IRQs as busy. > */ > if ((progif & 0x5) != 0x5) > - if (pci_get_legacy_ide_irq(pci, 0) == irq || > - pci_get_legacy_ide_irq(pci, 1) == irq) { > + if (ATA_PRIMARY_IRQ(pci) == irq || > + ATA_SECONDARY_IRQ(pci) == irq) { > pnp_dbg(&pnp->dev, " legacy IDE device %s " > "using irq %d\n", pci_name(pci), irq); > return 1; > > This is fine on the architectures that currently return an error from > pci_get_legacy_ide_irq() but will change to returning 15/14 instead, > because they do not support ISA devices, so pci_dev_uses_irq() > will never be called either. I like this, I didn't know about the ATA_PRIMARY_IRQ/ATA_SECONDARY_IRQ macro. Let me add this to the series before 1/2. I will keep you as the author via Signed-off-by annotation. -Stafford
diff --git a/arch/alpha/include/asm/pci.h b/arch/alpha/include/asm/pci.h index cf6bc1e64d66..8ac5af0fc4da 100644 --- a/arch/alpha/include/asm/pci.h +++ b/arch/alpha/include/asm/pci.h @@ -56,7 +56,6 @@ struct pci_controller { /* IOMMU controls. */ -/* TODO: integrate with include/asm-generic/pci.h ? */ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) { return channel ? 15 : 14; diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h index 8c163d1d0189..218412d963c2 100644 --- a/arch/ia64/include/asm/pci.h +++ b/arch/ia64/include/asm/pci.h @@ -63,7 +63,6 @@ static inline int pci_proc_domain(struct pci_bus *bus) return (pci_domain_nr(bus) != 0); } -#define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) { return channel ? isa_irq_to_vector(15) : isa_irq_to_vector(14); diff --git a/arch/m68k/include/asm/pci.h b/arch/m68k/include/asm/pci.h index 5a4bc223743b..0c272ff515cc 100644 --- a/arch/m68k/include/asm/pci.h +++ b/arch/m68k/include/asm/pci.h @@ -2,11 +2,14 @@ #ifndef _ASM_M68K_PCI_H #define _ASM_M68K_PCI_H -#include <asm-generic/pci.h> - #define pcibios_assign_all_busses() 1 #define PCIBIOS_MIN_IO 0x00000100 #define PCIBIOS_MIN_MEM 0x02000000 +static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) +{ + return channel ? 15 : 14; +} + #endif /* _ASM_M68K_PCI_H */ diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h index 915d6ee4b40a..f9da506751bb 100644 --- a/arch/powerpc/include/asm/pci.h +++ b/arch/powerpc/include/asm/pci.h @@ -39,7 +39,6 @@ #define pcibios_assign_all_busses() \ (pci_has_flag(PCI_REASSIGN_ALL_BUS)) -#define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) { if (ppc_md.pci_get_legacy_ide_irq) diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h index fdb9745ee998..5889ddcbc374 100644 --- a/arch/s390/include/asm/pci.h +++ b/arch/s390/include/asm/pci.h @@ -6,7 +6,6 @@ #include <linux/mutex.h> #include <linux/iommu.h> #include <linux/pci_hotplug.h> -#include <asm-generic/pci.h> #include <asm/pci_clp.h> #include <asm/pci_debug.h> #include <asm/sclp.h> diff --git a/arch/sparc/include/asm/pci.h b/arch/sparc/include/asm/pci.h index 4deddf430e5d..0c58f65bd172 100644 --- a/arch/sparc/include/asm/pci.h +++ b/arch/sparc/include/asm/pci.h @@ -40,13 +40,4 @@ static inline int pci_proc_domain(struct pci_bus *bus) #define get_pci_unmapped_area get_fb_unmapped_area #endif /* CONFIG_SPARC64 */ -#if defined(CONFIG_SPARC64) || defined(CONFIG_LEON_PCI) -static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) -{ - return PCI_IRQ_NONE; -} -#else -#include <asm-generic/pci.h> -#endif - #endif /* ___ASM_SPARC_PCI_H */ diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index f3fd5928bcbb..7da27f665cfe 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -105,8 +105,10 @@ static inline void early_quirks(void) { } extern void pci_iommu_alloc(void); -/* generic pci stuff */ -#include <asm-generic/pci.h> +static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) +{ + return channel ? 15 : 14; +} #ifdef CONFIG_NUMA /* Returns the node based on pci bus */ diff --git a/arch/xtensa/include/asm/pci.h b/arch/xtensa/include/asm/pci.h index 8e2b48a268db..b56de9635b6c 100644 --- a/arch/xtensa/include/asm/pci.h +++ b/arch/xtensa/include/asm/pci.h @@ -43,7 +43,4 @@ #define ARCH_GENERIC_PCI_MMAP_RESOURCE 1 #define arch_can_pci_mmap_io() 1 -/* Generic PCI */ -#include <asm-generic/pci.h> - #endif /* _XTENSA_PCI_H */ diff --git a/include/asm-generic/pci.h b/include/asm-generic/pci.h deleted file mode 100644 index 6bb3cd3d695a..000000000000 --- a/include/asm-generic/pci.h +++ /dev/null @@ -1,17 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * linux/include/asm-generic/pci.h - * - * Copyright (C) 2003 Russell King - */ -#ifndef _ASM_GENERIC_PCI_H -#define _ASM_GENERIC_PCI_H - -#ifndef HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ -static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) -{ - return channel ? 15 : 14; -} -#endif /* HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ */ - -#endif /* _ASM_GENERIC_PCI_H */
The generic pci.h header now only provides a definition of pci_get_legacy_ide_irq which is used by architectures that support PNP. Of the architectures that use asm-generic/pci.h this is only x86. This patch removes the old pci.h in order to make room for a new pci.h to be used by arm64, riscv, openrisc, etc. The existing code in pci.h is moved out to x86. On other architectures we clean up any outstanding references. Suggested-by: Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/lkml/CAK8P3a0JmPeczfmMBE__vn=Jbvf=nkbpVaZCycyv40pZNCJJXQ@mail.gmail.com/ Signed-off-by: Stafford Horne <shorne@gmail.com> --- arch/alpha/include/asm/pci.h | 1 - arch/ia64/include/asm/pci.h | 1 - arch/m68k/include/asm/pci.h | 7 +++++-- arch/powerpc/include/asm/pci.h | 1 - arch/s390/include/asm/pci.h | 1 - arch/sparc/include/asm/pci.h | 9 --------- arch/x86/include/asm/pci.h | 6 ++++-- arch/xtensa/include/asm/pci.h | 3 --- include/asm-generic/pci.h | 17 ----------------- 9 files changed, 9 insertions(+), 37 deletions(-) delete mode 100644 include/asm-generic/pci.h