diff options
| -rw-r--r-- | arch/x86/include/asm/pci_x86.h | 3 | ||||
| -rw-r--r-- | arch/x86/include/asm/x86_init.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/x86_init.c | 2 | ||||
| -rw-r--r-- | arch/x86/pci/irq.c | 4 |
4 files changed, 9 insertions, 2 deletions
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h index 46511c5be456..6e69edfbf074 100644 --- a/arch/x86/include/asm/pci_x86.h +++ b/arch/x86/include/asm/pci_x86.h | |||
| @@ -113,6 +113,7 @@ extern int __init pci_acpi_init(void); | |||
| 113 | extern void __init pcibios_irq_init(void); | 113 | extern void __init pcibios_irq_init(void); |
| 114 | extern int __init pcibios_init(void); | 114 | extern int __init pcibios_init(void); |
| 115 | extern int pci_legacy_init(void); | 115 | extern int pci_legacy_init(void); |
| 116 | extern void pcibios_fixup_irqs(void); | ||
| 116 | 117 | ||
| 117 | /* pci-mmconfig.c */ | 118 | /* pci-mmconfig.c */ |
| 118 | 119 | ||
| @@ -188,7 +189,9 @@ static inline void mmio_config_writel(void __iomem *pos, u32 val) | |||
| 188 | # define x86_default_pci_init pci_legacy_init | 189 | # define x86_default_pci_init pci_legacy_init |
| 189 | # endif | 190 | # endif |
| 190 | # define x86_default_pci_init_irq pcibios_irq_init | 191 | # define x86_default_pci_init_irq pcibios_irq_init |
| 192 | # define x86_default_pci_fixup_irqs pcibios_fixup_irqs | ||
| 191 | #else | 193 | #else |
| 192 | # define x86_default_pci_init NULL | 194 | # define x86_default_pci_init NULL |
| 193 | # define x86_default_pci_init_irq NULL | 195 | # define x86_default_pci_init_irq NULL |
| 196 | # define x86_default_pci_fixup_irqs NULL | ||
| 194 | #endif | 197 | #endif |
diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index 34f61cd56f3b..8ef56f21f9f0 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h | |||
| @@ -102,10 +102,12 @@ struct x86_init_iommu { | |||
| 102 | * struct x86_init_pci - platform specific pci init functions | 102 | * struct x86_init_pci - platform specific pci init functions |
| 103 | * @init: platform specific pci init | 103 | * @init: platform specific pci init |
| 104 | * @init_irq: platform specific pci irq init | 104 | * @init_irq: platform specific pci irq init |
| 105 | * @fixup_irqs: platform specific pci irq fixup | ||
| 105 | */ | 106 | */ |
| 106 | struct x86_init_pci { | 107 | struct x86_init_pci { |
| 107 | int (*init)(void); | 108 | int (*init)(void); |
| 108 | void (*init_irq)(void); | 109 | void (*init_irq)(void); |
| 110 | void (*fixup_irqs)(void); | ||
| 109 | }; | 111 | }; |
| 110 | 112 | ||
| 111 | /** | 113 | /** |
diff --git a/arch/x86/kernel/x86_init.c b/arch/x86/kernel/x86_init.c index 203f26fb7f33..1817cd7a03fa 100644 --- a/arch/x86/kernel/x86_init.c +++ b/arch/x86/kernel/x86_init.c | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | * For licencing details see kernel-base/COPYING | 4 | * For licencing details see kernel-base/COPYING |
| 5 | */ | 5 | */ |
| 6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
| 7 | #include <linux/ioport.h> | ||
| 7 | 8 | ||
| 8 | #include <asm/bios_ebda.h> | 9 | #include <asm/bios_ebda.h> |
| 9 | #include <asm/paravirt.h> | 10 | #include <asm/paravirt.h> |
| @@ -75,6 +76,7 @@ struct x86_init_ops x86_init __initdata = { | |||
| 75 | .pci = { | 76 | .pci = { |
| 76 | .init = x86_default_pci_init, | 77 | .init = x86_default_pci_init, |
| 77 | .init_irq = x86_default_pci_init_irq, | 78 | .init_irq = x86_default_pci_init_irq, |
| 79 | .fixup_irqs = x86_default_pci_fixup_irqs, | ||
| 78 | }, | 80 | }, |
| 79 | }; | 81 | }; |
| 80 | 82 | ||
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 0f40ff20dd67..a60deb6e6696 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c | |||
| @@ -1016,7 +1016,7 @@ static int pcibios_lookup_irq(struct pci_dev *dev, int assign) | |||
| 1016 | return 1; | 1016 | return 1; |
| 1017 | } | 1017 | } |
| 1018 | 1018 | ||
| 1019 | static void __init pcibios_fixup_irqs(void) | 1019 | void __init pcibios_fixup_irqs(void) |
| 1020 | { | 1020 | { |
| 1021 | struct pci_dev *dev = NULL; | 1021 | struct pci_dev *dev = NULL; |
| 1022 | u8 pin; | 1022 | u8 pin; |
| @@ -1142,7 +1142,7 @@ void __init pcibios_irq_init(void) | |||
| 1142 | pirq_table = NULL; | 1142 | pirq_table = NULL; |
| 1143 | } | 1143 | } |
| 1144 | 1144 | ||
| 1145 | pcibios_fixup_irqs(); | 1145 | x86_init.pci.fixup_irqs(); |
| 1146 | 1146 | ||
| 1147 | if (io_apic_assign_pci_irqs && pci_routeirq) { | 1147 | if (io_apic_assign_pci_irqs && pci_routeirq) { |
| 1148 | struct pci_dev *dev = NULL; | 1148 | struct pci_dev *dev = NULL; |
