Skip to contentSkip to conversation

proposed fix for multiple MADT issue

PATCH In review Len Brown 2 participants 4 messages Mar 12, 2007

Subsystems (2)
lore
Share & tools
lore

Len Brown

author reviewer
#0 lore raw

If this approach doesn't work, then we'll have to look into parsing the namespace to reliably enumerate processors.

-Len

author reviewer
#1 lore raw

PATCH 1/2 ACPI: Add support to parse 2nd MADT

From: Len Brown <[email protected]>

When a BIOS bug presents multiple APIC/MADTs,
Linux currently uses the 1st and ignores the 2nd.

But some machines work better if we use the 2nd.

http://bugzilla.kernel.org/show_bug.cgi?id=7465

Add a warning and boot parameter "acpi_apic_instance=2" to allow parsing the 2nd.

No change to default behaviour in this patch.

---
 Documentation/kernel-parameters.txt |    6 ++++
 drivers/acpi/tables.c               |   57 +++++++++++++++++++++++++++++++---
 2 files changed, 58 insertions(+), 5 deletions(-)
Documentation/kernel-parameters.txt +6 -0
index 856c8b1..22c6b8c 100644
@@ -138,6 +138,12 @@ and is between 256 and 4096 characters. It is defined in the file
 
 			See also Documentation/pm.txt, pci=noacpi
 
+	acpi_apic_instance=	[ACPI, IOAPIC]
+			Format: <int>
+			2: use 2nd APIC table, if available
+			1,0: use 1st APIC table
+			default: 0
+
 	acpi_sleep=	[HW,ACPI] Sleep options
 			Format: { s3_bios, s3_mode }
 			See Documentation/power/video.txt
drivers/acpi/tables.c +52 -5

92 lines not on this page · raw message

Signature · 1 line
1.5.0.3.316.gbd1fc
author reviewer
#2 lore raw

PATCH 2/2 ACPI: parse 2nd MADT by default

From: Len Brown <[email protected]>

http://bugzilla.kernel.org/show_bug.cgi?id=7465

---
 Documentation/kernel-parameters.txt |    2 +-
 drivers/acpi/tables.c               |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Documentation/kernel-parameters.txt +1 -1
index 22c6b8c..f0b7a5e 100644
@@ -142,7 +142,7 @@ and is between 256 and 4096 characters. It is defined in the file
 			Format: <int>
 			2: use 2nd APIC table, if available
 			1,0: use 1st APIC table
-			default: 0
+			default: 2
 
 	acpi_sleep=	[HW,ACPI] Sleep options
 			Format: { s3_bios, s3_mode }
drivers/acpi/tables.c +1 -1
index c341918..6d5515a 100644
@@ -42,7 +42,7 @@ static char *mps_inti_flags_trigger[] = { "dfl", "edge", "res", "level" };
 
 static struct acpi_table_desc initial_tables[ACPI_MAX_TABLES] __initdata;
 
-static int acpi_apic_instance __initdata;
+static int acpi_apic_instance = 2; __initdata;
 
 void acpi_table_print_madt_entry(struct acpi_subtable_header *header)
 {
Signature · 1 line
1.5.0.3.316.gbd1fc
#3 lore raw

Re: [PATCH 2/2] ACPI: parse 2nd MADT by default

Quoted 28 lines · Len Brown

From: Len Brown <[email protected]>

http://bugzilla.kernel.org/show_bug.cgi?id=7465

---
 Documentation/kernel-parameters.txt |    2 +-
 drivers/acpi/tables.c               |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Documentation/kernel-parameters.txt +1 -1
index 22c6b8c..f0b7a5e 100644
@@ -142,7 +142,7 @@ and is between 256 and 4096 characters. It is defined in the file
 			Format: <int>
 			2: use 2nd APIC table, if available
 			1,0: use 1st APIC table
-			default: 0
+			default: 2
 
 	acpi_sleep=	[HW,ACPI] Sleep options
 			Format: { s3_bios, s3_mode }
drivers/acpi/tables.c +0 -0
index c341918..6d5515a 100644

drivers/acpi/tables.c static char *mps_inti_flags_trigger[] = { "dfl", "edge", "res", "level" }; · line 45

Quoted 5 lines
drivers/acpi/tables.c +1 -1
@@ -42,7 +42,7 @@ static char *mps_inti_flags_trigger[] = { "dfl", "edge", "res", "level" };
 
 static struct acpi_table_desc initial_tables[ACPI_MAX_TABLES] __initdata;
 
-static int acpi_apic_instance __initdata;
+static int acpi_apic_instance = 2; __initdata;

extra semi-colon ;

Quoted 4 lines
drivers/acpi/tables.c +0 -0
 void acpi_table_print_madt_entry(struct acpi_subtable_header *header)
 {
 
Signature · 1 line
~Randy