Re: Oops on boot with both 2.2.17 and 2.4.0t8p6

From: Rasmus Andersen (rasmus@jaquet.dk)
Date: Mon Sep 18 2000 - 02:41:03 EST


On Sun, Sep 17, 2000 at 10:53:55PM -0300, Marcelo Tosatti wrote:
>
> AFAIK most distros use CONFIG_PCI_GOANY, which causes the kernel to try to
> detect the PCI devices directly, and in case this fails, it tries to
> detect via BIOS.

I thought so too from reading the help regarding this option, but the
code seems to (in case of CONFIG_GOANY) to check through the bios,
check directly and pick the direct mapping (if not NULL) and otherwise
pick the BIOS mapping (if not NULL) (this is from arch/i386/kernel/
pci-pc.c). This is not what I expected from reading the help text.

Would it be more correct for the code to check directly first (if con-
figured so and not excluded at boot time etc) and then only check through
BIOS if the direct mapping failed?

Example patch (probably fubar'ed):

--- pci-pc.c.org Mon Sep 18 09:14:48 2000
+++ pci-pc.c Mon Sep 18 09:16:01 2000
@@ -962,15 +962,15 @@
         struct pci_ops *bios = NULL;
         struct pci_ops *dir = NULL;
 
+#ifdef CONFIG_PCI_DIRECT
+ if (pci_probe & (PCI_PROBE_CONF1 | PCI_PROBE_CONF2))
+ dir = pci_check_direct();
+#endif
 #ifdef CONFIG_PCI_BIOS
- if ((pci_probe & PCI_PROBE_BIOS) && ((bios = pci_find_bios()))) {
+ if ((pci_probe & PCI_PROBE_BIOS) && (!dir) && ((bios = pci_find_bios()))) {
                 pci_probe |= PCI_BIOS_SORT;
                 pci_bios_present = 1;
         }
-#endif
-#ifdef CONFIG_PCI_DIRECT
- if (pci_probe & (PCI_PROBE_CONF1 | PCI_PROBE_CONF2))
- dir = pci_check_direct();
 #endif
         if (dir)
                 pci_root_ops = dir;

Comments?

Regards,
  Rasmus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Sep 23 2000 - 21:00:16 EST