mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 14:44:10 +08:00
PCI: Remove __weak annotation from pcibios_get_phb_of_node decl
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: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
f6161aa153
commit
10629d711e
@ -1823,7 +1823,7 @@ extern void pci_set_bus_of_node(struct pci_bus *bus);
|
||||
extern void pci_release_bus_of_node(struct pci_bus *bus);
|
||||
|
||||
/* Arch may override this (weak) */
|
||||
extern struct device_node * __weak pcibios_get_phb_of_node(struct pci_bus *bus);
|
||||
extern struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus);
|
||||
|
||||
static inline struct device_node *
|
||||
pci_device_to_OF_node(const struct pci_dev *pdev)
|
||||
|
Loading…
Reference in New Issue
Block a user