lkml.org 
[lkml]   [2000]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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/

\
 
 \ /
  Last update: 2005-03-22 12:38    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site