linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A0
@ 2003-07-10  1:08 john stultz
  2003-07-10  3:22 ` Marcelo Tosatti
  0 siblings, 1 reply; 4+ messages in thread
From: john stultz @ 2003-07-10  1:08 UTC (permalink / raw)
  To: marcelo; +Cc: Andrew Grover, lkml

Marcelo, Andrew, All,

	Due to the new ACPI code, when booting in full ACPI mode, we do not go
through the mps tables, thus we do not execute the summit detection code
required for booting an x440. 

This patch insures that when booting in full ACPI mode we check to see
if we're running on a summit based system and enable clustered apic
mode. Without this patch the x440s hang while booting in full ACPI mode.

Thanks to James Cleverdon for the original version of this patch.

Please apply,

thanks
-john


diff -Nru a/arch/i386/kernel/acpi.c b/arch/i386/kernel/acpi.c
--- a/arch/i386/kernel/acpi.c	Wed Jul  9 16:39:20 2003
+++ b/arch/i386/kernel/acpi.c	Wed Jul  9 16:39:20 2003
@@ -129,6 +129,8 @@
 	printk(KERN_INFO PREFIX "Local APIC address 0x%08x\n",
 		madt->lapic_address);
 
+	acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
+
 	return 0;
 }
 
diff -Nru a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
--- a/arch/i386/kernel/io_apic.c	Wed Jul  9 16:39:20 2003
+++ b/arch/i386/kernel/io_apic.c	Wed Jul  9 16:39:20 2003
@@ -1732,6 +1732,13 @@
 		apic_id = reg_00.ID;
 	}
 
+	/* XAPICs do not need unique IDs */
+	if (clustered_apic_mode == CLUSTERED_APIC_XAPIC){
+		printk(KERN_INFO "IOAPIC[%d]: Assigned apic_id %d\n", 
+			ioapic, apic_id);
+		return apic_id;
+	}
+
 	/*
 	 * Every APIC in a system must have a unique ID or we get lots of nice 
 	 * 'stuck on smp_invalidate_needed IPI wait' messages.
diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
--- a/arch/i386/kernel/mpparse.c	Wed Jul  9 16:39:20 2003
+++ b/arch/i386/kernel/mpparse.c	Wed Jul  9 16:39:20 2003
@@ -1252,6 +1252,23 @@
 	io_apic_set_pci_routing(ioapic, ioapic_pin, irq);
 }
 
+/* Hook from generic ACPI tables.c */
+void __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
+{
+	if (!strncmp(oem_id, "IBM", 3) &&
+	    (!strncmp(oem_table_id, "SERVIGIL", 8) ||
+	     !strncmp(oem_table_id, "EXA", 3) ||
+	     !strncmp(oem_table_id, "RUTHLESS", 8))){
+		clustered_apic_mode = CLUSTERED_APIC_XAPIC;
+		apic_broadcast_id = APIC_BROADCAST_ID_XAPIC;
+		int_dest_addr_mode = APIC_DEST_PHYSICAL;
+		int_delivery_mode = dest_Fixed;
+		esr_disable = 1;
+		/*Start cyclone clock*/
+		cyclone_setup(0);
+	}
+}
+
 #ifdef CONFIG_ACPI_PCI
 
 void __init mp_parse_prt (void)
diff -Nru a/include/asm-i386/acpi.h b/include/asm-i386/acpi.h
--- a/include/asm-i386/acpi.h	Wed Jul  9 16:39:20 2003
+++ b/include/asm-i386/acpi.h	Wed Jul  9 16:39:20 2003
@@ -165,6 +165,9 @@
 /* early initialization routine */
 extern void acpi_reserve_bootmem(void);
 
+/* Check for special HW using OEM name lists */
+extern void acpi_madt_oem_check(char *oem_id, char *oem_table_id);
+
 #endif /*CONFIG_ACPI_SLEEP*/
 
 




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

* Re: [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A0
  2003-07-10  1:08 [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A0 john stultz
@ 2003-07-10  3:22 ` Marcelo Tosatti
  2003-07-10 20:47   ` john stultz
  2003-07-10 22:08   ` [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A1 john stultz
  0 siblings, 2 replies; 4+ messages in thread
From: Marcelo Tosatti @ 2003-07-10  3:22 UTC (permalink / raw)
  To: john stultz; +Cc: Andrew Grover, lkml



On Wed, 9 Jul 2003, john stultz wrote:

> Marcelo, Andrew, All,
>
> 	Due to the new ACPI code, when booting in full ACPI mode, we do not go
> through the mps tables, thus we do not execute the summit detection code
> required for booting an x440.
>
> This patch insures that when booting in full ACPI mode we check to see
> if we're running on a summit based system and enable clustered apic
> mode. Without this patch the x440s hang while booting in full ACPI mode.
>
> Thanks to James Cleverdon for the original version of this patch.
>
> Please apply,


I just applied it John, it will be in bk soon.

But cant that be done in a cleaner way?

The acpi_madt_oem_check() call and implementation are the cleaner way of
doing this?


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

* Re: [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A0
  2003-07-10  3:22 ` Marcelo Tosatti
@ 2003-07-10 20:47   ` john stultz
  2003-07-10 22:08   ` [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A1 john stultz
  1 sibling, 0 replies; 4+ messages in thread
From: john stultz @ 2003-07-10 20:47 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Andrew Grover, lkml

On Wed, 2003-07-09 at 20:22, Marcelo Tosatti wrote:
> On Wed, 9 Jul 2003, john stultz wrote:
> > 	Due to the new ACPI code, when booting in full ACPI mode, we do not go
> > through the mps tables, thus we do not execute the summit detection code
> > required for booting an x440.
> >
> > This patch insures that when booting in full ACPI mode we check to see
> > if we're running on a summit based system and enable clustered apic
> > mode. Without this patch the x440s hang while booting in full ACPI mode.
>
> I just applied it John, it will be in bk soon.

Thanks so much.

> But cant that be done in a cleaner way?
> 
> The acpi_madt_oem_check() call and implementation are the cleaner way of
> doing this?

Well,when booting using the acpi tables, we need an equivalent hook to
detect_clustered_apic(), which is used when booting off the mps table.

Basically I just kept the acpi_madt_oem_check() name and implementation
from the 2.5 tree, but I'd be fine with doing it differently if someone
can suggest an idea. 

thanks
-john


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

* [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A1
  2003-07-10  3:22 ` Marcelo Tosatti
  2003-07-10 20:47   ` john stultz
@ 2003-07-10 22:08   ` john stultz
  1 sibling, 0 replies; 4+ messages in thread
From: john stultz @ 2003-07-10 22:08 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: Andrew Grover, lkml

On Wed, 2003-07-09 at 20:22, Marcelo Tosatti wrote:
> I just applied it John, it will be in bk soon.
> 
> But cant that be done in a cleaner way?

Think I've sorted a slightly cleaner way, and bonus points for making it
compile with CONFIG_ACPI & !CONFIG_X86_CLUSTERED_APIC (gah! sorry about
that).

This patch moves the summit detection being done in
acpi_madt_oem_check() to detect_clustered_apic(). Also fixes the compile
failure when compiling with CONFIG_ACPI and without
CONFIG_X86_CLUSTERED_APIC. 


Applies on top of 2.4.22-bkcurrent.

Thanks
-john


diff -Nru a/arch/i386/kernel/acpi.c b/arch/i386/kernel/acpi.c
--- a/arch/i386/kernel/acpi.c	Thu Jul 10 14:44:25 2003
+++ b/arch/i386/kernel/acpi.c	Thu Jul 10 14:44:25 2003
@@ -44,6 +44,7 @@
 #include <asm/io_apic.h>
 #include <asm/acpi.h>
 #include <asm/save_state.h>
+#include <asm/smpboot.h>
 
 
 #define PREFIX			"ACPI: "
@@ -129,7 +130,7 @@
 	printk(KERN_INFO PREFIX "Local APIC address 0x%08x\n",
 		madt->lapic_address);
 
-	acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
+	detect_clustered_apic(madt->header.oem_id, madt->header.oem_table_id);
 
 	return 0;
 }
diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c
--- a/arch/i386/kernel/mpparse.c	Thu Jul 10 14:44:25 2003
+++ b/arch/i386/kernel/mpparse.c	Thu Jul 10 14:44:25 2003
@@ -1252,22 +1252,6 @@
 	io_apic_set_pci_routing(ioapic, ioapic_pin, irq);
 }
 
-/* Hook from generic ACPI tables.c */
-void __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
-{
-	if (!strncmp(oem_id, "IBM", 3) &&
-	    (!strncmp(oem_table_id, "SERVIGIL", 8) ||
-	     !strncmp(oem_table_id, "EXA", 3) ||
-	     !strncmp(oem_table_id, "RUTHLESS", 8))){
-		clustered_apic_mode = CLUSTERED_APIC_XAPIC;
-		apic_broadcast_id = APIC_BROADCAST_ID_XAPIC;
-		int_dest_addr_mode = APIC_DEST_PHYSICAL;
-		int_delivery_mode = dest_Fixed;
-		esr_disable = 1;
-		/*Start cyclone clock*/
-		cyclone_setup(0);
-	}
-}
 
 #ifdef CONFIG_ACPI_PCI
 
diff -Nru a/include/asm-i386/acpi.h b/include/asm-i386/acpi.h
--- a/include/asm-i386/acpi.h	Thu Jul 10 14:44:25 2003
+++ b/include/asm-i386/acpi.h	Thu Jul 10 14:44:25 2003
@@ -165,9 +165,6 @@
 /* early initialization routine */
 extern void acpi_reserve_bootmem(void);
 
-/* Check for special HW using OEM name lists */
-extern void acpi_madt_oem_check(char *oem_id, char *oem_table_id);
-
 #endif /*CONFIG_ACPI_SLEEP*/
 
 
diff -Nru a/include/asm-i386/smpboot.h b/include/asm-i386/smpboot.h
--- a/include/asm-i386/smpboot.h	Thu Jul 10 14:44:25 2003
+++ b/include/asm-i386/smpboot.h	Thu Jul 10 14:44:25 2003
@@ -29,8 +29,19 @@
 		esr_disable = 1;
 		/*Start cyclone clock*/
 		cyclone_setup(0);
-	}
-	else if (!strncmp(oem, "IBM NUMA", 8)){
+	/* check for ACPI tables */
+	} else if (!strncmp(oem, "IBM", 3) &&
+	    (!strncmp(prod, "SERVIGIL", 8) ||
+	     !strncmp(prod, "EXA", 3) ||
+	     !strncmp(prod, "RUTHLESS", 8))){
+		clustered_apic_mode = CLUSTERED_APIC_XAPIC;
+		apic_broadcast_id = APIC_BROADCAST_ID_XAPIC;
+		int_dest_addr_mode = APIC_DEST_PHYSICAL;
+		int_delivery_mode = dest_Fixed;
+		esr_disable = 1;
+		/*Start cyclone clock*/
+		cyclone_setup(0);
+	} else if (!strncmp(oem, "IBM NUMA", 8)){
 		clustered_apic_mode = CLUSTERED_APIC_NUMAQ;
 		apic_broadcast_id = APIC_BROADCAST_ID_APIC;
 		int_dest_addr_mode = APIC_DEST_LOGICAL;






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

end of thread, other threads:[~2003-07-10 21:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-10  1:08 [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A0 john stultz
2003-07-10  3:22 ` Marcelo Tosatti
2003-07-10 20:47   ` john stultz
2003-07-10 22:08   ` [PATCH] linux-2.4.22-pre4_x440-acpi-fix_A1 john stultz

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).