[PATCH] PCI: use PCBIOS as last fallback

there was a change in 2.6.17 which affected the order in which the PCI
access methods are probed. this gives regressions on some machines with
broken BIOS. the problem is that PCBIOS sometimes reports last bus wrong,
leaving cardbus non-funcational. previously those system worked fine with
direct access.

The patch changes the PCI init code to have PCBIOS as last fallback, yet
the PCBIOS code still has to run first to set pcibios_last_bus to the value
reported by the BIOS. this is needed in case legacy PCI probing
(arch/i386/pci/legacy.c) is used to detect peer busses. using direct
access if available fixes the cardbus problems.

Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
Cc: Dave Hansen <haveblue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by Daniel Ritz and committed by Greg Kroah-Hartman 954c0b7c faf9b616

+6 -2
+6 -2
arch/i386/pci/init.c
··· 14 14 #ifdef CONFIG_PCI_BIOS 15 15 pci_pcbios_init(); 16 16 #endif 17 - if (raw_pci_ops) 18 - return 0; 17 + /* 18 + * don't check for raw_pci_ops here because we want pcbios as last 19 + * fallback, yet it's needed to run first to set pcibios_last_bus 20 + * in case legacy PCI probing is used. otherwise detecting peer busses 21 + * fails. 22 + */ 19 23 #ifdef CONFIG_PCI_DIRECT 20 24 pci_direct_init(); 21 25 #endif