diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-03-11 19:42:53 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 04:55:19 -0400 |
commit | 97b3cf050b467dda571943ceadff5452bed04549 (patch) | |
tree | c5dbb828eb40f84d6203cfd5aaa56f12c4548b71 /arch/sparc64/kernel/pci_sabre.c | |
parent | c6e87566ea080bbbe926c0e429fed48e6f680d93 (diff) |
[SPARC64]: Add dummy host controller to root of all PCI domains.
We fake up a dummy one in all cases because that is the simplest
thing to do and it happens to be necessary for hypervisor systems.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/pci_sabre.c')
-rw-r--r-- | arch/sparc64/kernel/pci_sabre.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index 1bd7fc7c05e6..a2f129d29c20 100644 --- a/arch/sparc64/kernel/pci_sabre.c +++ b/arch/sparc64/kernel/pci_sabre.c | |||
@@ -319,6 +319,12 @@ static int __sabre_read_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn, | |||
319 | static int sabre_read_pci_cfg(struct pci_bus *bus, unsigned int devfn, | 319 | static int sabre_read_pci_cfg(struct pci_bus *bus, unsigned int devfn, |
320 | int where, int size, u32 *value) | 320 | int where, int size, u32 *value) |
321 | { | 321 | { |
322 | struct pci_pbm_info *pbm = bus->sysdata; | ||
323 | |||
324 | if (bus == pbm->pci_bus && devfn == 0x00) | ||
325 | return pci_host_bridge_read_pci_cfg(bus, devfn, where, | ||
326 | size, value); | ||
327 | |||
322 | if (!bus->number && sabre_out_of_range(devfn)) { | 328 | if (!bus->number && sabre_out_of_range(devfn)) { |
323 | switch (size) { | 329 | switch (size) { |
324 | case 1: | 330 | case 1: |
@@ -435,6 +441,12 @@ static int __sabre_write_pci_cfg(struct pci_bus *bus_dev, unsigned int devfn, | |||
435 | static int sabre_write_pci_cfg(struct pci_bus *bus, unsigned int devfn, | 441 | static int sabre_write_pci_cfg(struct pci_bus *bus, unsigned int devfn, |
436 | int where, int size, u32 value) | 442 | int where, int size, u32 value) |
437 | { | 443 | { |
444 | struct pci_pbm_info *pbm = bus->sysdata; | ||
445 | |||
446 | if (bus == pbm->pci_bus && devfn == 0x00) | ||
447 | return pci_host_bridge_write_pci_cfg(bus, devfn, where, | ||
448 | size, value); | ||
449 | |||
438 | if (bus->number) | 450 | if (bus->number) |
439 | return __sabre_write_pci_cfg(bus, devfn, where, size, value); | 451 | return __sabre_write_pci_cfg(bus, devfn, where, size, value); |
440 | 452 | ||