• B
    PCI: Remove __weak annotation from pcibios_get_phb_of_node decl · 10629d71
    Bjorn Helgaas 提交于
    The __weak annotation on the pcibios_get_phb_of_node() declaration
    causes *every* definition to be marked "weak."  The linker then
    selects one based on link order, which may be the wrong one.
    
    Gabor found that on MIPS, the linker selected the generic implementation
    from drivers/pci even though arch/mips supplied a definition without the
    __weak annotation:
    
    $ mipsel-openwrt-linux-readelf -s arch/mips/pci/built-in.o \
        drivers/pci/built-in.o vmlinux.o | grep pcibios_get_phb_of_node
          86: 0000046c    12 FUNC    WEAK   DEFAULT    2 pcibios_get_phb_of_node
        1430: 00012e2c   104 FUNC    WEAK   DEFAULT    2 pcibios_get_phb_of_node
       31898: 0017e4ec   104 FUNC    WEAK   DEFAULT    2 pcibios_get_phb_of_node
    
    This removes the __weak annotation from the pcibios_get_phb_of_node()
    declaration so arch-specific non-weak implementations work reliably.
    Suggested-by: NGabor Juhos <juhosg@openwrt.org>
    Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
    10629d71
pci.h 61.2 KB