[PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function
Bjorn Helgaas
bhelgaas at google.com
Tue May 27 15:34:36 PDT 2014
On Tue, May 06, 2014 at 11:29:52AM +0800, Hanjun Guo wrote:
> pcibios_penalize_isa_irq() is only useful for x86 now, and
> legacy ISA is not used by some architectures, so make
> pcibios_penalize_isa_irq() as __weak function to simplify
> the code, this will prevent new platform from introducing
> dummy stub function for pcibios_penalize_isa_irq() too.
>
> Signed-off-by: Hanjun Guo <hanjun.guo at linaro.org>
Applied with Arnd's ack to pci/misc for v3.16, thanks.
> ---
> arch/alpha/include/asm/pci.h | 5 -----
> arch/arm/include/asm/pci.h | 5 -----
> arch/blackfin/include/asm/pci.h | 5 -----
> arch/cris/include/asm/pci.h | 1 -
> arch/frv/include/asm/pci.h | 2 --
> arch/frv/mb93090-mb00/pci-irq.c | 4 ----
> arch/ia64/include/asm/pci.h | 6 ------
> arch/microblaze/include/asm/pci.h | 5 -----
> arch/mips/include/asm/pci.h | 5 -----
> arch/mn10300/include/asm/pci.h | 1 -
> arch/mn10300/unit-asb2305/pci-irq.c | 4 ----
> arch/parisc/include/asm/pci.h | 5 -----
> arch/powerpc/include/asm/pci.h | 5 -----
> arch/sh/include/asm/pci.h | 5 -----
> arch/sparc/include/asm/pci_32.h | 5 -----
> arch/sparc/include/asm/pci_64.h | 5 -----
> arch/unicore32/include/asm/pci.h | 5 -----
> arch/x86/include/asm/pci.h | 1 -
> arch/xtensa/include/asm/pci.h | 5 -----
> drivers/pci/pci.c | 11 +++++++++++
> include/linux/pci.h | 1 +
> 21 files changed, 12 insertions(+), 79 deletions(-)
>
> diff --git a/arch/alpha/include/asm/pci.h b/arch/alpha/include/asm/pci.h
> index d01afb7..f7f680f 100644
> --- a/arch/alpha/include/asm/pci.h
> +++ b/arch/alpha/include/asm/pci.h
> @@ -59,11 +59,6 @@ struct pci_controller {
>
> extern void pcibios_set_master(struct pci_dev *dev);
>
> -extern inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /* IOMMU controls. */
>
> /* The PCI address space does not equal the physical memory address space.
> diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
> index 680a83e..7e95d85 100644
> --- a/arch/arm/include/asm/pci.h
> +++ b/arch/arm/include/asm/pci.h
> @@ -31,11 +31,6 @@ static inline int pci_proc_domain(struct pci_bus *bus)
> }
> #endif /* CONFIG_PCI_DOMAINS */
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /*
> * The PCI address space does equal the physical memory address space.
> * The networking and block device layers use this boolean for bounce
> diff --git a/arch/blackfin/include/asm/pci.h b/arch/blackfin/include/asm/pci.h
> index 74352c4..c737909 100644
> --- a/arch/blackfin/include/asm/pci.h
> +++ b/arch/blackfin/include/asm/pci.h
> @@ -10,9 +10,4 @@
> #define PCIBIOS_MIN_IO 0x00001000
> #define PCIBIOS_MIN_MEM 0x10000000
>
> -static inline void pcibios_penalize_isa_irq(int irq)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #endif /* _ASM_BFIN_PCI_H */
> diff --git a/arch/cris/include/asm/pci.h b/arch/cris/include/asm/pci.h
> index f666734..cc2399c 100644
> --- a/arch/cris/include/asm/pci.h
> +++ b/arch/cris/include/asm/pci.h
> @@ -20,7 +20,6 @@ void pcibios_config_init(void);
> struct pci_bus * pcibios_scan_root(int bus);
>
> void pcibios_set_master(struct pci_dev *dev);
> -void pcibios_penalize_isa_irq(int irq);
> struct irq_routing_table *pcibios_get_irq_routing_table(void);
> int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
>
> diff --git a/arch/frv/include/asm/pci.h b/arch/frv/include/asm/pci.h
> index ef03baf..2035a4d 100644
> --- a/arch/frv/include/asm/pci.h
> +++ b/arch/frv/include/asm/pci.h
> @@ -24,8 +24,6 @@ struct pci_dev;
>
> extern void pcibios_set_master(struct pci_dev *dev);
>
> -extern void pcibios_penalize_isa_irq(int irq);
> -
> #ifdef CONFIG_MMU
> extern void *consistent_alloc(gfp_t gfp, size_t size, dma_addr_t *dma_handle);
> extern void consistent_free(void *vaddr);
> diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
> index c677b9d..1c35c93 100644
> --- a/arch/frv/mb93090-mb00/pci-irq.c
> +++ b/arch/frv/mb93090-mb00/pci-irq.c
> @@ -55,10 +55,6 @@ void __init pcibios_fixup_irqs(void)
> }
> }
>
> -void __init pcibios_penalize_isa_irq(int irq)
> -{
> -}
> -
> void pcibios_enable_irq(struct pci_dev *dev)
> {
> pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
> diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h
> index 7d41cc0..52af5ed 100644
> --- a/arch/ia64/include/asm/pci.h
> +++ b/arch/ia64/include/asm/pci.h
> @@ -50,12 +50,6 @@ struct pci_dev;
> extern unsigned long ia64_max_iommu_merge_mask;
> #define PCI_DMA_BUS_IS_PHYS (ia64_max_iommu_merge_mask == ~0UL)
>
> -static inline void
> -pcibios_penalize_isa_irq (int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #include <asm-generic/pci-dma-compat.h>
>
> #ifdef CONFIG_PCI
> diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
> index 935f9be..3355240 100644
> --- a/arch/microblaze/include/asm/pci.h
> +++ b/arch/microblaze/include/asm/pci.h
> @@ -44,11 +44,6 @@ struct pci_dev;
> */
> #define pcibios_assign_all_busses() 0
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #ifdef CONFIG_PCI
> extern void set_pci_dma_ops(struct dma_map_ops *dma_ops);
> extern struct dma_map_ops *get_pci_dma_ops(void);
> diff --git a/arch/mips/include/asm/pci.h b/arch/mips/include/asm/pci.h
> index 12d6842..974b0e3 100644
> --- a/arch/mips/include/asm/pci.h
> +++ b/arch/mips/include/asm/pci.h
> @@ -73,11 +73,6 @@ extern unsigned long PCIBIOS_MIN_MEM;
>
> extern void pcibios_set_master(struct pci_dev *dev);
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #define HAVE_PCI_MMAP
>
> extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
> diff --git a/arch/mn10300/include/asm/pci.h b/arch/mn10300/include/asm/pci.h
> index 1663238..5f70af2 100644
> --- a/arch/mn10300/include/asm/pci.h
> +++ b/arch/mn10300/include/asm/pci.h
> @@ -48,7 +48,6 @@ extern void unit_pci_init(void);
> #define PCIBIOS_MIN_MEM 0xB8000000
>
> void pcibios_set_master(struct pci_dev *dev);
> -void pcibios_penalize_isa_irq(int irq);
>
> /* Dynamic DMA mapping stuff.
> * i386 has everything mapped statically.
> diff --git a/arch/mn10300/unit-asb2305/pci-irq.c b/arch/mn10300/unit-asb2305/pci-irq.c
> index 77439da..fcb28ce 100644
> --- a/arch/mn10300/unit-asb2305/pci-irq.c
> +++ b/arch/mn10300/unit-asb2305/pci-irq.c
> @@ -40,10 +40,6 @@ void __init pcibios_fixup_irqs(void)
> }
> }
>
> -void __init pcibios_penalize_isa_irq(int irq)
> -{
> -}
> -
> void pcibios_enable_irq(struct pci_dev *dev)
> {
> pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
> diff --git a/arch/parisc/include/asm/pci.h b/arch/parisc/include/asm/pci.h
> index 4651540..20df2b0 100644
> --- a/arch/parisc/include/asm/pci.h
> +++ b/arch/parisc/include/asm/pci.h
> @@ -215,11 +215,6 @@ static inline void pci_dma_burst_advice(struct pci_dev *pdev,
> }
> #endif
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't need to penalize isa irq's */
> -}
> -
> static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
> {
> return channel ? 15 : 14;
> diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
> index 95145a1..1b0739b 100644
> --- a/arch/powerpc/include/asm/pci.h
> +++ b/arch/powerpc/include/asm/pci.h
> @@ -46,11 +46,6 @@ struct pci_dev;
> #define pcibios_assign_all_busses() \
> (pci_has_flag(PCI_REASSIGN_ALL_BUS))
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #define HAVE_ARCH_PCI_GET_LEGACY_IDE_IRQ
> static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel)
> {
> diff --git a/arch/sh/include/asm/pci.h b/arch/sh/include/asm/pci.h
> index bff96c2..5b45115 100644
> --- a/arch/sh/include/asm/pci.h
> +++ b/arch/sh/include/asm/pci.h
> @@ -70,11 +70,6 @@ extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
> enum pci_mmap_state mmap_state, int write_combine);
> extern void pcibios_set_master(struct pci_dev *dev);
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /* Dynamic DMA mapping stuff.
> * SuperH has everything mapped statically like x86.
> */
> diff --git a/arch/sparc/include/asm/pci_32.h b/arch/sparc/include/asm/pci_32.h
> index dc50329..53e9b49 100644
> --- a/arch/sparc/include/asm/pci_32.h
> +++ b/arch/sparc/include/asm/pci_32.h
> @@ -16,11 +16,6 @@
>
> #define PCI_IRQ_NONE 0xffffffff
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /* Dynamic DMA mapping stuff.
> */
> #define PCI_DMA_BUS_IS_PHYS (0)
> diff --git a/arch/sparc/include/asm/pci_64.h b/arch/sparc/include/asm/pci_64.h
> index 1633b71..c6c7396 100644
> --- a/arch/sparc/include/asm/pci_64.h
> +++ b/arch/sparc/include/asm/pci_64.h
> @@ -16,11 +16,6 @@
>
> #define PCI_IRQ_NONE 0xffffffff
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /* The PCI address space does not equal the physical memory
> * address space. The networking and block device layers use
> * this boolean for bounce buffer decisions.
> diff --git a/arch/unicore32/include/asm/pci.h b/arch/unicore32/include/asm/pci.h
> index f5e108f..654407e 100644
> --- a/arch/unicore32/include/asm/pci.h
> +++ b/arch/unicore32/include/asm/pci.h
> @@ -18,11 +18,6 @@
> #include <asm-generic/pci.h>
> #include <mach/hardware.h> /* for PCIBIOS_MIN_* */
>
> -static inline void pcibios_penalize_isa_irq(int irq, int active)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> #ifdef CONFIG_PCI
> static inline void pci_dma_burst_advice(struct pci_dev *pdev,
> enum pci_dma_burst_strategy *strat,
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 96ae4f4..0892ea0 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -68,7 +68,6 @@ void pcibios_config_init(void);
> void pcibios_scan_root(int bus);
>
> void pcibios_set_master(struct pci_dev *dev);
> -void pcibios_penalize_isa_irq(int irq, int active);
> struct irq_routing_table *pcibios_get_irq_routing_table(void);
> int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
>
> diff --git a/arch/xtensa/include/asm/pci.h b/arch/xtensa/include/asm/pci.h
> index 614be03..5d52dc4 100644
> --- a/arch/xtensa/include/asm/pci.h
> +++ b/arch/xtensa/include/asm/pci.h
> @@ -22,11 +22,6 @@
>
> extern struct pci_controller* pcibios_alloc_controller(void);
>
> -static inline void pcibios_penalize_isa_irq(int irq)
> -{
> - /* We don't do dynamic PCI IRQ allocation */
> -}
> -
> /* Assume some values. (We should revise them, if necessary) */
>
> #define PCIBIOS_MIN_IO 0x2000
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 7325d43..57c330f 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -1468,6 +1468,17 @@ void __weak pcibios_release_device(struct pci_dev *dev) {}
> */
> void __weak pcibios_disable_device (struct pci_dev *dev) {}
>
> +/**
> + * pcibios_penalize_isa_irq - provide arch specific hooks when penalize isa irq
> + * @irq: isa irq to penalize
> + * @active: irq active or not
> + *
> + * Permits the platform to provide architecture specific functionality when
> + * penalize isa irq. This is the default implementation. Architecture
> + * implementations can override this.
> + */
> +void __weak pcibios_penalize_isa_irq(int irq, int active) {}
> +
> static void do_pci_disable_device(struct pci_dev *dev)
> {
> u16 pci_command;
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index aab57b4..da8f7d5 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1579,6 +1579,7 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev,
> enum pcie_reset_state state);
> int pcibios_add_device(struct pci_dev *dev);
> void pcibios_release_device(struct pci_dev *dev);
> +void pcibios_penalize_isa_irq(int irq, int active);
>
> #ifdef CONFIG_HIBERNATE_CALLBACKS
> extern struct dev_pm_ops pcibios_pm_ops;
> --
> 1.7.9.5
>
More information about the linux-arm-kernel
mailing list