Some SiS boards won't boot without pci=bios forcing their method.
The reason for this is in the probe method, we try the BIOS method, and it
succeeds and we store the pci_ops. We then try the direct access, it fails
and we trash the old pci_ops.
The patch stores the pci_ops when BIOS method succeeds and restores it
if the direct hardware access method fails.
void __devinit pcibios_config_init(void)
{
+ struct pci_ops *tmp=NULL;
+
/*
* Try all known PCI access methods. Note that we support using
* both PCI BIOS and direct access, with a preference for direct.
pci_config_write = pci_bios_write;
}
#endif
+ tmp = pci_root_ops;
#ifdef CONFIG_PCI_DIRECT
if ((pci_probe & (PCI_PROBE_CONF1 | PCI_PROBE_CONF2))
}
#endif
+ /* if direct access failed, fall back to BIOS access. */
+ if (pci_root_ops == NULL)
+ pci_root_ops = tmp;
+
return;
}