[POWERPC] Fix pci domain detection
authorArnd Bergmann <arnd@arndb.de>
Wed, 26 Sep 2007 14:02:05 +0000 (00:02 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 3 Oct 2007 01:48:44 +0000 (11:48 +1000)
The /proc/bus/pci/* files list PCI domain numbers only for
devices that claim to be on a multi-domain system. The check
for this is broken on powerpc, because the buid value is
truncated to 32 bits.

There is at least one machine (IBM QS21) that only uses
the high-order bits of the buid, so the return value
of pci_proc_domain() ends up being always zero, which
makes /proc/bus/pci useless.

Change the logic to always return '1' for a nonzero
buid value.

Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/pci_64.c

index 291ffbc360c9a023f30a6b40b4c77b9d272ebb31..9f63bdcb0bdf88f0cdabe6de30b8276070ecebaf 100644 (file)
@@ -588,7 +588,7 @@ int pci_proc_domain(struct pci_bus *bus)
                return 0;
        else {
                struct pci_controller *hose = pci_bus_to_host(bus);
-               return hose->buid;
+               return hose->buid != 0;
        }
 }