Skip to contentSkip to conversation

R: [Bug #14886] Asus P2B-DS not detected as SMP moterboard

PATCH New [email protected] 6 participants 6 messages Jan 11, 2010 – Feb 1, 2010

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Tried 2.6.32.3. The issue is still present.

Regards,
Lorenzo Buzzi

Quoted 1 line

----

Messaggio originale----

Quoted 3 lines

Da: [email protected]
Data: 10/01/2010 23.56
A: "Linux

Kernel Mailing List"<[email protected]>

Quoted 1 line
Cc "Kernel Testers List"

<[email protected]>, "Lorenzo Buzzi"<[email protected]>

Quoted 1 line

Ogg: [Bug

#14886] Asus P2B-DS not detected as SMP moterboard

Quoted 2 lines

This message has been

generated automatically as a part of a report

Quoted 1 line

of regressions introduced

between 2.6.31 and 2.6.32.

Quoted 2 lines

The following bug entry is on the current list of

known regressions

Quoted 1 line

introduced between 2.6.31 and 2.6.32. Please verify if it

still should

Quoted 4 lines

be listed and let me know (either way).

Bug-Entry : http:

//bugzilla.kernel.org/show_bug.cgi?id=14886

Quoted 1 line

Subject : Asus P2B-DS not

detected as SMP moterboard

Quoted 2 lines

Submitter : Lorenzo Buzzi <[email protected]>
Date

: 2009-12-27 17:20 (15 days old)

Quoted 3 lines
#2 lore raw
Quoted 6 lines · Rafael J. Wysocki
Quoted 1 line · On Monday 11 January 2010, [email protected] wrote:

Tried 2.6.32.3. The issue is still present.

Thanks for the update.

Rafael

(I have some troubles with registering on kernel bugzilla, so posting here, adding people from bug to CC: list)

Hi!
I'm also using P2B-DS and can confirm that starting with kernel 2.6.32 SMP stopped working (and don't work still - tested with current git v2.6.33-rc5-238-g158c168) The issue seems to have something to do with the fact that ACPI is blacklisted on P2B-DS. I used to workaround this bug on newer kernels (>=2.6.32) by passing "acpi=force" in kernel arguments. Finally, yesterday I found some time to write simple automated bisection script and leaved it to run on machine overnight. Here's result:
---------------------------------------------------------------------------
e5b8fc6ac158f65598f58dba2c0d52ba3b412f52 is the first bad commit commit e5b8fc6ac158f65598f58dba2c0d52ba3b412f52

Author: Len Brown <[email protected]>
Date:   Tue Jul 7 23:22:58 2009 -0400

ACPI: check acpi_disabled in acpi_table_parse() and acpi_table_parse_entries()

Allow consumers of the acpi_table_parse()/acpi_table_parse_entries() API to gracefully handle the acpi_disabled=1 case via return value rather than checking the global flag themselves.

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

I re-checked this result and yes - reverting this commit on both 2.6.32 and current git (v2.6.33-rc5-238-g158c168) makes problem go away.

Signature · 2 lines
Best regards,
Dmitry "MAD" Artamonow
#3 lore raw
Quoted 20 lines · On Tue, 26 Jan 2010 23:53:30 +0800 Dmitry Artamonow <[email protected]> wrote:

Hi!
I'm also using P2B-DS and can confirm that starting with kernel 2.6.32 SMP stopped working (and don't work still - tested with current git v2.6.33-rc5-238-g158c168) The issue seems to have something to do with the fact that ACPI is blacklisted on P2B-DS. I used to workaround this bug on newer kernels (>=2.6.32) by passing "acpi=force" in kernel arguments. Finally, yesterday I found some time to write simple automated bisection script and leaved it to run on machine overnight. Here's result:
---------------------------------------------------------------------------
e5b8fc6ac158f65598f58dba2c0d52ba3b412f52 is the first bad commit commit e5b8fc6ac158f65598f58dba2c0d52ba3b412f52 Author: Len Brown
<[email protected]> Date: Tue Jul 7 23:22:58 2009 -0400

ACPI: check acpi_disabled in acpi_table_parse() and
acpi_table_parse_entries()
Allow consumers of the
acpi_table_parse()/acpi_table_parse_entries() API to gracefully handle the acpi_disabled=1 case via return value rather than checking the global flag themselves.

Quoted 3 lines

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

Hi Dmitry,

That commit is

drivers/acpi/tables.c +6 -0
index 646d39c..f336bca 100644
@@ -213,6 +213,9 @@ acpi_table_parse_entries(char *id,
        unsigned long table_end;
        acpi_size tbl_size;
 
+       if (acpi_disabled)
+               return -ENODEV;
+
        if (!handler)
                return -EINVAL;
 
@@ -277,6 +280,9 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler)
        struct acpi_table_header *table = NULL;
        acpi_size tbl_size;
 
+       if (acpi_disabled)
+               return -ENODEV;
+
        if (!handler)
                return -EINVAL;
 

Which only enforces the "acpi_disabled" check and should have no logical problem.

And I guess your platform is blacklisted and acpi_disabled is set to 1, while it still need parse ACPI tables to get SMP info. So I would suggest to add a "acpi=force" for your case.

Thanks,
Feng

#4 lore raw
Quoted 63 lines · Feng Tang

On Tue, 26 Jan 2010 23:53:30 +0800

Quoted 24 lines · Dmitry Artamonow

Hi!
I'm also using P2B-DS and can confirm that starting with kernel 2.6.32 SMP stopped working (and don't work still - tested with current git v2.6.33-rc5-238-g158c168) The issue seems to have something to do with the fact that ACPI is blacklisted on P2B-DS. I used to workaround this bug on newer kernels (>=2.6.32) by passing "acpi=force" in kernel arguments. Finally, yesterday I found some time to write simple automated bisection script and leaved it to run on machine overnight. Here's result:
-------------------------------------------------------------------------
-- e5b8fc6ac158f65598f58dba2c0d52ba3b412f52 is the first bad commit commit e5b8fc6ac158f65598f58dba2c0d52ba3b412f52 Author: Len Brown
<[email protected]> Date: Tue Jul 7 23:22:58 2009 -0400

ACPI: check acpi_disabled in acpi_table_parse() and

acpi_table_parse_entries()

Allow consumers of the

acpi_table_parse()/acpi_table_parse_entries() API to gracefully handle the acpi_disabled=1 case via return value rather than checking the global flag themselves.

Quoted 5 lines

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

Hi Dmitry,

That commit is

drivers/acpi/tables.c +6 -0
index 646d39c..f336bca 100644
@@ -213,6 +213,9 @@ acpi_table_parse_entries(char *id,
        unsigned long table_end;
        acpi_size tbl_size;
 
+       if (acpi_disabled)
+               return -ENODEV;
+
        if (!handler)
                return -EINVAL;
 
@@ -277,6 +280,9 @@ int __init acpi_table_parse(char *id,
 acpi_table_handler handler) struct acpi_table_header *table = NULL;
        acpi_size tbl_size;
 
+       if (acpi_disabled)
+               return -ENODEV;
+
        if (!handler)
                return -EINVAL;
 

Which only enforces the "acpi_disabled" check and should have no logical problem.

Quoted 3 lines

And I guess your platform is blacklisted and acpi_disabled is set to 1, while it still need parse ACPI tables to get SMP info. So I would suggest to add a "acpi=force" for your case.

Is there a force ht-only option? acpi=ht doesn't work.

Quoted 2 lines

Thanks,
Feng

Signature · 2 lines
Arkadiusz Miśkiewicz        PLD/Linux Team
arekm / maven.pl            http://ftp.pld-linux.org/
#5 lore raw

PATCH 1/1 ACPI: Remove old blacklist entries

In reply to Feng Tang
Quoted 6 lines · Feng Tang

Which only enforces the "acpi_disabled" check and should have no logical problem.

And I guess your platform is blacklisted and acpi_disabled is set to 1, while it still need parse ACPI tables to get SMP info. So I would suggest to add a "acpi=force" for your case.

It's actually set to force_ht, so it sounds like some blacklisting is now stricter than it used to be. However, given that acpi=force seems to work, how about just doing the following?

commit a8d9241dad684f7dda46889f00c9e627773e868e

Author: Matthew Garrett <[email protected]>
Date:   Mon Feb 1 09:51:44 2010 -0500

ACPI: Remove old blacklist entries

The kernel has a set of blacklist entries that disable ACPI functionality on various machines. These all seem to date from pre-git days and most have no indication of what they were meant to fix. Let's work on the assumption that we've fixed whatever it was that was broken before and so remove most of the entries.

arch/x86/kernel/acpi/boot.c +0 -147
index fb1035c..086f0b6 100644
@@ -1256,35 +1256,6 @@ static int __init disable_acpi_pci(const struct dmi_system_id *d)
 	return 0;
 }
 
-static int __init dmi_disable_acpi(const struct dmi_system_id *d)
-{
-	if (!acpi_force) {
-		printk(KERN_NOTICE "%s detected: acpi off\n", d->ident);
-		disable_acpi();
-	} else {
-		printk(KERN_NOTICE
-		       "Warning: DMI blacklist says broken, but acpi forced\n");
-	}
-	return 0;
-}
-
-/*
- * Limit ACPI to CPU enumeration for HT
- */
-static int __init force_acpi_ht(const struct dmi_system_id *d)
-{
-	if (!acpi_force) {
-		printk(KERN_NOTICE "%s detected: force use of acpi=ht\n",
-		       d->ident);
-		disable_acpi();
-		acpi_ht = 1;
-	} else {
-		printk(KERN_NOTICE
-		       "Warning: acpi=force overrules DMI blacklist: acpi=ht\n");
-	}
-	return 0;
-}
-
 /*
  * Force ignoring BIOS IRQ0 pin2 override
  */
@@ -1308,116 +1279,6 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
  * works for you, please contact [email protected]
  */
 static struct dmi_system_id __initdata acpi_dmi_table[] = {
-	/*
-	 * Boxes that need ACPI disabled
-	 */
-	{
-	 .callback = dmi_disable_acpi,
-	 .ident = "IBM Thinkpad",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
-		     DMI_MATCH(DMI_BOARD_NAME, "2629H1G"),
-		     },
-	 },
-
-	/*
-	 * Boxes that need acpi=ht
-	 */
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "FSC Primergy T850",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "PRIMERGY T850"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "HP VISUALIZE NT Workstation",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "HP VISUALIZE NT Workstation"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "Compaq Workstation W8000",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "Workstation W8000"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "ASUS P2B-DS",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-		     DMI_MATCH(DMI_BOARD_NAME, "P2B-DS"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "ASUS CUR-DLS",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
-		     DMI_MATCH(DMI_BOARD_NAME, "CUR-DLS"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "ABIT i440BX-W83977",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "ABIT <http://www.abit.com>"),
-		     DMI_MATCH(DMI_BOARD_NAME, "i440BX-W83977 (BP6)"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "IBM Bladecenter",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
-		     DMI_MATCH(DMI_BOARD_NAME, "IBM eServer BladeCenter HS20"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "IBM eServer xSeries 360",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
-		     DMI_MATCH(DMI_BOARD_NAME, "eServer xSeries 360"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "IBM eserver xSeries 330",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
-		     DMI_MATCH(DMI_BOARD_NAME, "eserver xSeries 330"),
-		     },
-	 },
-	{
-	 .callback = force_acpi_ht,
-	 .ident = "IBM eserver xSeries 440",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "eserver xSeries 440"),
-		     },
-	 },
-
-	/*
-	 * Boxes that need ACPI PCI IRQ routing disabled
-	 */
-	{
-	 .callback = disable_acpi_irq,
-	 .ident = "ASUS A7V",
-	 .matches = {
-		     DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC"),
-		     DMI_MATCH(DMI_BOARD_NAME, "<A7V>"),
-		     /* newer BIOS, Revision 1011, does work */
-		     DMI_MATCH(DMI_BIOS_VERSION,
-			       "ASUS A7V ACPI BIOS Revision 1007"),
-		     },
-	 },
 	{
 		/*
 		 * Latest BIOS for IBM 600E (1.16) has bad pcinum
@@ -1454,14 +1315,6 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
 		     DMI_MATCH(DMI_BIOS_DATE, "03/21/2003")
 		     },
 	 },
-	{
-	 .callback = disable_acpi_pci,
-	 .ident = "Acer TravelMate 36x Laptop",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
-		     },
-	 },
 	{}
 };
 
Signature · 1 line
Matthew Garrett | [email protected]