public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Thomas Renninger <trenn@suse.de>
To: Len Brown <lenb@kernel.org>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
	linux-acpi <linux-acpi@vger.kernel.org>,
	Zhao Yakui <yakui.zhao@intel.com>,
	me@markdoughty.co.uk,
	linux-thinkpad <linux-thinkpad@linux-thinkpad.org>,
	Matthew Garrett <mjg59@srcf.ucam.org>,
	"devel@acpica.org" <devel@acpica.org>
Subject: [RESEND] [PATCH 2/3] Introduce acpi_root_table=rsdt boot param and dmi list to force rsdt
Date: Sun, 19 Oct 2008 23:50:55 +0200	[thread overview]
Message-ID: <200810192350.57993.trenn@suse.de> (raw)

Introduce acpi_root_table=rsdt boot param and dmi list to force rsdt

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

Blacklist R40e, R51e and T40, T40p, T41, T41p, T42, T42p, R50 and R50p
ThinkPads to use the RSDT instead of the XSDT.

R40e (c-states freeze machine) and R51e (slow booting) have known problems.
The rest share one BIOS and have been added in hope that this bug gets solved,
but this is not proven:
  T41p shutting down due to "temperature critical"
  https://bugzilla.novell.com/show_bug.cgi?id=378327
I saw a kind of fixed temperature offset with the exact same machine models
and exact same BIOS. Short after cold boot the one machine showed about 15
degree C more than the other. This looked like wrong, too high temperature
values read from EC on the one machine. I never found out why, this could
explain and fix it, but I did not double check.

It does not matter to have this BIOS also use 32 bit addresses, XP and 
OpenSUSE 11.0 does that and it works fine.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Tested-by: Mark Doughty <me@markdoughty.co.uk>
CC: Yakui Zhao <yakui.zhao@intel.com>

---
 Documentation/kernel-parameters.txt |    5 ++++
 drivers/acpi/tables.c               |   37 ++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+)

--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -237,6 +237,11 @@ and is between 256 and 4096 characters.
 			to assume that this machine's pmtimer latches its value
 			and always returns good values.
 
+	acpi_root_table= [X86,ACPI]
+			{ rsdt }
+			rsdt: Take RSDT address for fetching
+			ACPI tables (instead of XSDT)
+
 	agp=		[AGP]
 			{ off | try_unsupported }
 			off: disable AGP support
--- a/drivers/acpi/tables.c
+++ b/drivers/acpi/tables.c
@@ -32,6 +32,7 @@
 #include <linux/errno.h>
 #include <linux/acpi.h>
 #include <linux/bootmem.h>
+#include <linux/dmi.h>
 
 #define PREFIX			"ACPI: "
 
@@ -282,6 +283,37 @@ static void __init check_multiple_madt(v
 	return;
 }
 
+static struct dmi_system_id __initdata acpi_rsdt_dmi_table[] = {
+	{
+	    .ident = "ThinkPad ", /* R40e, broken C-states */
+	    .matches = {
+		DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
+		DMI_MATCH(DMI_BIOS_VERSION, "1SET")},
+	},
+	{
+	    .ident = "ThinkPad ", /* R50e, slow booting */
+	    .matches = {
+		DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
+		DMI_MATCH(DMI_BIOS_VERSION, "1WET")},
+	},
+	{
+	    .ident = "ThinkPad ", /* T40, T40p, T41, T41p, T42, T42p
+				     R50, R50p */
+	    .matches = {
+		DMI_MATCH(DMI_BIOS_VENDOR, "IBM"),
+		DMI_MATCH(DMI_BIOS_VERSION, "1RET")},
+	},
+	{}
+};
+
+static int __init acpi_force_rsdt(char *opt)
+{
+	if (!strcmp(opt, "rsdt"))
+		acpi_gbl_force_rsdt = 1;
+	return 0;
+}
+early_param("acpi_root_table", acpi_force_rsdt);
+
 /*
  * acpi_table_init()
  *
@@ -293,6 +325,11 @@ static void __init check_multiple_madt(v
 
 int __init acpi_table_init(void)
 {
+	if (dmi_check_system(acpi_rsdt_dmi_table))
+		acpi_gbl_force_rsdt = 1;
+	if (acpi_gbl_force_rsdt)
+		printk(KERN_INFO "Using RSDT as ACPI root table\n");
+
 	acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0);
 	check_multiple_madt();
 	return 0;

             reply	other threads:[~2008-10-19 21:50 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-19 21:50 Thomas Renninger [this message]
2008-10-20  1:01 ` [RESEND] [PATCH 2/3] Introduce acpi_root_table=rsdt boot param and dmi list to force rsdt Matthew Garrett
2008-10-20 15:31   ` Henrique de Moraes Holschuh
2008-10-20 16:23     ` Thomas Renninger
2008-10-20 16:27       ` Matthew Garrett
2008-10-20 16:48         ` Thomas Renninger
2008-10-20 16:54           ` Matthew Garrett
2008-10-20 17:51             ` Henrique de Moraes Holschuh
2008-10-20 17:58               ` Matthew Garrett
2008-10-20 18:16                 ` Henrique de Moraes Holschuh
2008-10-20 18:24                   ` Matthew Garrett
2008-10-20 18:47                     ` Henrique de Moraes Holschuh
2008-10-20 18:52                       ` Matthew Garrett
2008-10-20 19:25                         ` Henrique de Moraes Holschuh
2008-10-21  8:14                         ` Thomas Renninger
2008-10-21  9:53                         ` Thomas Renninger
2008-10-21  9:57                 ` Thomas Renninger
2008-10-21 12:46                   ` Matthew Garrett
2008-10-21 13:05                     ` Thomas Renninger
2008-10-21 13:08                       ` Matthew Garrett
2008-10-21 13:34                         ` Thomas Renninger
2008-10-21 14:01                           ` Rafael J. Wysocki
2008-10-21 14:00                             ` Matthew Garrett
2008-10-21 14:12                               ` Thomas Renninger
2008-10-21 14:19                                 ` Matthew Garrett
2008-10-21 14:25                               ` Rafael J. Wysocki
2008-10-21 14:29                                 ` Matthew Garrett
2008-10-21 14:45                                   ` Thomas Renninger
2008-10-21 14:49                                     ` Matthew Garrett
2008-10-21 15:10                                   ` Rafael J. Wysocki
2008-10-21 15:27                                     ` Matthew Garrett
2008-10-21 15:46                                       ` Henrique de Moraes Holschuh
2008-10-21 15:50                                         ` Matthew Garrett
2008-10-21 16:58                                           ` [ltp] " Henrique de Moraes Holschuh
2008-10-21 17:02                                             ` Matthew Garrett
2008-10-21 19:04                                             ` Rafael J. Wysocki
2008-10-20 16:43   ` Thomas Renninger
2008-10-20 18:05     ` Henrique de Moraes Holschuh
2008-10-20 15:46 ` Henrique de Moraes Holschuh
2008-10-21 11:07   ` Thomas Renninger
2008-11-11  0:58 ` Matthew Garrett
2008-11-12 23:58   ` Thomas Renninger
2008-11-13  0:56     ` Matthew Garrett
2008-11-13  2:21     ` [Devel] " Zhang Rui
2008-11-13  2:24       ` Matthew Garrett
2008-11-13  8:27         ` Zhang Rui
2008-11-13 11:13           ` Matthew Garrett

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200810192350.57993.trenn@suse.de \
    --to=trenn@suse.de \
    --cc=devel@acpica.org \
    --cc=hmh@hmh.eng.br \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-thinkpad@linux-thinkpad.org \
    --cc=me@markdoughty.co.uk \
    --cc=mjg59@srcf.ucam.org \
    --cc=yakui.zhao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox