ChangeSet 1.1587.12.91, 2004/05/11 14:59:36-07:00, arjanv@redhat.com

[PATCH] PCI crash with pciless box or pci=off workaround on Vaio's

From: Alan Cox <alan@redhat.com>

Reasoning


- Earlier in boot if we find a PCI bus we set raw_pci_ops to the function
  table to use for PCI accesses.
- When we enter this function we now check if we have such a method
- If not then we know it will otherwise crash because the call sequence
  through the code goes

        pci_irq_init
        pirq_peer_trick
        pci_scan_bus_parented
        which always leads down into the device scan and a pci config access
                via raw_pci_ops

  The moment the scan searches for a device it has to crash as it has no
  access methods.

- The other case which does nothing but pci_fixup_irqs is a no-op with no
  PCI devices

- THUS any situation that is changed by the raw_pci_ops check was
  previously an oops case anyway or did nothing anyway.


Tested with pci=off and without


 arch/i386/pci/irq.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)


diff -Nru a/arch/i386/pci/irq.c b/arch/i386/pci/irq.c
--- a/arch/i386/pci/irq.c	Mon May 17 16:56:18 2004
+++ b/arch/i386/pci/irq.c	Mon May 17 16:56:18 2004
@@ -901,7 +901,7 @@
 {
 	DBG("PCI: IRQ init\n");
 
-	if (pcibios_enable_irq)
+	if (pcibios_enable_irq || raw_pci_ops == NULL)
 		return 0;
 
 	pirq_table = pirq_find_routing_table();
