Messages in this thread Patch in this message |  | | Date | Fri, 8 Sep 2000 14:14:17 +0200 (CEST) | From | Jean-Marc Saffroy <> | Subject | [PATCH] panic when booting Intel XXPRESS SMP boards |
| |
Hello,
We have here an older SMP machine (NCR Globalyst S40, quad Pentium 100) with an Intel Xtended Xpress (or XXPRESS) motherboard, and all development kernels since 2.3.20 don't boot with SMP on it, because they panic when they discover a bus type they don't know ("XPRESS") when parsing the bus entries in the MP Configuration Table.
This "XPRESS" bus is actually the system bus on our machine, but it may be safe to simply ignore it ; at least, we patched a 2.4.0 test7 kernel to do so, and the system boots and seems stable so far. Appended to this mail is a small patch that we believe should be integrated to further kernel releases (BTW it also contains minor cosmetic fixes).
Regards,
JMS
-- Jean-Marc Saffroy - Research Engineer - Silicomp Research Institute mailto:jms@migrantprogrammer.com
/**********************/ diff -ru linux-2.4.0-test7/arch/i386/kernel/mpparse.c /tmp/linux-2.4.0-test7/arch/i386/kernel/mpparse.c --- linux-2.4.0-test7/arch/i386/kernel/mpparse.c Mon Aug 21 17:57:35 2000 +++ /tmp/linux-2.4.0-test7/arch/i386/kernel/mpparse.c Fri Sep 8 10:56:24 2000 @@ -158,17 +158,17 @@ str[6] = 0; Dprintk("Bus #%d is %s\n", m->mpc_busid, str); - if (strncmp(str, "ISA", 3) == 0) { + if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA)-1) == 0) { mp_bus_id_to_type[m->mpc_busid] = MP_BUS_ISA; - } else if (strncmp(str, "EISA", 4) == 0) { + } else if (strncmp(str, BUSTYPE_EISA, sizeof(BUSTYPE_EISA)-1) == 0) { mp_bus_id_to_type[m->mpc_busid] = MP_BUS_EISA; - } else if (strncmp(str, "PCI", 3) == 0) { + } else if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI)-1) == 0) { mp_bus_id_to_type[m->mpc_busid] = MP_BUS_PCI; mp_bus_id_to_pci_bus[m->mpc_busid] = mp_current_pci_id; mp_current_pci_id++; - } else if (strncmp(str, "MCA", 3) == 0) { + } else if (strncmp(str, BUSTYPE_MCA, sizeof(BUSTYPE_MCA)-1) == 0) { mp_bus_id_to_type[m->mpc_busid] = MP_BUS_MCA; - } else { + } else if (strncmp(str, BUSTYPE_XPRESS, sizeof(BUSTYPE_XPRESS)-1) != 0) { printk("Unknown bustype %s\n", str); panic("cannot handle bus - mail to linux-smp@vger.kernel.org"); } diff -ru linux-2.4.0-test7/include/asm-i386/mpspec.h /tmp/linux-2.4.0-test7/include/asm-i386/mpspec.h --- linux-2.4.0-test7/include/asm-i386/mpspec.h Wed Apr 12 18:33:19 2000 +++ /tmp/linux-2.4.0-test7/include/asm-i386/mpspec.h Fri Sep 8 10:54:01 2000 @@ -79,6 +79,7 @@ unsigned char mpc_bustype[6] __attribute((packed)); }; +/* List of Bus Type string values, Intel MP Spec. */ #define BUSTYPE_EISA "EISA" #define BUSTYPE_ISA "ISA" #define BUSTYPE_INTERN "INTERN" /* Internal BUS */ @@ -86,6 +87,17 @@ #define BUSTYPE_VL "VL" /* Local bus */ #define BUSTYPE_PCI "PCI" #define BUSTYPE_PCMCIA "PCMCIA" +#define BUSTYPE_CBUS "CBUS" +#define BUSTYPE_CBUSII "CBUSII" +#define BUSTYPE_FUTURE "FUTURE" +#define BUSTYPE_MBI "MBI" +#define BUSTYPE_MBII "MBII" +#define BUSTYPE_MPI "MPI" +#define BUSTYPE_MPSA "MPSA" +#define BUSTYPE_NUBUS "NUBUS" +#define BUSTYPE_TC "TC" +#define BUSTYPE_VME "VME" +#define BUSTYPE_XPRESS "XPRESS" struct mpc_config_ioapic { /**********************/ - 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/
|  |