linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] SMP parsing rewrite, phase 1
@ 2003-01-21  3:12 Andy Grover
  2003-01-21  4:28 ` Martin J. Bligh
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Andy Grover @ 2003-01-21  3:12 UTC (permalink / raw)
  To: linux-kernel; +Cc: acpi-devel, mbligh, mingo

Hi all,

The below patch against 2.5.59 is also available from 
ftp://ftp.kernel.org/pub/linux/kernel/people/grover/ ,
or bk pull http://linux-acpi.bkbits.net/linux-smp-init .

Before I spent any more time carving up mpparse.c, I just wanted to have
the chance for feedback from others.

This patch begins to draw a distinction between the structure of the MPS
table's items, and the kernel's internal data structures. Previously, it
made sense to just use MPS format throughout, but with the introduction of
a second method to enumerate CPUs, IOAPICs etc. on x86 (i.e. ACPI), this
really is no longer ideal. A clean, minimal interface for ACPI and MPS to 
report discovered resources will cut down on cross-module dependencies, 
shared global arrays, and will probably even reduce the kernel image 
somewhat.

See below for more detail, but to sum up, I:
1) Renamed MPS-specific structs starting with "mpc_" to "mps_", to reflect 
their actual purpose.
2) Do the same thing for variables.
3) Created arch/i386/kernel/smpenum.c, for the enum-method-neutral APIs. 
To begin with, I have only implemented the new interface to replace 
MP_processor_info - the others will be done in a similar manner.
4) An unrelated ACPI init changeset sneaked in, sorry :)

It's been tested on my machine in ACPI and MPS mode - obviously some more 
testing coverage would be nice.

Comments?

Thanks -- Regards -- Andy

The following files are affected:

 arch/i386/kernel/Makefile                    |    2 
 arch/i386/kernel/acpi.c                      |    9 
 arch/i386/kernel/apic.c                      |   12 
 arch/i386/kernel/mpparse.c                   |  274 +++------------
 arch/i386/kernel/setup.c                     |   20 -
 arch/i386/kernel/smpboot.c                   |    4 
 arch/i386/kernel/smpenum.c                   |  124 +++++-
 drivers/acpi/tables.c                        |    3 
 include/asm-i386/io_apic.h                   |    4 
 include/asm-i386/mach-default/mach_apic.h    |   11 
 include/asm-i386/mach-default/mach_mpparse.h |    8 
 include/asm-i386/mach-numaq/mach_apic.h      |    4 
 include/asm-i386/mach-numaq/mach_mpparse.h   |    8 
 include/asm-i386/mach-summit/mach_apic.h     |    4 
 include/asm-i386/mach-summit/mach_mpparse.h  |    8 
 include/asm-i386/mpspec.h                    |   20 -
 include/asm-i386/smp.h                       |    1 
 include/asm-i386/smpenum.h                   |  220 +++++++++++-
 include/linux/acpi.h                         |    4 
 19 files changed, 440 insertions(+), 300 deletions(-)

through these ChangeSets:

<agrover@groveronline.com> (03/01/15 1.914.1.28)
   [smpenum] Fixes for numaq and summit

<agrover@groveronline.com> (03/01/15 1.879.92.5)
   [smpenum] Replace MP_processor_info with a non-MPS-specific equivalent
   
   Remove now-obsolete MP_processor_info function from mpparse.c
   Rename mps_read_mpc -> mps_parse_table
   Remove unneeded includes in smpenum.c
   Bring over more variables from mpparse.c
   Implement smp_processor_register(). This function takes the place of
     MP_processor_info, but does not use MPS data structures.
   Change mpc_apic_id's printk to account for the removal of
     nonessential items from struct mpc_config_processor.
   Add include of smpenum.h in smp.h
   Remove nonessential fields from mpc_config_processor

<agrover@groveronline.com> (03/01/14 1.879.92.4)
   [smpenum] structs beginning with "mpc_" are actually MPS-specific. 
Rename
   structs to "mps_" to facilitate the creation of different "mpc_" struct
   definitions.
   
   Create smpenum.[ch], where all the enumeration-method-neutral code will 
go, and start moving some arrays there, for now.

<agrover@groveronline.com> (03/01/14 1.879.92.3)
   [mpparse] more smp -> mps renames

<agrover@groveronline.com> (03/01/14 1.879.92.2)
   [mpparse] Rename smp* things in mpparse.c that are actually 
MPS-specific (not SMP-specific) to mps*, including get_mps_config and 
found_mps_config.

<agrover@groveronline.com> (03/01/14 1.838.62.2)
   [mpparse] "smp" should only be used in non-ACPI or non-MPS-specific
code.  so, start to make that distinction clear

<agrover@groveronline.com> (02/12/17 1.838.62.1)
   ACPI: Boot functions don't use cmdline, so don't pass it




diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/acpi.c b/arch/i386/kernel/acpi.c
--- a/arch/i386/kernel/acpi.c	2003-01-20 11:04:44.000000000 -0800
+++ b/arch/i386/kernel/acpi.c	2003-01-20 11:12:00.000000000 -0800
@@ -34,7 +34,7 @@
 #include <linux/bootmem.h>
 #include <linux/irq.h>
 #include <linux/acpi.h>
-#include <asm/mpspec.h>
+#include <asm/smp.h>
 #include <asm/io.h>
 #include <asm/apic.h>
 #include <asm/apicdef.h>
@@ -303,8 +303,7 @@
 
 
 int __init
-acpi_boot_init (
-	char			*cmdline)
+acpi_boot_init (void)
 {
 	int			result = 0;
 
@@ -317,7 +316,7 @@
 	/* 
 	 * Initialize the ACPI boot-time table parser.
 	 */
-	result = acpi_table_init(cmdline);
+	result = acpi_table_init();
 	if (result)
 		return result;
 
@@ -435,7 +434,7 @@
 
 #ifdef CONFIG_X86_LOCAL_APIC
 	if (acpi_lapic && acpi_ioapic) {
-		smp_found_config = 1;
+		mps_found_config = 1;
 		clustered_apic_check();
 	}
 #endif
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c
--- a/arch/i386/kernel/apic.c	2003-01-20 11:05:11.000000000 -0800
+++ b/arch/i386/kernel/apic.c	2003-01-20 11:12:56.000000000 -0800
@@ -258,7 +258,7 @@
 	 * Don't do the setup now if we have a SMP BIOS as the
 	 * through-I/O-APIC virtual wire mode might be active.
 	 */
-	if (smp_found_config || !cpu_has_apic)
+	if (mps_found_config || !cpu_has_apic)
 		return;
 
 	value = apic_read(APIC_LVR);
@@ -677,7 +677,7 @@
 	 * zeroes page to simulate the local APIC and another
 	 * one for the IO-APIC.
 	 */
-	if (!smp_found_config && detect_init_APIC()) {
+	if (!mps_found_config && detect_init_APIC()) {
 		apic_phys = (unsigned long) alloc_bootmem_pages(PAGE_SIZE);
 		apic_phys = __pa(apic_phys);
 	} else
@@ -699,12 +699,12 @@
 		int i;
 
 		for (i = 0; i < nr_ioapics; i++) {
-			if (smp_found_config) {
+			if (mps_found_config) {
 				ioapic_phys = mp_ioapics[i].mpc_apicaddr;
 				if (!ioapic_phys) {
 					printk(KERN_ERR "WARNING: bogus zero IO-APIC address found in MPTABLE, disabling IO/APIC support!\n");
 
-					smp_found_config = 0;
+					mps_found_config = 0;
 					skip_ioapic_setup = 1;
 					goto fake_ioapic_page;
 				}
@@ -1122,7 +1122,7 @@
  */
 int __init APIC_init_uniprocessor (void)
 {
-	if (!smp_found_config && !cpu_has_apic)
+	if (!mps_found_config && !cpu_has_apic)
 		return -1;
 
 	/*
@@ -1148,7 +1148,7 @@
 	if (nmi_watchdog == NMI_LOCAL_APIC)
 		check_nmi_watchdog();
 #ifdef CONFIG_X86_IO_APIC
-	if (smp_found_config)
+	if (mps_found_config)
 		if (!skip_ioapic_setup && nr_ioapics)
 			setup_IO_APIC();
 #endif
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile
--- a/arch/i386/kernel/Makefile	2003-01-20 11:02:41.000000000 -0800
+++ b/arch/i386/kernel/Makefile	2003-01-20 11:10:25.000000000 -0800
@@ -20,7 +20,7 @@
 obj-$(CONFIG_APM)		+= apm.o
 obj-$(CONFIG_ACPI)		+= acpi.o
 obj-$(CONFIG_ACPI_SLEEP)	+= acpi_wakeup.o
-obj-$(CONFIG_X86_SMP)		+= smp.o smpboot.o
+obj-$(CONFIG_X86_SMP)		+= smp.o smpboot.o smpenum.o
 obj-$(CONFIG_X86_TRAMPOLINE)	+= trampoline.o
 obj-$(CONFIG_X86_MPPARSE)	+= mpparse.o
 obj-$(CONFIG_X86_LOCAL_APIC)	+= apic.o nmi.o
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
--- a/arch/i386/kernel/mpparse.c	2003-01-20 11:03:00.000000000 -0800
+++ b/arch/i386/kernel/mpparse.c	2003-01-20 11:10:29.000000000 -0800
@@ -28,6 +28,7 @@
 #include <asm/acpi.h>
 #include <asm/mtrr.h>
 #include <asm/mpspec.h>
+#include <asm/smpenum.h>
 #include <asm/pgalloc.h>
 #include <asm/io_apic.h>
 
@@ -35,13 +36,12 @@
 #include <mach_mpparse.h>
 
 /* Have we found an MP table */
-int smp_found_config;
+int mps_found_config;
 
 /*
  * Various Linux-internal data structures created from the
  * MP-table.
  */
-int apic_version [MAX_APICS];
 int mp_bus_id_to_type [MAX_MP_BUSSES];
 int mp_bus_id_to_node [MAX_MP_BUSSES];
 int mp_bus_id_to_local [MAX_MP_BUSSES];
@@ -49,36 +49,12 @@
 int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };
 int mp_current_pci_id;
 
-/* I/O APIC entries */
-struct mpc_config_ioapic mp_ioapics[MAX_IO_APICS];
-
-/* # of MP IRQ source entries */
-struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
-
 /* MP IRQ source entries */
 int mp_irq_entries;
 
 int nr_ioapics;
 
 int pic_mode;
-unsigned long mp_lapic_addr;
-
-/* Processor that is doing the boot up */
-unsigned int boot_cpu_physical_apicid = -1U;
-unsigned int boot_cpu_logical_apicid = -1U;
-/* Internal processor count */
-static unsigned int __initdata num_processors;
-
-/* Bitmask of physically existing CPUs */
-unsigned long phys_cpu_present_map;
-
-int x86_summit = 0;
-u8 bios_cpu_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
-
-/*
- * Intel MP BIOS table parsing routines:
- */
-
 
 /*
  * Checksum an MP configuration block.
@@ -94,116 +70,24 @@
 	return sum & 0xFF;
 }
 
-/*
- * Have to match translation table entries to main table entries by counter
- * hence the mpc_record variable .... can't see a less disgusting way of
- * doing this ....
- */
-
-static int mpc_record; 
-static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] __initdata;
-
-void __init MP_processor_info (struct mpc_config_processor *m)
-{
- 	int ver, apicid;
- 	
-	if (!(m->mpc_cpuflag & CPU_ENABLED))
-		return;
-
-	apicid = mpc_apic_id(m, translation_table[mpc_record]->trans_quad);
-
-	if (m->mpc_featureflag&(1<<0))
-		Dprintk("    Floating point unit present.\n");
-	if (m->mpc_featureflag&(1<<7))
-		Dprintk("    Machine Exception supported.\n");
-	if (m->mpc_featureflag&(1<<8))
-		Dprintk("    64 bit compare & exchange supported.\n");
-	if (m->mpc_featureflag&(1<<9))
-		Dprintk("    Internal APIC present.\n");
-	if (m->mpc_featureflag&(1<<11))
-		Dprintk("    SEP present.\n");
-	if (m->mpc_featureflag&(1<<12))
-		Dprintk("    MTRR  present.\n");
-	if (m->mpc_featureflag&(1<<13))
-		Dprintk("    PGE  present.\n");
-	if (m->mpc_featureflag&(1<<14))
-		Dprintk("    MCA  present.\n");
-	if (m->mpc_featureflag&(1<<15))
-		Dprintk("    CMOV  present.\n");
-	if (m->mpc_featureflag&(1<<16))
-		Dprintk("    PAT  present.\n");
-	if (m->mpc_featureflag&(1<<17))
-		Dprintk("    PSE  present.\n");
-	if (m->mpc_featureflag&(1<<18))
-		Dprintk("    PSN  present.\n");
-	if (m->mpc_featureflag&(1<<19))
-		Dprintk("    Cache Line Flush Instruction present.\n");
-	/* 20 Reserved */
-	if (m->mpc_featureflag&(1<<21))
-		Dprintk("    Debug Trace and EMON Store present.\n");
-	if (m->mpc_featureflag&(1<<22))
-		Dprintk("    ACPI Thermal Throttle Registers  present.\n");
-	if (m->mpc_featureflag&(1<<23))
-		Dprintk("    MMX  present.\n");
-	if (m->mpc_featureflag&(1<<24))
-		Dprintk("    FXSR  present.\n");
-	if (m->mpc_featureflag&(1<<25))
-		Dprintk("    XMM  present.\n");
-	if (m->mpc_featureflag&(1<<26))
-		Dprintk("    Willamette New Instructions  present.\n");
-	if (m->mpc_featureflag&(1<<27))
-		Dprintk("    Self Snoop  present.\n");
-	if (m->mpc_featureflag&(1<<28))
-		Dprintk("    HT  present.\n");
-	if (m->mpc_featureflag&(1<<29))
-		Dprintk("    Thermal Monitor present.\n");
-	/* 30, 31 Reserved */
-
-
-	if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {
-		Dprintk("    Bootup CPU\n");
-		boot_cpu_physical_apicid = m->mpc_apicid;
-		boot_cpu_logical_apicid = apicid;
-	}
-
-	num_processors++;
-
-	if (m->mpc_apicid > MAX_APICS) {
-		printk("Processor #%d INVALID. (Max ID: %d).\n",
-			m->mpc_apicid, MAX_APICS);
-		--num_processors;
-		return;
-	}
-	ver = m->mpc_apicver;
-
-	phys_cpu_present_map |= apicid_to_cpu_present(apicid);
-	
-	/*
-	 * Validate version
-	 */
-	if (ver == 0x0) {
-		printk("BIOS bug, APIC version is 0 for CPU#%d! fixing up to 0x10. (tell your hw vendor)\n", m->mpc_apicid);
-		ver = 0x10;
-	}
-	apic_version[m->mpc_apicid] = ver;
-	bios_cpu_apicid[num_processors - 1] = m->mpc_apicid;
-}
+extern int mps_record;
+extern struct mps_config_translation *translation_table[MAX_MPC_ENTRY];
 
-static void __init MP_bus_info (struct mpc_config_bus *m)
+static void __init MP_bus_info (struct mps_config_bus *m)
 {
 	char str[7];
 
 	memcpy(str, m->mpc_bustype, 6);
 	str[6] = 0;
 
-	mpc_oem_bus_info(m, str, translation_table[mpc_record]);
+	mpc_oem_bus_info(m, str, translation_table[mps_record]);
 
 	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, BUSTYPE_EISA, sizeof(BUSTYPE_EISA)-1) == 0) {
 		mp_bus_id_to_type[m->mpc_busid] = MP_BUS_EISA;
 	} else if (strncmp(str, BUSTYPE_PCI, sizeof(BUSTYPE_PCI)-1) == 0) {
-		mpc_oem_pci_bus(m, translation_table[mpc_record]);
+		mpc_oem_pci_bus(m, translation_table[mps_record]);
 		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++;
@@ -214,7 +98,7 @@
 	}
 }
 
-static void __init MP_ioapic_info (struct mpc_config_ioapic *m)
+static void __init MP_ioapic_info (struct mps_config_ioapic *m)
 {
 	if (!(m->mpc_flags & MPC_APIC_USABLE))
 		return;
@@ -235,7 +119,7 @@
 	nr_ioapics++;
 }
 
-static void __init MP_intsrc_info (struct mpc_config_intsrc *m)
+static void __init MP_intsrc_info (struct mps_config_intsrc *m)
 {
 	mp_irqs [mp_irq_entries] = *m;
 	Dprintk("Int: type %d, pol %d, trig %d, bus %d,"
@@ -247,7 +131,7 @@
 		panic("Max # of irq sources exceeded!!\n");
 }
 
-static void __init MP_lintsrc_info (struct mpc_config_lintsrc *m)
+static void __init MP_lintsrc_info (struct mps_config_lintsrc *m)
 {
 	Dprintk("Lint: type %d, pol %d, trig %d, bus %d,"
 		" IRQ %02x, APIC ID %x, APIC LINT %02x\n",
@@ -270,14 +154,14 @@
 }
 
 #ifdef CONFIG_X86_NUMAQ
-static void __init MP_translation_info (struct mpc_config_translation *m)
+static void __init MP_translation_info (struct mps_config_translation *m)
 {
-	printk("Translation: record %d, type %d, quad %d, global %d, local %d\n", mpc_record, m->trans_type, m->trans_quad, m->trans_global, m->trans_local);
+	printk("Translation: record %d, type %d, quad %d, global %d, local %d\n", mps_record, m->trans_type, m->trans_quad, m->trans_global, m->trans_local);
 
-	if (mpc_record >= MAX_MPC_ENTRY) 
+	if (mps_record >= MAX_MPC_ENTRY) 
 		printk("MAX_MPC_ENTRY exceeded!\n");
 	else
-		translation_table[mpc_record] = m; /* stash this for later */
+		translation_table[mps_record] = m; /* stash this for later */
 	if (m->trans_quad+1 > numnodes)
 		numnodes = m->trans_quad+1;
 }
@@ -286,13 +170,13 @@
  * Read/parse the MPC oem tables
  */
 
-static void __init smp_read_mpc_oem(struct mp_config_oemtable *oemtable, \
+static void __init mps_read_mpc_oem(struct mp_config_oemtable *oemtable, \
 	unsigned short oemsize)
 {
 	int count = sizeof (*oemtable); /* the header size */
 	unsigned char *oemptr = ((unsigned char *)oemtable)+count;
 	
-	mpc_record = 0;
+	mps_record = 0;
 	printk("Found an OEM MPC table at %8p - parsing it ... \n", oemtable);
 	if (memcmp(oemtable->oem_signature,MPC_OEM_SIGNATURE,4))
 	{
@@ -312,12 +196,12 @@
 		switch (*oemptr) {
 			case MP_TRANSLATION:
 			{
-				struct mpc_config_translation *m=
-					(struct mpc_config_translation *)oemptr;
+				struct mps_config_translation *m=
+					(struct mps_config_translation *)oemptr;
 				MP_translation_info(m);
 				oemptr += sizeof(*m);
 				count += sizeof(*m);
-				++mpc_record;
+				++mps_record;
 				break;
 			}
 			default:
@@ -334,12 +218,13 @@
  * Read/parse the MPC
  */
 
-static int __init smp_read_mpc(struct mp_config_table *mpc)
+static int __init mps_parse_table(struct mp_config_table *mpc)
 {
 	char str[16];
 	char oem[10];
 	int count=sizeof(*mpc);
 	unsigned char *mpt=((unsigned char *)mpc)+count;
+	int found_processor = 0;
 
 	if (memcmp(mpc->mpc_signature,MPC_SIGNATURE,4)) {
 		panic("SMP mptable: bad signature [%c%c%c%c]!\n",
@@ -384,24 +269,28 @@
 	/*
 	 *	Now process the configuration blocks.
 	 */
-	mpc_record = 0;
+	mps_record = 0;
 	while (count < mpc->mpc_length) {
 		switch(*mpt) {
 			case MP_PROCESSOR:
 			{
-				struct mpc_config_processor *m=
-					(struct mpc_config_processor *)mpt;
-				/* ACPI may have already provided this data */
-				if (!acpi_lapic)
-					MP_processor_info(m);
+				struct mps_config_processor *m=
+					(struct mps_config_processor *)mpt;
+				struct mpc_config_processor cpu;
+
+				cpu.mpc_apicid = m->mpc_apicid;
+				cpu.mpc_apicver = m->mpc_apicver;
+				smp_processor_register(&cpu);
+				found_processor++;
+
 				mpt += sizeof(*m);
 				count += sizeof(*m);
 				break;
 			}
 			case MP_BUS:
 			{
-				struct mpc_config_bus *m=
-					(struct mpc_config_bus *)mpt;
+				struct mps_config_bus *m=
+					(struct mps_config_bus *)mpt;
 				MP_bus_info(m);
 				mpt += sizeof(*m);
 				count += sizeof(*m);
@@ -409,8 +298,8 @@
 			}
 			case MP_IOAPIC:
 			{
-				struct mpc_config_ioapic *m=
-					(struct mpc_config_ioapic *)mpt;
+				struct mps_config_ioapic *m=
+					(struct mps_config_ioapic *)mpt;
 				MP_ioapic_info(m);
 				mpt+=sizeof(*m);
 				count+=sizeof(*m);
@@ -418,8 +307,8 @@
 			}
 			case MP_INTSRC:
 			{
-				struct mpc_config_intsrc *m=
-					(struct mpc_config_intsrc *)mpt;
+				struct mps_config_intsrc *m=
+					(struct mps_config_intsrc *)mpt;
 
 				MP_intsrc_info(m);
 				mpt+=sizeof(*m);
@@ -428,8 +317,8 @@
 			}
 			case MP_LINTSRC:
 			{
-				struct mpc_config_lintsrc *m=
-					(struct mpc_config_lintsrc *)mpt;
+				struct mps_config_lintsrc *m=
+					(struct mps_config_lintsrc *)mpt;
 				MP_lintsrc_info(m);
 				mpt+=sizeof(*m);
 				count+=sizeof(*m);
@@ -441,12 +330,12 @@
 				break;
 			}
 		}
-		++mpc_record;
+		++mps_record;
 	}
 	clustered_apic_check();
-	if (!num_processors)
+	if (!found_processor)
 		printk(KERN_ERR "SMP mptable: no processors registered!\n");
-	return num_processors;
+	return found_processor;
 }
 
 static int __init ELCR_trigger(unsigned int irq)
@@ -459,7 +348,7 @@
 
 static void __init construct_default_ioirq_mptable(int mpc_default_type)
 {
-	struct mpc_config_intsrc intsrc;
+	struct mps_config_intsrc intsrc;
 	int i;
 	int ELCR_fallback = 0;
 
@@ -526,9 +415,9 @@
 static inline void __init construct_default_ISA_mptable(int mpc_default_type)
 {
 	struct mpc_config_processor processor;
-	struct mpc_config_bus bus;
-	struct mpc_config_ioapic ioapic;
-	struct mpc_config_lintsrc lintsrc;
+	struct mps_config_bus bus;
+	struct mps_config_ioapic ioapic;
+	struct mps_config_lintsrc lintsrc;
 	int linttypes[2] = { mp_ExtINT, mp_NMI };
 	int i;
 
@@ -540,19 +429,12 @@
 	/*
 	 * 2 CPUs, numbered 0 & 1.
 	 */
-	processor.mpc_type = MP_PROCESSOR;
 	/* Either an integrated APIC or a discrete 82489DX. */
 	processor.mpc_apicver = mpc_default_type > 4 ? 0x10 : 0x01;
-	processor.mpc_cpuflag = CPU_ENABLED;
-	processor.mpc_cpufeature = (boot_cpu_data.x86 << 8) |
-				   (boot_cpu_data.x86_model << 4) |
-				   boot_cpu_data.x86_mask;
-	processor.mpc_featureflag = boot_cpu_data.x86_capability[0];
-	processor.mpc_reserved[0] = 0;
-	processor.mpc_reserved[1] = 0;
 	for (i = 0; i < 2; i++) {
 		processor.mpc_apicid = i;
-		MP_processor_info(&processor);
+		processor.mpc_apicver = mpc_default_type > 4 ? 0x10 : 0x01;
+		smp_processor_register(&processor);
 	}
 
 	bus.mpc_type = MP_BUS;
@@ -611,7 +493,7 @@
 /*
  * Scan the memory blocks for an SMP configuration block.
  */
-void __init get_smp_config (void)
+void __init get_mps_config (void)
 {
 	struct intel_mp_floating *mpf = mpf_found;
 
@@ -651,8 +533,8 @@
 		 * Read the physical hardware table.  Anything here will
 		 * override the defaults.
 		 */
-		if (!smp_read_mpc((void *)mpf->mpf_physptr)) {
-			smp_found_config = 0;
+		if (!mps_parse_table((void *)mpf->mpf_physptr)) {
+			mps_found_config = 0;
 			printk(KERN_ERR "BIOS bug, MP table errors detected!...\n");
 			printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n");
 			return;
@@ -663,7 +545,7 @@
 		 * ISA defaults and hope it will work.
 		 */
 		if (!mp_irq_entries) {
-			struct mpc_config_bus bus;
+			struct mps_config_bus bus;
 
 			printk("BIOS bug, no explicit IRQ entries, using default mptable. (tell your hw vendor)\n");
 
@@ -678,13 +560,12 @@
 	} else
 		BUG();
 
-	printk("Processors: %d\n", num_processors);
 	/*
 	 * Only use the first configuration found.
 	 */
 }
 
-static int __init smp_scan_config (unsigned long base, unsigned long length)
+static int __init mps_scan_config (unsigned long base, unsigned long length)
 {
 	unsigned long *bp = phys_to_virt(base);
 	struct intel_mp_floating *mpf;
@@ -701,7 +582,7 @@
 			((mpf->mpf_specification == 1)
 				|| (mpf->mpf_specification == 4)) ) {
 
-			smp_found_config = 1;
+			mps_found_config = 1;
 			printk("found SMP MP-table at %08lx\n",
 						virt_to_phys(mpf));
 			reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE);
@@ -716,7 +597,7 @@
 	return 0;
 }
 
-void __init find_smp_config (void)
+void __init find_mps_config (void)
 {
 	unsigned int address;
 
@@ -728,9 +609,9 @@
 	 * 2) Scan the top 1K of base RAM
 	 * 3) Scan the 64K of bios
 	 */
-	if (smp_scan_config(0x0,0x400) ||
-		smp_scan_config(639*0x400,0x400) ||
-			smp_scan_config(0xF0000,0x10000))
+	if (mps_scan_config(0x0,0x400) ||
+		mps_scan_config(639*0x400,0x400) ||
+			mps_scan_config(0xF0000,0x10000))
 		return;
 	/*
 	 * If it is an SMP machine we should know now, unless the
@@ -751,8 +632,8 @@
 
 	address = *(unsigned short *)phys_to_virt(0x40E);
 	address <<= 4;
-	smp_scan_config(address, 0x400);
-	if (smp_found_config)
+	mps_scan_config(address, 0x400);
+	if (mps_found_config)
 		printk(KERN_WARNING "WARNING: MP table in the EBDA can be UNSAFE, contact linux-smp@vger.kernel.org if you experience SMP problems!\n");
 }
 
@@ -782,7 +663,6 @@
 	u8			enabled)
 {
 	struct mpc_config_processor processor;
-	int			boot_cpu = 0;
 	
 	if (id >= MAX_APICS) {
 		printk(KERN_WARNING "Processor #%d invalid (max %d)\n",
@@ -790,21 +670,9 @@
 		return;
 	}
 
-	if (id == boot_cpu_physical_apicid)
-		boot_cpu = 1;
-
-	processor.mpc_type = MP_PROCESSOR;
 	processor.mpc_apicid = id;
 	processor.mpc_apicver = 0x10; /* TBD: lapic version */
-	processor.mpc_cpuflag = (enabled ? CPU_ENABLED : 0);
-	processor.mpc_cpuflag |= (boot_cpu ? CPU_BOOTPROCESSOR : 0);
-	processor.mpc_cpufeature = (boot_cpu_data.x86 << 8) | 
-		(boot_cpu_data.x86_model << 4) | boot_cpu_data.x86_mask;
-	processor.mpc_featureflag = boot_cpu_data.x86_capability[0];
-	processor.mpc_reserved[0] = 0;
-	processor.mpc_reserved[1] = 0;
-
-	MP_processor_info(&processor);
+	smp_processor_register(&processor);
 }
 
 #ifdef CONFIG_X86_IO_APIC
@@ -891,7 +759,7 @@
 	u8			trigger, 
 	u32			global_irq)
 {
-	struct mpc_config_intsrc intsrc;
+	struct mps_config_intsrc intsrc;
 	int			i = 0;
 	int			found = 0;
 	int			ioapic = -1;
@@ -950,7 +818,7 @@
 
 void __init mp_config_acpi_legacy_irqs (void)
 {
-	struct mpc_config_intsrc intsrc;
+	struct mps_config_intsrc intsrc;
 	int			i = 0;
 	int			ioapic = -1;
 
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
--- a/arch/i386/kernel/setup.c	2003-01-20 11:03:39.000000000 -0800
+++ b/arch/i386/kernel/setup.c	2003-01-20 11:10:36.000000000 -0800
@@ -762,12 +762,6 @@
 	 */
 	acpi_reserve_bootmem();
 #endif
-#ifdef CONFIG_X86_FIND_SMP_CONFIG
-	/*
-	 * Find and reserve possible boot-time SMP configuration:
-	 */
-	find_smp_config();
-#endif
 
 #ifdef CONFIG_BLK_DEV_INITRD
 	if (LOADER_TYPE && INITRD_START) {
@@ -895,16 +889,24 @@
 	smp_alloc_memory(); /* AP processor realmode stacks in low memory*/
 #endif
 	paging_init();
+
+#ifdef CONFIG_X86_FIND_SMP_CONFIG
+	/*
+	 * Find and reserve possible boot-time SMP configuration:
+	*/
+	find_mps_config();
+#endif
 #ifdef CONFIG_ACPI_BOOT
 	/*
 	 * Parse the ACPI tables for possible boot-time SMP configuration.
 	 */
 	if (!acpi_disabled)
-		acpi_boot_init(*cmdline_p);
+		acpi_boot_init();
 #endif
+
 #ifdef CONFIG_X86_LOCAL_APIC
-	if (smp_found_config)
-		get_smp_config();
+	if (mps_found_config)
+		get_mps_config();
 #endif
 
 	register_memory(max_low_pfn);
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
--- a/arch/i386/kernel/smpboot.c	2003-01-20 11:03:39.000000000 -0800
+++ b/arch/i386/kernel/smpboot.c	2003-01-20 11:10:36.000000000 -0800
@@ -976,7 +976,7 @@
 	 * If we couldnt find an SMP configuration at boot time,
 	 * get out of here now!
 	 */
-	if (!smp_found_config) {
+	if (!mps_found_config) {
 		printk(KERN_NOTICE "SMP motherboard not detected.\n");
 		smpboot_clear_io_apic_irqs();
 		phys_cpu_present_map = 1;
@@ -1015,7 +1015,7 @@
 	 * If SMP should be disabled, then really disable it!
 	 */
 	if (!max_cpus) {
-		smp_found_config = 0;
+		mps_found_config = 0;
 		printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n");
 		smpboot_clear_io_apic_irqs();
 		phys_cpu_present_map = 1;
diff -Naur -X /root/bin/dontdiff a/arch/i386/kernel/smpenum.c b/arch/i386/kernel/smpenum.c
--- a/arch/i386/kernel/smpenum.c	1969-12-31 16:00:00.000000000 -0800
+++ b/arch/i386/kernel/smpenum.c	2003-01-20 11:11:52.000000000 -0800
@@ -0,0 +1,92 @@
+/*
+ *	Generic SMP enumeration code
+ *
+ *	(c) 2003 Andrew Grover <andrew.grover@intel.com>
+ *
+ */
+
+#include <linux/mm.h>
+#include <linux/init.h>
+#include <asm/io.h>
+#include <asm/smp.h>
+#include <asm/mpspec.h>
+
+#include <mach_apic.h>
+#include <mach_mpparse.h>
+
+/* ---------- EXPORTED VARS ---------- */
+/*
+ * Various Linux-internal data structures created from the
+ * MP-table.
+ */
+int apic_version [MAX_APICS];
+
+/* Processor that is doing the boot up */
+unsigned int boot_cpu_physical_apicid = -1U;
+
+/* Bitmask of physically existing CPUs */
+unsigned long phys_cpu_present_map;
+
+/* I/O APIC entries */
+struct mps_config_ioapic mp_ioapics[MAX_IO_APICS];
+
+/* # of MP IRQ source entries */
+struct mps_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
+
+unsigned long mp_lapic_addr;
+
+/* ---------- STATIC VARS ---------- */
+
+static u8 raw_phys_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
+
+/*
+ * Have to match translation table entries to main table entries by counter
+ * hence the mps_record variable .... can't see a less disgusting way of
+ * doing this ....
+ */
+/* N.B. This is here temporarily until we can come up with a good way to put it in
+   a numa-only .c file - ASG */
+
+int mps_record;
+struct mps_config_translation *translation_table[MAX_MPC_ENTRY] __initdata;
+
+/* -- CODE -- */
+
+void __init smp_processor_register (struct mpc_config_processor *m)
+{
+ 	int ver, apicid;
+	static unsigned int num_processors;
+
+	apicid = mpc_apic_id(m, translation_table[mps_record]->trans_quad);
+ 	
+	/* I don't think this is needed, because apic.c sets
+	   boot_cpu_physical_apicid by reading it */
+	/*if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {
+		Dprintk("    Bootup CPU\n");
+		boot_cpu_physical_apicid = m->mpc_apicid;
+	}*/
+
+	num_processors++;
+
+	if (m->mpc_apicid > MAX_APICS) {
+		printk("Processor #%d INVALID. (Max ID: %d).\n",
+			m->mpc_apicid, MAX_APICS);
+		--num_processors;
+		return;
+	}
+	ver = m->mpc_apicver;
+
+	phys_cpu_present_map |= apicid_to_cpu_present(apicid);
+	
+	/*
+	 * Validate version
+	 */
+	if (ver == 0x0) {
+		printk("BIOS bug, APIC version is 0 for CPU#%d! fixing up to 0x10. (tell your hw vendor)\n", m->mpc_apicid);
+		ver = 0x10;
+	}
+	apic_version[m->mpc_apicid] = ver;
+	raw_phys_apicid[num_processors - 1] = m->mpc_apicid;
+	Dprintk("Processor %d found, apicid %d\n", num_processors, apicid);
+}
+
diff -Naur -X /root/bin/dontdiff a/drivers/acpi/tables.c b/drivers/acpi/tables.c
--- a/drivers/acpi/tables.c	2003-01-20 11:03:13.000000000 -0800
+++ b/drivers/acpi/tables.c	2003-01-20 11:10:32.000000000 -0800
@@ -509,8 +509,7 @@
 
 
 int __init
-acpi_table_init (
-	char			*cmdline)
+acpi_table_init (void)
 {
 	struct acpi_table_rsdp	*rsdp = NULL;
 	unsigned long		rsdp_phys = 0;
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/io_apic.h b/include/asm-i386/io_apic.h
--- a/include/asm-i386/io_apic.h	2003-01-20 11:04:09.000000000 -0800
+++ b/include/asm-i386/io_apic.h	2003-01-20 11:10:42.000000000 -0800
@@ -95,13 +95,13 @@
  */
 
 /* I/O APIC entries */
-extern struct mpc_config_ioapic mp_ioapics[MAX_IO_APICS];
+extern struct mps_config_ioapic mp_ioapics[MAX_IO_APICS];
 
 /* # of MP IRQ source entries */
 extern int mp_irq_entries;
 
 /* MP IRQ source entries */
-extern struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
+extern struct mps_config_intsrc mp_irqs[MAX_IRQ_SOURCES];
 
 /* non-0 if default (table-less) MP configuration */
 extern int mpc_default_type;
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-default/mach_apic.h b/include/asm-i386/mach-default/mach_apic.h
--- a/include/asm-i386/mach-default/mach_apic.h	2003-01-20 11:05:11.000000000 -0800
+++ b/include/asm-i386/mach-default/mach_apic.h	2003-01-20 11:12:56.000000000 -0800
@@ -81,11 +81,8 @@
 
 static inline int mpc_apic_id(struct mpc_config_processor *m, int quad)
 {
-	printk("Processor #%d %ld:%ld APIC version %d\n",
-			m->mpc_apicid,
-			(m->mpc_cpufeature & CPU_FAMILY_MASK) >> 8,
-			(m->mpc_cpufeature & CPU_MODEL_MASK) >> 4,
-			m->mpc_apicver);
+	printk("Processor #%d APIC version %d\n",
+			m->mpc_apicid, m->mpc_apicver);
 	return (m->mpc_apicid);
 }
 
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-default/mach_mpparse.h b/include/asm-i386/mach-default/mach_mpparse.h
--- a/include/asm-i386/mach-default/mach_mpparse.h	2003-01-20 11:04:42.000000000 -0800
+++ b/include/asm-i386/mach-default/mach_mpparse.h	2003-01-20 11:11:56.000000000 -0800
@@ -1,14 +1,14 @@
 #ifndef __ASM_MACH_MPPARSE_H
 #define __ASM_MACH_MPPARSE_H
 
-static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_bus_info(struct mps_config_bus *m, char *name, 
+				struct mps_config_translation *translation)
 {
 	Dprintk("Bus #%d is %s\n", m->mpc_busid, name);
 }
 
-static inline void mpc_oem_pci_bus(struct mpc_config_bus *m, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_pci_bus(struct mps_config_bus *m, 
+				struct mps_config_translation *translation)
 {
 }
 
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-numaq/mach_apic.h b/include/asm-i386/mach-numaq/mach_apic.h
--- a/include/asm-i386/mach-numaq/mach_apic.h	2003-01-20 11:03:27.000000000 -0800
+++ b/include/asm-i386/mach-numaq/mach_apic.h	2003-01-20 11:10:34.000000000 -0800
@@ -77,10 +77,8 @@
 {
 	int logical_apicid = generate_logical_apicid(quad, m->mpc_apicid);
 
-	printk("Processor #%d %ld:%ld APIC version %d (quad %d, apic %d)\n",
+	printk("Processor #%d APIC version %d (quad %d, apic %d)\n",
 			m->mpc_apicid,
-			(m->mpc_cpufeature & CPU_FAMILY_MASK) >> 8,
-			(m->mpc_cpufeature & CPU_MODEL_MASK) >> 4,
 			m->mpc_apicver, quad, logical_apicid);
 	return logical_apicid;
 }
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-numaq/mach_mpparse.h b/include/asm-i386/mach-numaq/mach_mpparse.h
--- a/include/asm-i386/mach-numaq/mach_mpparse.h	2003-01-20 11:03:03.000000000 -0800
+++ b/include/asm-i386/mach-numaq/mach_mpparse.h	2003-01-20 11:10:30.000000000 -0800
@@ -4,8 +4,8 @@
 static void __init smp_read_mpc_oem(struct mp_config_oemtable *oemtable,
 		        unsigned short oemsize);
 
-static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_bus_info(struct mps_config_bus *m, char *name, 
+				struct mps_config_translation *translation)
 {
 	int quad = translation->trans_quad;
 	int local = translation->trans_local;
@@ -15,8 +15,8 @@
 	printk("Bus #%d is %s (node %d)\n", m->mpc_busid, name, quad);
 }
 
-static inline void mpc_oem_pci_bus(struct mpc_config_bus *m, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_pci_bus(struct mps_config_bus *m, 
+				struct mps_config_translation *translation)
 {
 	int quad = translation->trans_quad;
 	int local = translation->trans_local;
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-summit/mach_apic.h b/include/asm-i386/mach-summit/mach_apic.h
--- a/include/asm-i386/mach-summit/mach_apic.h	2003-01-20 11:04:07.000000000 -0800
+++ b/include/asm-i386/mach-summit/mach_apic.h	2003-01-20 11:10:41.000000000 -0800
@@ -92,10 +92,8 @@
 
 static inline int mpc_apic_id(struct mpc_config_processor *m, int quad)
 {
-	printk("Processor #%d %ld:%ld APIC version %d\n",
+	printk("Processor #%d APIC version %d\n",
 			m->mpc_apicid,
-			(m->mpc_cpufeature & CPU_FAMILY_MASK) >> 8,
-			(m->mpc_cpufeature & CPU_MODEL_MASK) >> 4,
 			m->mpc_apicver);
 	return (m->mpc_apicid);
 }
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mach-summit/mach_mpparse.h b/include/asm-i386/mach-summit/mach_mpparse.h
--- a/include/asm-i386/mach-summit/mach_mpparse.h	2003-01-20 11:03:28.000000000 -0800
+++ b/include/asm-i386/mach-summit/mach_mpparse.h	2003-01-20 11:10:34.000000000 -0800
@@ -1,14 +1,14 @@
 #ifndef __ASM_MACH_MPPARSE_H
 #define __ASM_MACH_MPPARSE_H
 
-static inline void mpc_oem_bus_info(struct mpc_config_bus *m, char *name, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_bus_info(struct mps_config_bus *m, char *name, 
+				struct mps_config_translation *translation)
 {
 	Dprintk("Bus #%d is %s\n", m->mpc_busid, name);
 }
 
-static inline void mpc_oem_pci_bus(struct mpc_config_bus *m, 
-				struct mpc_config_translation *translation)
+static inline void mpc_oem_pci_bus(struct mps_config_bus *m, 
+				struct mps_config_translation *translation)
 {
 }
 
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/mpspec.h b/include/asm-i386/mpspec.h
--- a/include/asm-i386/mpspec.h	2003-01-20 11:02:04.000000000 -0800
+++ b/include/asm-i386/mpspec.h	2003-01-20 11:10:17.000000000 -0800
@@ -63,7 +63,7 @@
 #define	MP_LINTSRC	4
 #define	MP_TRANSLATION  192  /* Used by IBM NUMA-Q to describe node locality */
 
-struct mpc_config_processor
+struct mps_config_processor
 {
 	unsigned char mpc_type;
 	unsigned char mpc_apicid;	/* Local APIC number */
@@ -79,7 +79,7 @@
 	unsigned long mpc_reserved[2];
 };
 
-struct mpc_config_bus
+struct mps_config_bus
 {
 	unsigned char mpc_type;
 	unsigned char mpc_busid;
@@ -107,7 +107,7 @@
 #define BUSTYPE_XPRESS	"XPRESS"
 #define BUSTYPE_NEC98	"NEC98"
 
-struct mpc_config_ioapic
+struct mps_config_ioapic
 {
 	unsigned char mpc_type;
 	unsigned char mpc_apicid;
@@ -117,7 +117,7 @@
 	unsigned long mpc_apicaddr;
 };
 
-struct mpc_config_intsrc
+struct mps_config_intsrc
 {
 	unsigned char mpc_type;
 	unsigned char mpc_irqtype;
@@ -140,7 +140,7 @@
 #define MP_IRQDIR_LOW		3
 
 
-struct mpc_config_lintsrc
+struct mps_config_lintsrc
 {
 	unsigned char mpc_type;
 	unsigned char mpc_irqtype;
@@ -162,7 +162,7 @@
 	char  mpc_oem[8];
 };
 
-struct mpc_config_translation
+struct mps_config_translation
 {
         unsigned char mpc_type;
         unsigned char trans_len;
@@ -207,14 +207,14 @@
 
 extern unsigned int boot_cpu_physical_apicid;
 extern unsigned long phys_cpu_present_map;
-extern int smp_found_config;
-extern void find_smp_config (void);
-extern void get_smp_config (void);
+extern int mps_found_config;
+extern void find_mps_config (void);
+extern void get_mps_config (void);
 extern int nr_ioapics;
 extern int apic_version [MAX_APICS];
 extern int mp_bus_id_to_type [MAX_MP_BUSSES];
 extern int mp_irq_entries;
-extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
+extern struct mps_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
 extern int mpc_default_type;
 extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
 extern int mp_current_pci_id;
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/smpenum.h b/include/asm-i386/smpenum.h
--- a/include/asm-i386/smpenum.h	1969-12-31 16:00:00.000000000 -0800
+++ b/include/asm-i386/smpenum.h	2003-01-20 11:10:40.000000000 -0800
@@ -0,0 +1,182 @@
+#ifndef __ASM_SMPENUM_H
+#define __ASM_SMPENUM_H
+
+/*
+ * Generic structures for modular SMP init
+ */
+
+/* Followed by entries */
+
+#define	MP_PROCESSOR	0
+#define	MP_BUS		1
+#define	MP_IOAPIC	2
+#define	MP_INTSRC	3
+#define	MP_LINTSRC	4
+#define	MP_TRANSLATION  192  /* Used by IBM NUMA-Q to describe node locality */
+
+struct mpc_config_processor
+{
+	unsigned char mpc_apicid;	/* Local APIC number */
+	unsigned char mpc_apicver;	/* Local APIC version */
+};
+
+void smp_processor_register(struct mpc_config_processor *m);
+
+struct mpc_config_bus
+{
+	unsigned char mpc_type;
+	unsigned char mpc_busid;
+	unsigned char mpc_bustype[6] __attribute((packed));
+};
+
+#if 0
+
+/* List of Bus Type string values, Intel MP Spec. */
+#define BUSTYPE_EISA	"EISA"
+#define BUSTYPE_ISA	"ISA"
+#define BUSTYPE_INTERN	"INTERN"	/* Internal BUS */
+#define BUSTYPE_MCA	"MCA"
+#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"
+#define BUSTYPE_NEC98	"NEC98"
+
+struct mpc_config_ioapic
+{
+	unsigned char mpc_type;
+	unsigned char mpc_apicid;
+	unsigned char mpc_apicver;
+	unsigned char mpc_flags;
+#define MPC_APIC_USABLE		0x01
+	unsigned long mpc_apicaddr;
+};
+
+struct mpc_config_intsrc
+{
+	unsigned char mpc_type;
+	unsigned char mpc_irqtype;
+	unsigned short mpc_irqflag;
+	unsigned char mpc_srcbus;
+	unsigned char mpc_srcbusirq;
+	unsigned char mpc_dstapic;
+	unsigned char mpc_dstirq;
+};
+
+enum mp_irq_source_types {
+	mp_INT = 0,
+	mp_NMI = 1,
+	mp_SMI = 2,
+	mp_ExtINT = 3
+};
+
+#define MP_IRQDIR_DEFAULT	0
+#define MP_IRQDIR_HIGH		1
+#define MP_IRQDIR_LOW		3
+
+
+struct mpc_config_lintsrc
+{
+	unsigned char mpc_type;
+	unsigned char mpc_irqtype;
+	unsigned short mpc_irqflag;
+	unsigned char mpc_srcbusid;
+	unsigned char mpc_srcbusirq;
+	unsigned char mpc_destapic;	
+#define MP_APIC_ALL	0xFF
+	unsigned char mpc_destapiclint;
+};
+
+struct mp_config_oemtable
+{
+	char oem_signature[4];
+#define MPC_OEM_SIGNATURE "_OEM"
+	unsigned short oem_length;	/* Size of table */
+	char  oem_rev;			/* 0x01 */
+	char  oem_checksum;
+	char  mpc_oem[8];
+};
+
+struct mpc_config_translation
+{
+        unsigned char mpc_type;
+        unsigned char trans_len;
+        unsigned char trans_type;
+        unsigned char trans_quad;
+        unsigned char trans_global;
+        unsigned char trans_local;
+        unsigned short trans_reserved;
+};
+
+/*
+ *	Default configurations
+ *
+ *	1	2 CPU ISA 82489DX
+ *	2	2 CPU EISA 82489DX neither IRQ 0 timer nor IRQ 13 DMA chaining
+ *	3	2 CPU EISA 82489DX
+ *	4	2 CPU MCA 82489DX
+ *	5	2 CPU ISA+PCI
+ *	6	2 CPU EISA+PCI
+ *	7	2 CPU MCA+PCI
+ */
+
+#ifdef CONFIG_X86_NUMAQ
+#define MAX_IRQ_SOURCES 512
+#else /* !CONFIG_X86_NUMAQ */
+#define MAX_IRQ_SOURCES 256
+#endif /* CONFIG_X86_NUMAQ */
+
+#define MAX_MP_BUSSES 32
+enum mp_bustype {
+	MP_BUS_ISA = 1,
+	MP_BUS_EISA,
+	MP_BUS_PCI,
+	MP_BUS_MCA,
+	MP_BUS_NEC98
+};
+extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+extern int mp_bus_id_to_node [MAX_MP_BUSSES];
+extern int mp_bus_id_to_local [MAX_MP_BUSSES];
+extern int quad_local_to_mp_bus_id [NR_CPUS/4][4];
+extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
+
+extern unsigned int boot_cpu_physical_apicid;
+extern unsigned long phys_cpu_present_map;
+extern int mps_found_config;
+extern void find_mps_config (void);
+extern void get_mps_config (void);
+extern int nr_ioapics;
+extern int apic_version [MAX_APICS];
+extern int mp_bus_id_to_type [MAX_MP_BUSSES];
+extern int mp_irq_entries;
+extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
+extern int mpc_default_type;
+extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
+extern int mp_current_pci_id;
+extern unsigned long mp_lapic_addr;
+extern int pic_mode;
+extern int using_apic_timer;
+
+#ifdef CONFIG_ACPI_BOOT
+extern void mp_register_lapic (u8 id, u8 enabled);
+extern void mp_register_lapic_address (u64 address);
+extern void mp_register_ioapic (u8 id, u32 address, u32 irq_base);
+extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 global_irq);
+extern void mp_config_acpi_legacy_irqs (void);
+extern void mp_config_ioapic_for_sci(int irq);
+extern void mp_parse_prt (void);
+#endif /*CONFIG_ACPI_BOOT*/
+
+#endif
+
+#endif /* if 0 */
diff -Naur -X /root/bin/dontdiff a/include/asm-i386/smp.h b/include/asm-i386/smp.h
--- a/include/asm-i386/smp.h	2003-01-20 11:03:56.000000000 -0800
+++ b/include/asm-i386/smp.h	2003-01-20 11:10:39.000000000 -0800
@@ -15,6 +15,7 @@
 #include <asm/fixmap.h>
 #include <asm/bitops.h>
 #include <asm/mpspec.h>
+#include <asm/smpenum.h>
 #ifdef CONFIG_X86_IO_APIC
 #include <asm/io_apic.h>
 #endif
diff -Naur -X /root/bin/dontdiff a/include/linux/acpi.h b/include/linux/acpi.h
--- a/include/linux/acpi.h	2003-01-20 11:02:04.000000000 -0800
+++ b/include/linux/acpi.h	2003-01-20 11:10:17.000000000 -0800
@@ -351,10 +351,10 @@
 
 char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
 unsigned long acpi_find_rsdp (void);
-int acpi_boot_init (char *cmdline);
+int acpi_boot_init (void);
 int acpi_numa_init (void);
 
-int acpi_table_init (char *cmdline);
+int acpi_table_init (void);
 int acpi_table_parse (enum acpi_table_id id, acpi_table_handler handler);
 int acpi_get_table_header_early (enum acpi_table_id id, struct acpi_table_header **header);
 int acpi_table_parse_madt (enum acpi_madt_entry_id id, acpi_madt_entry_handler handler);


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21  3:12 [PATCH] SMP parsing rewrite, phase 1 Andy Grover
@ 2003-01-21  4:28 ` Martin J. Bligh
  2003-01-21  7:12 ` Zwane Mwaikambo
  2003-01-21 20:31 ` Andrew Walrond
  2 siblings, 0 replies; 10+ messages in thread
From: Martin J. Bligh @ 2003-01-21  4:28 UTC (permalink / raw)
  To: Andy Grover, linux-kernel; +Cc: acpi-devel, mingo

Would be a lot easier to read if you could seperate out the
renames from the rest of the patch that actually does things.
It all makes me slightly nervous as this stuff is really easy
to break ... and it breaks wierd machines that are hard to test
for (been there, done that ;-)).

+static u8 raw_phys_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };

Looks odd. May have merged forward badly, that got renamed in 2.5.59
to bios_cpu_apicid or something. 

Anyway, I'll give it a spin on my wierdo box, and see what happens.

M.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21  3:12 [PATCH] SMP parsing rewrite, phase 1 Andy Grover
  2003-01-21  4:28 ` Martin J. Bligh
@ 2003-01-21  7:12 ` Zwane Mwaikambo
  2003-01-21 20:31 ` Andrew Walrond
  2 siblings, 0 replies; 10+ messages in thread
From: Zwane Mwaikambo @ 2003-01-21  7:12 UTC (permalink / raw)
  To: Andy Grover; +Cc: Linux Kernel, acpi-devel, Martin Bligh, mingo

On Mon, 20 Jan 2003, Andy Grover wrote:

> Hi all,
> 
> The below patch against 2.5.59 is also available from 
> ftp://ftp.kernel.org/pub/linux/kernel/people/grover/ ,
> or bk pull http://linux-acpi.bkbits.net/linux-smp-init .
> 
> Before I spent any more time carving up mpparse.c, I just wanted to have
> the chance for feedback from others.

Booted fine on ghetto SMP, 4way i686, 1 IOAPIC, 1 ISA bus with a BSP APIC 
ID of 2;


===============================================================================

MPTable, version 2.0.15 Linux

-------------------------------------------------------------------------------

MP Floating Pointer Structure:

  location:			BIOS
  physical address:		0x000fd110
  signature:			'_MP_'
  length:			16 bytes
  version:			1.4
  checksum:			0xc1
  mode:				Virtual Wire

-------------------------------------------------------------------------------

MP Config Table Header:

  physical address:		0x0xfd000
  signature:			'PCMP'
  base table length:		268
  version:			1.4
  checksum:			0xdd
  OEM ID:			'BOCHSCPU'
  Product ID:			'0.1         '
  OEM table pointer:		0x00000000
  OEM table size:		0
  entry count:			22
  local APIC address:		0xfee00000
  extended table length:	0
  extended table checksum:	0

-------------------------------------------------------------------------------

MP Config Base Table Entries:

--
Processors:	APIC ID	Version	State		Family	Model	Step	Flags
		 0	 0x11	 AP, usable	 6	 0	 0	 0x0201
		 1	 0x11	 AP, usable	 6	 0	 0	 0x0201
		 2	 0x11	 BSP, usable	 6	 0	 0	 0x0201
		 3	 0x11	 AP, usable	 6	 0	 0	 0x0201
--
Bus:		Bus ID	Type
		 0	 ISA   
--
I/O APICs:	APIC ID	Version	State		Address
		 4	 0x11	 usable		 0xfec00000
--
I/O Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	PIN#
		INT	 conforms    conforms	     0	   0	      4	   0
		INT	 conforms    conforms	     0	   1	      4	   1
		INT	 conforms    conforms	     0	   2	      4	   2
		INT	 conforms    conforms	     0	   3	      4	   3
		INT	 conforms    conforms	     0	   4	      4	   4
		INT	 conforms    conforms	     0	   5	      4	   5
		INT	 conforms    conforms	     0	   6	      4	   6
		INT	 conforms    conforms	     0	   7	      4	   7
		INT	 conforms    conforms	     0	   8	      4	   8
		INT	 conforms    conforms	     0	   9	      4	   9
		INT	 conforms    conforms	     0	  10	      4	  10
		INT	 conforms    conforms	     0	  11	      4	  11
		INT	 conforms    conforms	     0	  12	      4	  12
		INT	 conforms    conforms	     0	  13	      4	  13
		INT	 conforms    conforms	     0	  14	      4	  14
		INT	 conforms    conforms	     0	  15	      4	  15

===============================================================================


-- 
function.linuxpower.ca


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21  3:12 [PATCH] SMP parsing rewrite, phase 1 Andy Grover
  2003-01-21  4:28 ` Martin J. Bligh
  2003-01-21  7:12 ` Zwane Mwaikambo
@ 2003-01-21 20:31 ` Andrew Walrond
  2003-01-21 20:54   ` Andrew Walrond
                     ` (2 more replies)
  2 siblings, 3 replies; 10+ messages in thread
From: Andrew Walrond @ 2003-01-21 20:31 UTC (permalink / raw)
  To: Andy Grover; +Cc: linux-kernel, acpi-devel

Results from a an Asus PR-DLS Dual Xeon HT

Don't know if this is useful, but I'll try anything that might bring 
back my e1000 ;) No joy though - doesn't find all the PCI buses (14 and 
18 missing - see below)

+==============================================================================+
| CPU Type          : Intel(R) Xeon(TM) CPU 2.60GHz 
        |
| Cache Memory      : 512K,512K,512K,512K Memory Installed  : 4096M 
        |
+------------------------------------------------------------------------------+
| Diskette Drive  A : None                Serial Port(s)    : 3F8 
        |
| Diskette Drive  B : None                Parallel Port(s)  : None 
        |
| Pri. Master  Disk : None                DRAM Type         : Registered 
DDR   |
| Pri. Slave   Disk : None 
        |
| Sec. Master  Disk : None 
        |
| Sec. Slave   Disk : None 
        |
+==============================================================================+

PCI device listing.....
Bus No. Device No. Func No. Vendor ID   Device ID   Device Class 
    IRQ
--------------------------------------------------------------------------------
    0        2         0        8086        1229     Network controller 
      12
    0        3         0        1002        4752     Display controller 
      10
   14        4         0        1000        0030     Mass storage 
controller 14
   14        4         1        1000        0030     Mass storage 
controller  3
   18        2         0        8086        100D     Network controller 
      15




Press the Pause to pause or any other key to continueROM segment 0x07c0 
length 0x2e00 reloc 0x9400
Etherboot 5.0.7 (GPL) Tagged ELF for [EEPRO100]
Probing...[EEPRO100]Found Intel EtherExpressPro100 ROM address 0xafc0
Ethernet addr: 00:E0:18:D2:75:9D
Searching for server (DHCP)...
Me: 10.0.0.103, Server: 10.0.0.1, Gateway 10.0.0.1
Loading 10.0.0.1:/eboot/kernels/hal.elf (ELF)1093done
Linux version 2.5.59 (root@r2d2.office) (gcc version 3.2) #2 SMP Tue Jan 
21 17:30:26 GMT 2003
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
  BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
  BIOS-e820: 0000000000100000 - 00000000bfffa000 (usable)
  BIOS-e820: 00000000bfffa000 - 00000000bffff000 (ACPI data)
  BIOS-e820: 00000000bffff000 - 00000000c0000000 (ACPI NVS)
  BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
  BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
  BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
On node 0 totalpages: 1048576
   DMA zone: 4096 pages, LIFO batch:1
   Normal zone: 225280 pages, LIFO batch:16
   HighMem zone: 819200 pages, LIFO batch:16
found SMP MP-table at 000f0490
hm, page 000f0000 reserved twice.
hm, page 000f1000 reserved twice.
hm, page 000f0000 reserved twice.
hm, page 000f1000 reserved twice.
ACPI: RSDP (v000 ASUS                       ) @ 0x000f4ff0
ACPI: RSDT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa000
ACPI: FADT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa145
ACPI: BOOT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa034
ACPI: SPCR (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa05c
ACPI: MADT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa0a9
ACPI: DSDT (v001   ASUS PR-DLS   00000.04096) @ 0x00000000
ACPI: BIOS passes blacklist
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 APIC version 16
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] enabled)
Processor #6 APIC version 16
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x07] enabled)
Processor #7 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] global_irq_base[0x0])
IOAPIC[0]: Assigned apic_id 2
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, IRQ 0-15
ACPI: IOAPIC (id[0x03] address[0xfec01000] global_irq_base[0x10])
IOAPIC[1]: Assigned apic_id 3
IOAPIC[1]: apic_id 3, version 17, address 0xfec01000, IRQ 16-31
ACPI: IOAPIC (id[0x04] address[0xfec02000] global_irq_base[0x20])
IOAPIC[2]: Assigned apic_id 4
IOAPIC[2]: apic_id 4, version 17, address 0xfec02000, IRQ 32-47
ACPI: INT_SRC_OVR (bus[0] irq[0x0] global_irq[0x2] polarity[0x0] 
trigger[0x1])
ACPI: INT_SRC_OVR (bus[0] irq[0x9] global_irq[0x9] polarity[0x3] 
trigger[0x3])
Enabling APIC mode:  Flat.  Using 3 I/O APICs
Using ACPI (MADT) for SMP configuration information
Building zonelist for node : 0
Kernel command line: ro root=/dev/nfs ip=dhcp console=tty0 
console=ttyS0,115200n8 init=/boot.sh
Initializing CPU#0
PID hash table entries: 4096 (order 12: 32768 bytes)
Detected 2591.552 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 5111.80 BogoMIPS
Memory: 3100432k/4194304k available (1692k kernel code, 44152k reserved, 
453k data, 312k init, 2228200k hig)Dentry cache hash table entries: 
524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
-> /dev
-> /dev/console
-> /root
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU#0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#0: Thermal monitoring enabled
Machine check exception polling timer started.
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
CPU0: Intel(R) Xeon(TM) CPU 2.60GHz stepping 07
per-CPU timeslice cutoff: 1462.69 usecs.
task migration cache decay timeout: 2 msecs.
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Booting processor 1/1 eip 2000
Initializing CPU#1
masked ExtINT on CPU#1
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Calibrating delay loop... 5177.34 BogoMIPS
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU#1: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#1: Thermal monitoring enabled
CPU1: Intel(R) Xeon(TM) CPU 2.60GHz stepping 07
Total of 2 processors activated (10289.15 BogoMIPS).
cpu_sibling_map[0] = 1
cpu_sibling_map[1] = 0
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 pin1=2 pin2=0
..MP-BIOS bug: 8254 timer not connected to IO-APIC
...trying to set up timer (IRQ0) through the 8259A ...
..... (found pin 0) ...works.
testing the IO APIC.......................



.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 2591.0101 MHz.
..... host bus clock speed is 99.0657 MHz.
checking TSC synchronization across 2 CPUs: passed.
Starting migration thread for cpu 0
Bringing up 1
CPU 1 IS NOW UP!
Starting migration thread for cpu 1
CPUS done 4
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
mtrr: v2.0 (20020519)
PCI: PCI BIOS revision 2.10 entry at 0xf1510, last bus=22
PCI: Using configuration type 1
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]:   1 bvecs: 256 entries (12 bytes)
biovec pool[1]:   4 bvecs: 256 entries (48 bytes)
biovec pool[2]:  16 bvecs: 256 entries (192 bytes)
biovec pool[3]:  64 bvecs: 256 entries (768 bytes)
biovec pool[4]: 128 bvecs: 256 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 256 entries (3072 bytes)
ACPI: Subsystem revision 20030109
  tbxface-0098 [03] acpi_load_tables      : ACPI Tables successfully 
acquired
Parsing all Control 
Methods:................................................................................Table 
[DSDT] - 643 Objects with 62 Devices 202 Methods 12 Regions
ACPI Namespace successfully loaded at root c038b7fc
evxfevnt-0073 [04] acpi_enable           : Transition to ACPI mode 
successful
    evgpe-0262: *** Info: GPE Block0 defined as GPE0 to GPE31
    evgpe-0262: *** Info: GPE Block1 defined as GPE32 to GPE63
Executing all Device _STA and_INI 
methods:..............................................................
62 Devices found containing: 62 _STA, 4 _INI methods
Completing Region/Field/Buffer/Package 
initialization:......................................................Initialized 
8/12 Regions 0/0 Fields 49/49 Buffers 14/14 Packages (643 nodes)
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11 *12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 11 12 14 *15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKI] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKJ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKK] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKL] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKM] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKN] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKO] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKP] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKQ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKR] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKS] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKT] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKU] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKV] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKW] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKX] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKY] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKZ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNK5] (IRQs 5 10 11 12 14 15, disabled)
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
pci_bind-0191 [04] acpi_pci_bind         : Device 00:00:0f.02 not 
present in PCI namespace
ACPI: PCI Root Bridge [PCI1] (00:00)
ACPI: PCI Root Bridge [PCI2] (00:00)
ACPI: PCI Root Bridge [PCI3] (00:00)
ACPI: PCI Root Bridge [PCI4] (00:00)
block request queues:
  128 requests per read queue
  128 requests per write queue
  8 requests per batch
  enter congestion at 15
  exit congestion at 17
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 9
pci_link-0343 [03] acpi_pci_link_set     : Attempt to enable at IRQ 11 
resulted in IRQ 9
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 0
ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKG] enabled at IRQ 9
pci_link-0343 [03] acpi_pci_link_set     : Attempt to enable at IRQ 11 
resulted in IRQ 9
ACPI: PCI Interrupt Link [LNKH] enabled at IRQ 0
ACPI: PCI Interrupt Link [LNKI] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKJ] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKK] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKL] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNKM] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKN] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKO] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKP] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNKQ] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKR] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKS] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKT] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNKU] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKV] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNKW] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNKX] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNKY] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNKZ] enabled at IRQ 10
ACPI: PCI Interrupt Link [LNK0] enabled at IRQ 5
ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 9
ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 11
ACPI: PCI Interrupt Link [LNK3] enabled at IRQ 10
pci_link-0343 [03] acpi_pci_link_set     : Attempt to enable at IRQ 5 
resulted in IRQ 10
ACPI: PCI Interrupt Link [LNK5] enabled at IRQ 0
PCI: Using ACPI for IRQ routing
PCI: if you experience problems, try using option 'pci=noacpi' or even 
'acpi=off'
SBF: Simple Boot Flag extension found and enabled.
SBF: Setting boot flags 0x80
IA-32 Microcode Update Driver: v1.11 <tigran@veritas.com>
Enabling SEP on CPU 0
Enabling SEP on CPU 1
highmem bounce pool size: 64 pages
aio_setup: sizeof(struct page) = 40
devfs: v1.22 (20021013) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x0
ACPI: Power Button (FF) [PWRF]
ACPI: Processor [CPU0] (supports C1)
ACPI: Processor [CPU1] (supports C1)
ACPI: Processor [CPU2] (supports C1)
ACPI: Processor [CPU3] (supports C1)
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
tts/0 at I/O 0x3f8 (irq = 4) is a 16550A
pty: 256 Unix98 ptys configured
Real Time Clock Driver v1.11
Intel(R) PRO/100 Network Driver - version 2.1.29-k1
Copyright (c) 2002 Intel Corporation

Freeing alive device c39c4800, eth%d
e100: eth0: Intel(R) PRO/100 S Server Adapter
   Hardware receive checksums enabled

Intel(R) PRO/1000 Network Driver - version 4.4.19-k1
Copyright (c) 1999-2002 Intel Corporation.
i2c-dev.o: i2c /dev entries driver module version 2.6.4 (20020719)
i2c-proc.o version 2.6.4 (20020719)
NET4: Linux TCP/IP 1.0 for NET4.0
IP: routing cache hash table of 32768 buckets, 256Kbytes
TCP: Hash tables configured (established 524288 bind 65536)
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 10.0.0.1, my address is 10.0.0.103
IP-Config: Complete:


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21 20:31 ` Andrew Walrond
@ 2003-01-21 20:54   ` Andrew Walrond
  2003-01-22 22:12   ` Pavel Machek
  2003-01-22 22:33   ` David Woodhouse
  2 siblings, 0 replies; 10+ messages in thread
From: Andrew Walrond @ 2003-01-21 20:54 UTC (permalink / raw)
  To: Andrew Walrond; +Cc: Andy Grover, linux-kernel, acpi-devel

[-- Attachment #1: Type: text/plain, Size: 605 bytes --]

Hi

In case it's useful, lots of weird stuff happens when I boot with 
pci=noacpi (see attachment),none of which results in a successful boot :(

I particularly liked this bit...

PCI: Probing PCI hardware
PCI: Discovered peer bus 0e
PCI: Discovered peer bus 12
PCI: Discovered primary peer bus 04 [IRQ]
PCI: Discovered primary peer bus 13 [IRQ]
PCI: Using IRQ router ServerWorks [1166/0201] at 00:0f.0
PCI BIOS passed nonexistent PCI bus 0!
PCI BIOS passed nonexistent PCI bus 0!
PCI BIOS passed nonexistent PCI bus 14!
PCI BIOS passed nonexistent PCI bus 14!
PCI BIOS passed nonexistent PCI bus 18!

;)

[-- Attachment #2: minicom.cap --]
[-- Type: text/plain, Size: 12966 bytes --]

Linux version 2.5.59 (root@r2d2.office) (gcc version 3.2) #2 SMP Tue Jan 21 17:30:26 GMT 2003
Video mode to be used for restore is ffff
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000bfffa000 (usable)
 BIOS-e820: 00000000bfffa000 - 00000000bffff000 (ACPI data)
 BIOS-e820: 00000000bffff000 - 00000000c0000000 (ACPI NVS)
 BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
On node 0 totalpages: 1048576
  DMA zone: 4096 pages, LIFO batch:1
  Normal zone: 225280 pages, LIFO batch:16
  HighMem zone: 819200 pages, LIFO batch:16
found SMP MP-table at 000f0490
hm, page 000f0000 reserved twice.
hm, page 000f1000 reserved twice.
hm, page 000f0000 reserved twice.
hm, page 000f1000 reserved twice.
ACPI: RSDP (v000 ASUS                       ) @ 0x000f4ff0
ACPI: RSDT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa000
ACPI: FADT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa145
ACPI: BOOT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa034
ACPI: SPCR (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa05c
ACPI: MADT (v001 ASUS   PR-DLS   16944.11825) @ 0xbfffa0a9
ACPI: DSDT (v001   ASUS PR-DLS   00000.04096) @ 0x00000000
ACPI: BIOS passes blacklist
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
Processor #0 APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
Processor #1 APIC version 16
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x06] enabled)
Processor #6 APIC version 16
ACPI: LAPIC (acpi_id[0x03] lapic_id[0x07] enabled)
Processor #7 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x03] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] global_irq_base[0x0])
IOAPIC[0]: Assigned apic_id 2
IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, IRQ 0-15
ACPI: IOAPIC (id[0x03] address[0xfec01000] global_irq_base[0x10])
IOAPIC[1]: Assigned apic_id 3
IOAPIC[1]: apic_id 3, version 17, address 0xfec01000, IRQ 16-31
ACPI: IOAPIC (id[0x04] address[0xfec02000] global_irq_base[0x20])
IOAPIC[2]: Assigned apic_id 4
IOAPIC[2]: apic_id 4, version 17, address 0xfec02000, IRQ 32-47
ACPI: INT_SRC_OVR (bus[0] irq[0x0] global_irq[0x2] polarity[0x0] trigger[0x1])
ACPI: INT_SRC_OVR (bus[0] irq[0x9] global_irq[0x9] polarity[0x3] trigger[0x3])
Enabling APIC mode:  Flat.  Using 3 I/O APICs
Using ACPI (MADT) for SMP configuration information
Building zonelist for node : 0
Kernel command line: ro root=/dev/nfs ip=dhcp console=tty0 console=ttyS0,115200n8 init=/boot.sh pci=noacpi 
Initializing CPU#0
PID hash table entries: 4096 (order 12: 32768 bytes)
Detected 2591.566 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 5111.80 BogoMIPS
Memory: 3100432k/4194304k available (1692k kernel code, 44152k reserved, 453k data, 312k init, 2228200k highmem)
Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
-> /dev
-> /dev/console
-> /root
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU#0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#0: Thermal monitoring enabled
Machine check exception polling timer started.
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
CPU0: Intel(R) Xeon(TM) CPU 2.60GHz stepping 07
per-CPU timeslice cutoff: 1462.69 usecs.
task migration cache decay timeout: 2 msecs.
enabled ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Booting processor 1/1 eip 2000
Initializing CPU#1
masked ExtINT on CPU#1
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Calibrating delay loop... 5177.34 BogoMIPS
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Physical Processor ID: 0
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU#1: Intel P4/Xeon Extended MCE MSRs (12) available
CPU#1: Thermal monitoring enabled
CPU1: Intel(R) Xeon(TM) CPU 2.60GHz stepping 07
Total of 2 processors activated (10289.15 BogoMIPS).
cpu_sibling_map[0] = 1
cpu_sibling_map[1] = 0
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 pin1=2 pin2=0
..MP-BIOS bug: 8254 timer not connected to IO-APIC
...trying to set up timer (IRQ0) through the 8259A ... 
..... (found pin 0) ...works.
testing the IO APIC.......................



.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 2591.0225 MHz.
..... host bus clock speed is 99.0662 MHz.
checking TSC synchronization across 2 CPUs: passed.
Starting migration thread for cpu 0
Bringing up 1
CPU 1 IS NOW UP!
Starting migration thread for cpu 1
CPUS done 4
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
mtrr: v2.0 (20020519)
PCI: PCI BIOS revision 2.10 entry at 0xf1510, last bus=22
PCI: Using configuration type 1
BIO: pool of 256 setup, 14Kb (56 bytes/bio)
biovec pool[0]:   1 bvecs: 256 entries (12 bytes)
biovec pool[1]:   4 bvecs: 256 entries (48 bytes)
biovec pool[2]:  16 bvecs: 256 entries (192 bytes)
biovec pool[3]:  64 bvecs: 256 entries (768 bytes)
biovec pool[4]: 128 bvecs: 256 entries (1536 bytes)
biovec pool[5]: 256 bvecs: 256 entries (3072 bytes)
ACPI: Subsystem revision 20030109
 tbxface-0098 [03] acpi_load_tables      : ACPI Tables successfully acquired
Parsing all Control Methods:..........................................................................................................................................................................................................
Table [DSDT] - 643 Objects with 62 Devices 202 Methods 12 Regions
ACPI Namespace successfully loaded at root c038b7fc
evxfevnt-0073 [04] acpi_enable           : Transition to ACPI mode successful
   evgpe-0262: *** Info: GPE Block0 defined as GPE0 to GPE31
   evgpe-0262: *** Info: GPE Block1 defined as GPE32 to GPE63
Executing all Device _STA and_INI methods:..............................................................
62 Devices found containing: 62 _STA, 4 _INI methods
Completing Region/Field/Buffer/Package initialization:.......................................................................
Initialized 8/12 Regions 0/0 Fields 49/49 Buffers 14/14 Packages (643 nodes)
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 10 11 *12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 11 12 14 *15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKI] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKJ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKK] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKL] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKM] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKN] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKO] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKP] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKQ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKR] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKS] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKT] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKU] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKV] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKW] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKX] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKY] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNKZ] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 9 10 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
pci_link-0249 [07] acpi_pci_link_get_curr: Invalid use of IRQ 0
ACPI: PCI Interrupt Link [LNK5] (IRQs 5 10 11 12 14 15, disabled)
ACPI: PCI Root Bridge [PCI0] (00:00)
PCI: Probing PCI hardware (bus 00)
pci_bind-0191 [04] acpi_pci_bind         : Device 00:00:0f.02 not present in PCI namespace
ACPI: PCI Root Bridge [PCI1] (00:00)
ACPI: PCI Root Bridge [PCI2] (00:00)
ACPI: PCI Root Bridge [PCI3] (00:00)
ACPI: PCI Root Bridge [PCI4] (00:00)
block request queues:
 128 requests per read queue
 128 requests per write queue
 8 requests per batch
 enter congestion at 15
 exit congestion at 17
PCI: Probing PCI hardware
PCI: Discovered peer bus 0e
PCI: Discovered peer bus 12
PCI: Discovered primary peer bus 04 [IRQ]
PCI: Discovered primary peer bus 13 [IRQ]
PCI: Using IRQ router ServerWorks [1166/0201] at 00:0f.0
PCI BIOS passed nonexistent PCI bus 0!
PCI BIOS passed nonexistent PCI bus 0!
PCI BIOS passed nonexistent PCI bus 14!
PCI BIOS passed nonexistent PCI bus 14!
PCI BIOS passed nonexistent PCI bus 18!
SBF: Simple Boot Flag extension found and enabled.
SBF: Setting boot flags 0x80
IA-32 Microcode Update Driver: v1.11 <tigran@veritas.com>
Enabling SEP on CPU 0
Enabling SEP on CPU 1
highmem bounce pool size: 64 pages
aio_setup: sizeof(struct page) = 40
devfs: v1.22 (20021013) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x0
ACPI: Power Button (FF) [PWRF]
ACPI: Processor [CPU0] (supports C1)
ACPI: Processor [CPU1] (supports C1)
ACPI: Processor [CPU2] (supports C1)
ACPI: Processor [CPU3] (supports C1)
Serial: 8250/16550 driver $Revision: 1.90 $ IRQ sharing disabled
tts/0 at I/O 0x3f8 (irq = 4) is a 16550A
pty: 256 Unix98 ptys configured
Real Time Clock Driver v1.11
Intel(R) PRO/100 Network Driver - version 2.1.29-k1
Copyright (c) 2002 Intel Corporation

Freeing alive device c39c3800, eth%d
e100: eth0: Intel(R) PRO/100 S Server Adapter
  Hardware receive checksums enabled

Intel(R) PRO/1000 Network Driver - version 4.4.19-k1
Copyright (c) 1999-2002 Intel Corporation.
eth1: Intel(R) PRO/1000 Network Connection
i2c-dev.o: i2c /dev entries driver module version 2.6.4 (20020719)
i2c-proc.o version 2.6.4 (20020719)
NET4: Linux TCP/IP 1.0 for NET4.0
IP: routing cache hash table of 32768 buckets, 256Kbytes
TCP: Hash tables configured (established 524288 bind 65536)
Sending DHCP requests .<3>e100: eth0 NIC Link is Up 100 Mbps Full duplex
e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex
.<6>NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
.<6>NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
.<6>NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out
NETDEV WATCHDOG: eth1: transmit timed out

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21 20:31 ` Andrew Walrond
  2003-01-21 20:54   ` Andrew Walrond
@ 2003-01-22 22:12   ` Pavel Machek
  2003-01-22 22:33   ` David Woodhouse
  2 siblings, 0 replies; 10+ messages in thread
From: Pavel Machek @ 2003-01-22 22:12 UTC (permalink / raw)
  To: Andrew Walrond; +Cc: Andy Grover, linux-kernel, acpi-devel

Hi!

> Results from a an Asus PR-DLS Dual Xeon HT
> 
> Don't know if this is useful, but I'll try anything that might bring 
> back my e1000 ;) No joy though - doesn't find all the PCI buses (14 and 
> 18 missing - see below)
> 
> +==============================================================================+
> | CPU Type          : Intel(R) Xeon(TM) CPU 2.60GHz 
>        |
> | Cache Memory      : 512K,512K,512K,512K Memory Installed  : 4096M 
>        |
> +------------------------------------------------------------------------------+

Wow, this looks nice. DOes this mean you actually have bios able to
send messages over serial in PC-class machine? Wow!
							Pavel

-- 
Worst form of spam? Adding advertisment signatures ala sourceforge.net.
What goes next? Inserting advertisment *into* email?

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21 20:31 ` Andrew Walrond
  2003-01-21 20:54   ` Andrew Walrond
  2003-01-22 22:12   ` Pavel Machek
@ 2003-01-22 22:33   ` David Woodhouse
  2 siblings, 0 replies; 10+ messages in thread
From: David Woodhouse @ 2003-01-22 22:33 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Andrew Walrond, Andy Grover, linux-kernel, acpi-devel


pavel@ucw.cz said:
>  Wow, this looks nice. DOes this mean you actually have bios able to
> send messages over serial in PC-class machine? Wow!

LinuxBIOS has been doing that for years.

--
dwmw2



^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH] SMP parsing rewrite, phase 1
@ 2003-01-21 22:31 Grover, Andrew
  0 siblings, 0 replies; 10+ messages in thread
From: Grover, Andrew @ 2003-01-21 22:31 UTC (permalink / raw)
  To: Andrew Walrond; +Cc: linux-kernel, acpi-devel

> From: Andrew Walrond [mailto:andrew@walrond.org] 
> Results from a an Asus PR-DLS Dual Xeon HT
> 
> Don't know if this is useful, but I'll try anything that might bring 
> back my e1000 ;) No joy though - doesn't find all the PCI 
> buses (14 and 
> 18 missing - see below)

Well, this patch shouldn't actually *improve* anything yet w.r.t. ACPI.
I just wanted to see if it made anything worse, before proceeding
further.

Looks like your machine didn't fail to boot, so great. :)

Regards -- Andy

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH] SMP parsing rewrite, phase 1
  2003-01-21 18:36 Grover, Andrew
@ 2003-01-21 19:26 ` Martin J. Bligh
  0 siblings, 0 replies; 10+ messages in thread
From: Martin J. Bligh @ 2003-01-21 19:26 UTC (permalink / raw)
  To: Grover, Andrew, linux-kernel; +Cc: acpi-devel, mingo

>> Would be a lot easier to read if you could seperate out the
>> renames from the rest of the patch that actually does things.
> ....
> 
> Anyways, I will take a stab at redoing the changesets the way you
> describe.

Cool, will be much easier to see what you're actually changing ;-)
 
>> Anyway, I'll give it a spin on my wierdo box, and see what happens.
> 
> Cool, thanks.

Your latest update makes the NUMA-Q work just fine ;-)
x440 will need that array fixed, I guess.

M.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH] SMP parsing rewrite, phase 1
@ 2003-01-21 18:36 Grover, Andrew
  2003-01-21 19:26 ` Martin J. Bligh
  0 siblings, 1 reply; 10+ messages in thread
From: Grover, Andrew @ 2003-01-21 18:36 UTC (permalink / raw)
  To: Martin J. Bligh, linux-kernel; +Cc: acpi-devel, mingo

> From: Martin J. Bligh [mailto:mbligh@aracnet.com] 

> Would be a lot easier to read if you could seperate out the
> renames from the rest of the patch that actually does things.
> It all makes me slightly nervous as this stuff is really easy
> to break ... and it breaks wierd machines that are hard to test
> for (been there, done that ;-)).

Exactly why I wanted to clean up the code - too fragile! :)

Anyways, I will take a stab at redoing the changesets the way you
describe.

> +static u8 raw_phys_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = 
> BAD_APICID };
> 
> Looks odd. May have merged forward badly, that got renamed in 2.5.59
> to bios_cpu_apicid or something. 

You are right. I'll fix that.

> Anyway, I'll give it a spin on my wierdo box, and see what happens.

Cool, thanks.

Regards -- Andy

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2003-01-22 22:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-01-21  3:12 [PATCH] SMP parsing rewrite, phase 1 Andy Grover
2003-01-21  4:28 ` Martin J. Bligh
2003-01-21  7:12 ` Zwane Mwaikambo
2003-01-21 20:31 ` Andrew Walrond
2003-01-21 20:54   ` Andrew Walrond
2003-01-22 22:12   ` Pavel Machek
2003-01-22 22:33   ` David Woodhouse
2003-01-21 18:36 Grover, Andrew
2003-01-21 19:26 ` Martin J. Bligh
2003-01-21 22:31 Grover, Andrew

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).