Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 200025
b: refs/heads/master
c: 5707b24
h: refs/heads/master
i:
  200023: b29444f
v: v3
  • Loading branch information
Aristeu Rozanski authored and Mauro Carvalho Chehab committed May 10, 2010
1 parent cf0b066 commit 21d25fe
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e9bd2e73793bf0f7fcd8f94b532bb8f5c5b44171
refs/heads/master: 5707b24a50b40582226618c56692af932db9fe02
2 changes: 2 additions & 0 deletions trunk/arch/x86/include/asm/pci_x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ extern int pcibios_last_bus;
extern struct pci_bus *pci_root_bus;
extern struct pci_ops pci_root_ops;

void pcibios_scan_specific_bus(int busn);

/* pci-irq.c */

struct irq_info {
Expand Down
42 changes: 25 additions & 17 deletions trunk/arch/x86/pci/legacy.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,14 @@
*/
static void __devinit pcibios_fixup_peer_bridges(void)
{
int n, devfn;
long node;
int n;

if (pcibios_last_bus <= 0 || pcibios_last_bus > 0xff)
return;
DBG("PCI: Peer bridge fixup\n");

for (n=0; n <= pcibios_last_bus; n++) {
u32 l;
if (pci_find_bus(0, n))
continue;
node = get_mp_bus_to_node(n);
for (devfn = 0; devfn < 256; devfn += 8) {
if (!raw_pci_read(0, n, devfn, PCI_VENDOR_ID, 2, &l) &&
l != 0x0000 && l != 0xffff) {
DBG("Found device at %02x:%02x [%04x]\n", n, devfn, l);
printk(KERN_INFO "PCI: Discovered peer bus %02x\n", n);
pci_scan_bus_on_node(n, &pci_root_ops, node);
break;
}
}
}
for (n=0; n <= pcibios_last_bus; n++)
pcibios_scan_specific_bus(n);
}

int __init pci_legacy_init(void)
Expand All @@ -49,6 +35,28 @@ int __init pci_legacy_init(void)

return 0;
}
EXPORT_SYMBOL_GPL(pci_legacy_init);

void pcibios_scan_specific_bus(int busn)
{
int devfn;
long node;
u32 l;

if (pci_find_bus(0, busn))
return;

node = get_mp_bus_to_node(busn);
for (devfn = 0; devfn < 256; devfn += 8) {
if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) &&
l != 0x0000 && l != 0xffff) {
DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l);
printk(KERN_INFO "PCI: Discovered peer bus %02x\n", busn);
pci_scan_bus_on_node(busn, &pci_root_ops, node);
return;
}
}
}

int __init pci_subsys_init(void)
{
Expand Down

0 comments on commit 21d25fe

Please sign in to comment.