On Tue, Sep 19, 2017 at 03:50:42PM +0100, Lorenzo Pieralisi wrote: > Commit 04c81c7293df ("MIPS: PCI: Replace pci_fixup_irqs() call with host > bridge IRQ mapping hooks") allowed to move the PCI irq fixup to the new > host bridge map/swizzle_irq() hooks mechanism. Those hooks can also be > called after boot completed - with all __init/__initdata/__initconst > sections freed by the kernel - therefore functions called by them (and > the data they refer to) must not be marked as > __init/__initdata/__initconst lest compilation triggers section > mismatches warnings. > > Fix all the boards files map_irq() hooks by simply removing the > respective __init/__initdata/__initconst section markers and by > adding another persistent hook IRQ map for the txx9 board files. > > Fixes: 04c81c7293df ("MIPS: PCI: Replace pci_fixup_irqs() call with host > bridge IRQ mapping hooks") > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Reviewed-by: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Steve French <smfrench@xxxxxxxxx> > Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> Applied to for-linus for v4.14, thanks! > --- > v1->v2: > - Fixed typo in static txx9 map irq hook > - Removed __init from octeon and tx4938 map irq functions > > arch/mips/ath79/pci.c | 12 ++++++------ > arch/mips/pci/fixup-capcella.c | 4 ++-- > arch/mips/pci/fixup-cobalt.c | 8 ++++---- > arch/mips/pci/fixup-emma2rh.c | 4 ++-- > arch/mips/pci/fixup-fuloong2e.c | 2 +- > arch/mips/pci/fixup-ip32.c | 4 ++-- > arch/mips/pci/fixup-jmr3927.c | 2 +- > arch/mips/pci/fixup-lantiq.c | 2 +- > arch/mips/pci/fixup-lemote2f.c | 4 ++-- > arch/mips/pci/fixup-loongson3.c | 2 +- > arch/mips/pci/fixup-malta.c | 4 ++-- > arch/mips/pci/fixup-mpc30x.c | 6 +++--- > arch/mips/pci/fixup-pmcmsp.c | 8 ++++---- > arch/mips/pci/fixup-rbtx4927.c | 2 +- > arch/mips/pci/fixup-rbtx4938.c | 2 +- > arch/mips/pci/fixup-sni.c | 12 ++++++------ > arch/mips/pci/fixup-tb0219.c | 2 +- > arch/mips/pci/fixup-tb0226.c | 2 +- > arch/mips/pci/fixup-tb0287.c | 2 +- > arch/mips/pci/pci-alchemy.c | 2 +- > arch/mips/pci/pci-bcm47xx.c | 2 +- > arch/mips/pci/pci-lasat.c | 2 +- > arch/mips/pci/pci-mt7620.c | 2 +- > arch/mips/pci/pci-octeon.c | 5 ++--- > arch/mips/pci/pci-rt2880.c | 2 +- > arch/mips/pci/pci-rt3883.c | 2 +- > arch/mips/pci/pci-tx4938.c | 2 +- > arch/mips/pci/pci-tx4939.c | 4 ++-- > arch/mips/pci/pci-xlp.c | 2 +- > arch/mips/pci/pci-xlr.c | 2 +- > arch/mips/pci/pcie-octeon.c | 3 +-- > arch/mips/txx9/generic/pci.c | 8 ++++++-- > 32 files changed, 62 insertions(+), 60 deletions(-) > > diff --git a/arch/mips/ath79/pci.c b/arch/mips/ath79/pci.c > index 730c0b0..b816cb4 100644 > --- a/arch/mips/ath79/pci.c > +++ b/arch/mips/ath79/pci.c > @@ -22,10 +22,10 @@ > #include "pci.h" > > static int (*ath79_pci_plat_dev_init)(struct pci_dev *dev); > -static const struct ath79_pci_irq *ath79_pci_irq_map __initdata; > -static unsigned ath79_pci_nr_irqs __initdata; > +static const struct ath79_pci_irq *ath79_pci_irq_map; > +static unsigned ath79_pci_nr_irqs; > > -static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = { > +static const struct ath79_pci_irq ar71xx_pci_irq_map[] = { > { > .slot = 17, > .pin = 1, > @@ -41,7 +41,7 @@ static const struct ath79_pci_irq ar71xx_pci_irq_map[] __initconst = { > } > }; > > -static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = { > +static const struct ath79_pci_irq ar724x_pci_irq_map[] = { > { > .slot = 0, > .pin = 1, > @@ -49,7 +49,7 @@ static const struct ath79_pci_irq ar724x_pci_irq_map[] __initconst = { > } > }; > > -static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = { > +static const struct ath79_pci_irq qca955x_pci_irq_map[] = { > { > .bus = 0, > .slot = 0, > @@ -64,7 +64,7 @@ static const struct ath79_pci_irq qca955x_pci_irq_map[] __initconst = { > }, > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin) > +int pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin) > { > int irq = -1; > int i; > diff --git a/arch/mips/pci/fixup-capcella.c b/arch/mips/pci/fixup-capcella.c > index 1c02f57..b4c263f 100644 > --- a/arch/mips/pci/fixup-capcella.c > +++ b/arch/mips/pci/fixup-capcella.c > @@ -32,13 +32,13 @@ > #define INTC PC104PLUS_INTC_IRQ > #define INTD PC104PLUS_INTD_IRQ > > -static char irq_tab_capcella[][5] __initdata = { > +static char irq_tab_capcella[][5] = { > [11] = { -1, INT1, INT1, INT1, INT1 }, > [12] = { -1, INT2, INT2, INT2, INT2 }, > [14] = { -1, INTA, INTB, INTC, INTD } > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return irq_tab_capcella[slot][pin]; > } > diff --git a/arch/mips/pci/fixup-cobalt.c b/arch/mips/pci/fixup-cobalt.c > index b3ab593..44be65c 100644 > --- a/arch/mips/pci/fixup-cobalt.c > +++ b/arch/mips/pci/fixup-cobalt.c > @@ -147,7 +147,7 @@ static void qube_raq_via_board_id_fixup(struct pci_dev *dev) > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_0, > qube_raq_via_board_id_fixup); > > -static char irq_tab_qube1[] __initdata = { > +static char irq_tab_qube1[] = { > [COBALT_PCICONF_CPU] = 0, > [COBALT_PCICONF_ETH0] = QUBE1_ETH0_IRQ, > [COBALT_PCICONF_RAQSCSI] = SCSI_IRQ, > @@ -156,7 +156,7 @@ static char irq_tab_qube1[] __initdata = { > [COBALT_PCICONF_ETH1] = 0 > }; > > -static char irq_tab_cobalt[] __initdata = { > +static char irq_tab_cobalt[] = { > [COBALT_PCICONF_CPU] = 0, > [COBALT_PCICONF_ETH0] = ETH0_IRQ, > [COBALT_PCICONF_RAQSCSI] = SCSI_IRQ, > @@ -165,7 +165,7 @@ static char irq_tab_cobalt[] __initdata = { > [COBALT_PCICONF_ETH1] = ETH1_IRQ > }; > > -static char irq_tab_raq2[] __initdata = { > +static char irq_tab_raq2[] = { > [COBALT_PCICONF_CPU] = 0, > [COBALT_PCICONF_ETH0] = ETH0_IRQ, > [COBALT_PCICONF_RAQSCSI] = RAQ2_SCSI_IRQ, > @@ -174,7 +174,7 @@ static char irq_tab_raq2[] __initdata = { > [COBALT_PCICONF_ETH1] = ETH1_IRQ > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > if (cobalt_board_id <= COBALT_BRD_ID_QUBE1) > return irq_tab_qube1[slot]; > diff --git a/arch/mips/pci/fixup-emma2rh.c b/arch/mips/pci/fixup-emma2rh.c > index 19caf77..c31cb6a 100644 > --- a/arch/mips/pci/fixup-emma2rh.c > +++ b/arch/mips/pci/fixup-emma2rh.c > @@ -43,7 +43,7 @@ > */ > > #define MAX_SLOT_NUM 10 > -static unsigned char irq_map[][5] __initdata = { > +static unsigned char irq_map[][5] = { > [3] = {0, MARKEINS_PCI_IRQ_INTB, MARKEINS_PCI_IRQ_INTC, > MARKEINS_PCI_IRQ_INTD, 0,}, > [4] = {0, MARKEINS_PCI_IRQ_INTA, 0, 0, 0,}, > @@ -85,7 +85,7 @@ static void emma2rh_pci_host_fixup(struct pci_dev *dev) > DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_EMMA2RH, > emma2rh_pci_host_fixup); > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return irq_map[slot][pin]; > } > diff --git a/arch/mips/pci/fixup-fuloong2e.c b/arch/mips/pci/fixup-fuloong2e.c > index 50da773..b47c277 100644 > --- a/arch/mips/pci/fixup-fuloong2e.c > +++ b/arch/mips/pci/fixup-fuloong2e.c > @@ -19,7 +19,7 @@ > /* South bridge slot number is set by the pci probe process */ > static u8 sb_slot = 5; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int irq = 0; > > diff --git a/arch/mips/pci/fixup-ip32.c b/arch/mips/pci/fixup-ip32.c > index 133685e..c6ec18a 100644 > --- a/arch/mips/pci/fixup-ip32.c > +++ b/arch/mips/pci/fixup-ip32.c > @@ -21,7 +21,7 @@ > #define INTB MACEPCI_SHARED0_IRQ > #define INTC MACEPCI_SHARED1_IRQ > #define INTD MACEPCI_SHARED2_IRQ > -static char irq_tab_mace[][5] __initdata = { > +static char irq_tab_mace[][5] = { > /* Dummy INT#A INT#B INT#C INT#D */ > {0, 0, 0, 0, 0}, /* This is placeholder row - never used */ > {0, SCSI0, SCSI0, SCSI0, SCSI0}, > @@ -39,7 +39,7 @@ static char irq_tab_mace[][5] __initdata = { > * irqs. I suppose a device without a pin A will thank us for doing it > * right if there exists such a broken piece of crap. > */ > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return irq_tab_mace[slot][pin]; > } > diff --git a/arch/mips/pci/fixup-jmr3927.c b/arch/mips/pci/fixup-jmr3927.c > index 0f10695..d3102ee 100644 > --- a/arch/mips/pci/fixup-jmr3927.c > +++ b/arch/mips/pci/fixup-jmr3927.c > @@ -31,7 +31,7 @@ > #include <asm/txx9/pci.h> > #include <asm/txx9/jmr3927.h> > > -int __init jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int jmr3927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > unsigned char irq = pin; > > diff --git a/arch/mips/pci/fixup-lantiq.c b/arch/mips/pci/fixup-lantiq.c > index 2b5427d..81530a1 100644 > --- a/arch/mips/pci/fixup-lantiq.c > +++ b/arch/mips/pci/fixup-lantiq.c > @@ -23,7 +23,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev) > return 0; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return of_irq_parse_and_map_pci(dev, slot, pin); > } > diff --git a/arch/mips/pci/fixup-lemote2f.c b/arch/mips/pci/fixup-lemote2f.c > index 95ab9a1..20cdfdc 100644 > --- a/arch/mips/pci/fixup-lemote2f.c > +++ b/arch/mips/pci/fixup-lemote2f.c > @@ -30,7 +30,7 @@ > #define PCID 7 > > /* all the pci device has the PCIA pin, check the datasheet. */ > -static char irq_tab[][5] __initdata = { > +static char irq_tab[][5] = { > /* INTA INTB INTC INTD */ > {0, 0, 0, 0, 0}, /* 11: Unused */ > {0, 0, 0, 0, 0}, /* 12: Unused */ > @@ -51,7 +51,7 @@ static char irq_tab[][5] __initdata = { > {0, 0, 0, 0, 0}, /* 27: Unused */ > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int virq; > > diff --git a/arch/mips/pci/fixup-loongson3.c b/arch/mips/pci/fixup-loongson3.c > index 2b6d5e1..8a741c2 100644 > --- a/arch/mips/pci/fixup-loongson3.c > +++ b/arch/mips/pci/fixup-loongson3.c > @@ -32,7 +32,7 @@ static void print_fixup_info(const struct pci_dev *pdev) > pdev->vendor, pdev->device, pdev->irq); > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > print_fixup_info(dev); > return dev->irq; > diff --git a/arch/mips/pci/fixup-malta.c b/arch/mips/pci/fixup-malta.c > index 40e920c..3ec8533 100644 > --- a/arch/mips/pci/fixup-malta.c > +++ b/arch/mips/pci/fixup-malta.c > @@ -12,7 +12,7 @@ > static char pci_irq[5] = { > }; > > -static char irq_tab[][5] __initdata = { > +static char irq_tab[][5] = { > /* INTA INTB INTC INTD */ > {0, 0, 0, 0, 0 }, /* 0: GT64120 PCI bridge */ > {0, 0, 0, 0, 0 }, /* 1: Unused */ > @@ -38,7 +38,7 @@ static char irq_tab[][5] __initdata = { > {0, PCID, PCIA, PCIB, PCIC } /* 21: PCI Slot 4 */ > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int virq; > virq = irq_tab[slot][pin]; > diff --git a/arch/mips/pci/fixup-mpc30x.c b/arch/mips/pci/fixup-mpc30x.c > index 8e4f828..66eaf45 100644 > --- a/arch/mips/pci/fixup-mpc30x.c > +++ b/arch/mips/pci/fixup-mpc30x.c > @@ -22,19 +22,19 @@ > > #include <asm/vr41xx/mpc30x.h> > > -static const int internal_func_irqs[] __initconst = { > +static const int internal_func_irqs[] = { > VRC4173_CASCADE_IRQ, > VRC4173_AC97_IRQ, > VRC4173_USB_IRQ, > }; > > -static const int irq_tab_mpc30x[] __initconst = { > +static const int irq_tab_mpc30x[] = { > [12] = VRC4173_PCMCIA1_IRQ, > [13] = VRC4173_PCMCIA2_IRQ, > [29] = MQ200_IRQ, > }; > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > if (slot == 30) > return internal_func_irqs[PCI_FUNC(dev->devfn)]; > diff --git a/arch/mips/pci/fixup-pmcmsp.c b/arch/mips/pci/fixup-pmcmsp.c > index fab405c..4ad2ef0 100644 > --- a/arch/mips/pci/fixup-pmcmsp.c > +++ b/arch/mips/pci/fixup-pmcmsp.c > @@ -47,7 +47,7 @@ > > #if defined(CONFIG_PMC_MSP7120_GW) > /* Garibaldi Board IRQ wiring to PCI slots */ > -static char irq_tab[][5] __initdata = { > +static char irq_tab[][5] = { > /* INTA INTB INTC INTD */ > {0, 0, 0, 0, 0 }, /* (AD[0]): Unused */ > {0, 0, 0, 0, 0 }, /* (AD[1]): Unused */ > @@ -86,7 +86,7 @@ static char irq_tab[][5] __initdata = { > #elif defined(CONFIG_PMC_MSP7120_EVAL) > > /* MSP7120 Eval Board IRQ wiring to PCI slots */ > -static char irq_tab[][5] __initdata = { > +static char irq_tab[][5] = { > /* INTA INTB INTC INTD */ > {0, 0, 0, 0, 0 }, /* (AD[0]): Unused */ > {0, 0, 0, 0, 0 }, /* (AD[1]): Unused */ > @@ -125,7 +125,7 @@ static char irq_tab[][5] __initdata = { > #else > > /* Unknown board -- don't assign any IRQs */ > -static char irq_tab[][5] __initdata = { > +static char irq_tab[][5] = { > /* INTA INTB INTC INTD */ > {0, 0, 0, 0, 0 }, /* (AD[0]): Unused */ > {0, 0, 0, 0, 0 }, /* (AD[1]): Unused */ > @@ -202,7 +202,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev) > * RETURNS: IRQ number > * > ****************************************************************************/ > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > #if !defined(CONFIG_PMC_MSP7120_GW) && !defined(CONFIG_PMC_MSP7120_EVAL) > printk(KERN_WARNING "PCI: unknown board, no PCI IRQs assigned.\n"); > diff --git a/arch/mips/pci/fixup-rbtx4927.c b/arch/mips/pci/fixup-rbtx4927.c > index 321db26..d6aaed1 100644 > --- a/arch/mips/pci/fixup-rbtx4927.c > +++ b/arch/mips/pci/fixup-rbtx4927.c > @@ -36,7 +36,7 @@ > #include <asm/txx9/pci.h> > #include <asm/txx9/rbtx4927.h> > > -int __init rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int rbtx4927_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > unsigned char irq = pin; > > diff --git a/arch/mips/pci/fixup-rbtx4938.c b/arch/mips/pci/fixup-rbtx4938.c > index a80579a..ff22a22 100644 > --- a/arch/mips/pci/fixup-rbtx4938.c > +++ b/arch/mips/pci/fixup-rbtx4938.c > @@ -13,7 +13,7 @@ > #include <asm/txx9/pci.h> > #include <asm/txx9/rbtx4938.h> > > -int __init rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int rbtx4938_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int irq = tx4938_pcic1_map_irq(dev, slot); > > diff --git a/arch/mips/pci/fixup-sni.c b/arch/mips/pci/fixup-sni.c > index f67ebee..adb9a58 100644 > --- a/arch/mips/pci/fixup-sni.c > +++ b/arch/mips/pci/fixup-sni.c > @@ -40,7 +40,7 @@ > * seem to be a documentation error. At least on my RM200C the Cirrus > * Logic CL-GD5434 VGA is device 3. > */ > -static char irq_tab_rm200[8][5] __initdata = { > +static char irq_tab_rm200[8][5] = { > /* INTA INTB INTC INTD */ > { 0, 0, 0, 0, 0 }, /* EISA bridge */ > { SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */ > @@ -57,7 +57,7 @@ static char irq_tab_rm200[8][5] __initdata = { > * > * The VGA card is optional for RM300 systems. > */ > -static char irq_tab_rm300d[8][5] __initdata = { > +static char irq_tab_rm300d[8][5] = { > /* INTA INTB INTC INTD */ > { 0, 0, 0, 0, 0 }, /* EISA bridge */ > { SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */ > @@ -69,7 +69,7 @@ static char irq_tab_rm300d[8][5] __initdata = { > { 0, INTD, INTA, INTB, INTC }, /* Slot 4 */ > }; > > -static char irq_tab_rm300e[5][5] __initdata = { > +static char irq_tab_rm300e[5][5] = { > /* INTA INTB INTC INTD */ > { 0, 0, 0, 0, 0 }, /* HOST bridge */ > { SCSI, SCSI, SCSI, SCSI, SCSI }, /* SCSI */ > @@ -96,7 +96,7 @@ static char irq_tab_rm300e[5][5] __initdata = { > #define INTC PCIT_IRQ_INTC > #define INTD PCIT_IRQ_INTD > > -static char irq_tab_pcit[13][5] __initdata = { > +static char irq_tab_pcit[13][5] = { > /* INTA INTB INTC INTD */ > { 0, 0, 0, 0, 0 }, /* HOST bridge */ > { SCSI0, SCSI0, SCSI0, SCSI0, SCSI0 }, /* SCSI */ > @@ -113,7 +113,7 @@ static char irq_tab_pcit[13][5] __initdata = { > { 0, INTA, INTB, INTC, INTD }, /* Slot 5 */ > }; > > -static char irq_tab_pcit_cplus[13][5] __initdata = { > +static char irq_tab_pcit_cplus[13][5] = { > /* INTA INTB INTC INTD */ > { 0, 0, 0, 0, 0 }, /* HOST bridge */ > { 0, INTB, INTC, INTD, INTA }, /* PCI Slot 9 */ > @@ -130,7 +130,7 @@ static inline int is_rm300_revd(void) > return (csmsr & 0xa0) == 0x20; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > switch (sni_brd_type) { > case SNI_BRD_PCI_TOWER_CPLUS: > diff --git a/arch/mips/pci/fixup-tb0219.c b/arch/mips/pci/fixup-tb0219.c > index d0b0083..cc58153 100644 > --- a/arch/mips/pci/fixup-tb0219.c > +++ b/arch/mips/pci/fixup-tb0219.c > @@ -23,7 +23,7 @@ > > #include <asm/vr41xx/tb0219.h> > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int irq = -1; > > diff --git a/arch/mips/pci/fixup-tb0226.c b/arch/mips/pci/fixup-tb0226.c > index 4196ccf..b827b5c 100644 > --- a/arch/mips/pci/fixup-tb0226.c > +++ b/arch/mips/pci/fixup-tb0226.c > @@ -23,7 +23,7 @@ > #include <asm/vr41xx/giu.h> > #include <asm/vr41xx/tb0226.h> > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int irq = -1; > > diff --git a/arch/mips/pci/fixup-tb0287.c b/arch/mips/pci/fixup-tb0287.c > index 8c5039e..98f2628 100644 > --- a/arch/mips/pci/fixup-tb0287.c > +++ b/arch/mips/pci/fixup-tb0287.c > @@ -22,7 +22,7 @@ > > #include <asm/vr41xx/tb0287.h> > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > unsigned char bus; > int irq = -1; > diff --git a/arch/mips/pci/pci-alchemy.c b/arch/mips/pci/pci-alchemy.c > index e99ca77..f15ec98 100644 > --- a/arch/mips/pci/pci-alchemy.c > +++ b/arch/mips/pci/pci-alchemy.c > @@ -522,7 +522,7 @@ static int __init alchemy_pci_init(void) > arch_initcall(alchemy_pci_init); > > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > struct alchemy_pci_context *ctx = dev->sysdata; > if (ctx && ctx->board_map_irq) > diff --git a/arch/mips/pci/pci-bcm47xx.c b/arch/mips/pci/pci-bcm47xx.c > index 76f16ea..230d7dd 100644 > --- a/arch/mips/pci/pci-bcm47xx.c > +++ b/arch/mips/pci/pci-bcm47xx.c > @@ -28,7 +28,7 @@ > #include <linux/bcma/bcma.h> > #include <bcm47xx.h> > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return 0; > } > diff --git a/arch/mips/pci/pci-lasat.c b/arch/mips/pci/pci-lasat.c > index 40d2797..47f4ee6 100644 > --- a/arch/mips/pci/pci-lasat.c > +++ b/arch/mips/pci/pci-lasat.c > @@ -61,7 +61,7 @@ arch_initcall(lasat_pci_setup); > #define LASAT_IRQ_PCIC (LASAT_IRQ_BASE + 7) > #define LASAT_IRQ_PCID (LASAT_IRQ_BASE + 8) > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > switch (slot) { > case 1: > diff --git a/arch/mips/pci/pci-mt7620.c b/arch/mips/pci/pci-mt7620.c > index 4e633c1..90fba9b 100644 > --- a/arch/mips/pci/pci-mt7620.c > +++ b/arch/mips/pci/pci-mt7620.c > @@ -361,7 +361,7 @@ static int mt7620_pci_probe(struct platform_device *pdev) > return 0; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > u16 cmd; > u32 val; > diff --git a/arch/mips/pci/pci-octeon.c b/arch/mips/pci/pci-octeon.c > index 9ee0193..3e92a06 100644 > --- a/arch/mips/pci/pci-octeon.c > +++ b/arch/mips/pci/pci-octeon.c > @@ -59,8 +59,7 @@ union octeon_pci_address { > } s; > }; > > -int __initconst (*octeon_pcibios_map_irq)(const struct pci_dev *dev, > - u8 slot, u8 pin); > +int (*octeon_pcibios_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin); > enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID; > > /** > @@ -74,7 +73,7 @@ enum octeon_dma_bar_type octeon_dma_bar_type = OCTEON_DMA_BAR_TYPE_INVALID; > * as it goes through each bridge. > * Returns Interrupt number for the device > */ > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > if (octeon_pcibios_map_irq) > return octeon_pcibios_map_irq(dev, slot, pin); > diff --git a/arch/mips/pci/pci-rt2880.c b/arch/mips/pci/pci-rt2880.c > index d6360fe..711cdcc 100644 > --- a/arch/mips/pci/pci-rt2880.c > +++ b/arch/mips/pci/pci-rt2880.c > @@ -181,7 +181,7 @@ static inline void rt2880_pci_write_u32(unsigned long reg, u32 val) > spin_unlock_irqrestore(&rt2880_pci_lock, flags); > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > u16 cmd; > int irq = -1; > diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c > index 04f8ea9..958899f 100644 > --- a/arch/mips/pci/pci-rt3883.c > +++ b/arch/mips/pci/pci-rt3883.c > @@ -564,7 +564,7 @@ static int rt3883_pci_probe(struct platform_device *pdev) > return err; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return of_irq_parse_and_map_pci(dev, slot, pin); > } > diff --git a/arch/mips/pci/pci-tx4938.c b/arch/mips/pci/pci-tx4938.c > index 000c0e1..a641846 100644 > --- a/arch/mips/pci/pci-tx4938.c > +++ b/arch/mips/pci/pci-tx4938.c > @@ -112,7 +112,7 @@ int __init tx4938_pciclk66_setup(void) > return pciclk; > } > > -int __init tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot) > +int tx4938_pcic1_map_irq(const struct pci_dev *dev, u8 slot) > { > if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4938_pcic1ptr) { > switch (slot) { > diff --git a/arch/mips/pci/pci-tx4939.c b/arch/mips/pci/pci-tx4939.c > index 9d6acc0..09a65f7 100644 > --- a/arch/mips/pci/pci-tx4939.c > +++ b/arch/mips/pci/pci-tx4939.c > @@ -48,7 +48,7 @@ void __init tx4939_report_pci1clk(void) > ((pciclk + 50000) / 100000) % 10); > } > > -int __init tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot) > +int tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot) > { > if (get_tx4927_pcicptr(dev->bus->sysdata) == tx4939_pcic1ptr) { > switch (slot) { > @@ -68,7 +68,7 @@ int __init tx4939_pcic1_map_irq(const struct pci_dev *dev, u8 slot) > return -1; > } > > -int __init tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int tx4939_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > int irq = tx4939_pcic1_map_irq(dev, slot); > > diff --git a/arch/mips/pci/pci-xlp.c b/arch/mips/pci/pci-xlp.c > index 7babf01..9eff913 100644 > --- a/arch/mips/pci/pci-xlp.c > +++ b/arch/mips/pci/pci-xlp.c > @@ -205,7 +205,7 @@ int xlp_socdev_to_node(const struct pci_dev *lnkdev) > return PCI_SLOT(lnkdev->devfn) / 8; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > struct pci_dev *lnkdev; > int lnkfunc, node; > diff --git a/arch/mips/pci/pci-xlr.c b/arch/mips/pci/pci-xlr.c > index 26d2dab..2a1c81a 100644 > --- a/arch/mips/pci/pci-xlr.c > +++ b/arch/mips/pci/pci-xlr.c > @@ -315,7 +315,7 @@ static void xls_pcie_ack_b(struct irq_data *d) > } > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > return get_irq_vector(dev); > } > diff --git a/arch/mips/pci/pcie-octeon.c b/arch/mips/pci/pcie-octeon.c > index ad3584d..fd28874 100644 > --- a/arch/mips/pci/pcie-octeon.c > +++ b/arch/mips/pci/pcie-octeon.c > @@ -1464,8 +1464,7 @@ static int cvmx_pcie_rc_initialize(int pcie_port) > * as it goes through each bridge. > * Returns Interrupt number for the device > */ > -int __init octeon_pcie_pcibios_map_irq(const struct pci_dev *dev, > - u8 slot, u8 pin) > +int octeon_pcie_pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > /* > * The EBH5600 board with the PCI to PCIe bridge mistakenly > diff --git a/arch/mips/txx9/generic/pci.c b/arch/mips/txx9/generic/pci.c > index 0bd2a1e..fb99872 100644 > --- a/arch/mips/txx9/generic/pci.c > +++ b/arch/mips/txx9/generic/pci.c > @@ -386,9 +386,10 @@ int pcibios_plat_dev_init(struct pci_dev *dev) > return 0; > } > > -int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > +static int (*txx9_pci_map_irq)(const struct pci_dev *dev, u8 slot, u8 pin); > +int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) > { > - return txx9_board_vec->pci_map_irq(dev, slot, pin); > + return txx9_pci_map_irq(dev, slot, pin); > } > > char * (*txx9_board_pcibios_setup)(char *str) __initdata; > @@ -424,5 +425,8 @@ char *__init txx9_pcibios_setup(char *str) > txx9_pci_err_action = TXX9_PCI_ERR_IGNORE; > return NULL; > } > + > + txx9_pci_map_irq = txx9_board_vec->pci_map_irq; > + > return str; > } > -- > 2.10.0 >