* [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function
@ 2014-05-06 3:29 Hanjun Guo
2014-05-06 7:26 ` Arnd Bergmann
2014-05-27 22:34 ` Bjorn Helgaas
0 siblings, 2 replies; 4+ messages in thread
From: Hanjun Guo @ 2014-05-06 3:29 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Arnd Bergmann, Will Deacon, Tony Luck, Yijing Wang,
Thomas Gleixner, linux-pci, x86, linux-ia64, linux-arm-kernel,
linaro-acpi, Hanjun Guo
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@linaro.org>
---
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function
2014-05-06 3:29 [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function Hanjun Guo
@ 2014-05-06 7:26 ` Arnd Bergmann
2014-05-26 9:52 ` Hanjun Guo
2014-05-27 22:34 ` Bjorn Helgaas
1 sibling, 1 reply; 4+ messages in thread
From: Arnd Bergmann @ 2014-05-06 7:26 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Hanjun Guo, Bjorn Helgaas, Tony Luck, linux-ia64, linaro-acpi,
linux-pci, x86, Will Deacon, Yijing Wang, Thomas Gleixner
On Tuesday 06 May 2014 11:29:52 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@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function
2014-05-06 7:26 ` Arnd Bergmann
@ 2014-05-26 9:52 ` Hanjun Guo
0 siblings, 0 replies; 4+ messages in thread
From: Hanjun Guo @ 2014-05-26 9:52 UTC (permalink / raw)
To: Bjorn Helgaas
Cc: Arnd Bergmann, linux-arm-kernel, Tony Luck, linux-ia64,
linaro-acpi, linux-pci, x86, Will Deacon, Yijing Wang,
Thomas Gleixner
On 2014-5-6 15:26, Arnd Bergmann wrote:
> On Tuesday 06 May 2014 11:29:52 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@linaro.org>
>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
Hi Bjorn,
Any comments on this patch?
Thanks
Hanjun
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function
2014-05-06 3:29 [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function Hanjun Guo
2014-05-06 7:26 ` Arnd Bergmann
@ 2014-05-27 22:34 ` Bjorn Helgaas
1 sibling, 0 replies; 4+ messages in thread
From: Bjorn Helgaas @ 2014-05-27 22:34 UTC (permalink / raw)
To: Hanjun Guo
Cc: Arnd Bergmann, Will Deacon, Tony Luck, Yijing Wang,
Thomas Gleixner, linux-pci, x86, linux-ia64, linux-arm-kernel,
linaro-acpi
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@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
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-27 22:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-06 3:29 [PATCH] PCI: Turn pcibios_penalize_isa_irq() into __weak function Hanjun Guo
2014-05-06 7:26 ` Arnd Bergmann
2014-05-26 9:52 ` Hanjun Guo
2014-05-27 22:34 ` Bjorn Helgaas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).