|
|
|
@ -423,7 +423,7 @@ static int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
|
|
|
|
return irq; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void __init pcibios_init_hw(struct hw_pci *hw) |
|
|
|
|
static void __init pcibios_init_hw(struct hw_pci *hw, struct list_head *head) |
|
|
|
|
{ |
|
|
|
|
struct pci_sys_data *sys = NULL; |
|
|
|
|
int ret; |
|
|
|
@ -463,7 +463,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw) |
|
|
|
|
|
|
|
|
|
busnr = sys->bus->subordinate + 1; |
|
|
|
|
|
|
|
|
|
list_add(&sys->node, &hw->buses); |
|
|
|
|
list_add(&sys->node, head); |
|
|
|
|
} else { |
|
|
|
|
kfree(sys); |
|
|
|
|
if (ret < 0) |
|
|
|
@ -475,19 +475,18 @@ static void __init pcibios_init_hw(struct hw_pci *hw) |
|
|
|
|
void __init pci_common_init(struct hw_pci *hw) |
|
|
|
|
{ |
|
|
|
|
struct pci_sys_data *sys; |
|
|
|
|
|
|
|
|
|
INIT_LIST_HEAD(&hw->buses); |
|
|
|
|
LIST_HEAD(head); |
|
|
|
|
|
|
|
|
|
pci_add_flags(PCI_REASSIGN_ALL_RSRC); |
|
|
|
|
if (hw->preinit) |
|
|
|
|
hw->preinit(); |
|
|
|
|
pcibios_init_hw(hw); |
|
|
|
|
pcibios_init_hw(hw, &head); |
|
|
|
|
if (hw->postinit) |
|
|
|
|
hw->postinit(); |
|
|
|
|
|
|
|
|
|
pci_fixup_irqs(pcibios_swizzle, pcibios_map_irq); |
|
|
|
|
|
|
|
|
|
list_for_each_entry(sys, &hw->buses, node) { |
|
|
|
|
list_for_each_entry(sys, &head, node) { |
|
|
|
|
struct pci_bus *bus = sys->bus; |
|
|
|
|
|
|
|
|
|
if (!pci_has_flag(PCI_PROBE_ONLY)) { |
|
|
|
|