| 1 |
From: Andreas Herrmann <andreas.herrmann3@amd.com>
|
| 2 |
Date: Wed, 22 Oct 2008 11:08:31 +0000 (+0200)
|
| 3 |
Subject: x86: call dmi-quirks for HP Laptops after early-quirks are executed
|
| 4 |
X-Git-Tag: v2.6.28-rc1~12^2~12
|
| 5 |
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=35af28219e684a36cc8b1ff456c370ce22be157d
|
| 6 |
|
| 7 |
x86: call dmi-quirks for HP Laptops after early-quirks are executed
|
| 8 |
|
| 9 |
Impact: make warning message disappear - functionality unchanged
|
| 10 |
|
| 11 |
Problems with bogus IRQ0 override of those laptops should be fixed
|
| 12 |
with commits
|
| 13 |
|
| 14 |
x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
|
| 15 |
x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
|
| 16 |
|
| 17 |
that introduce early-quirks based on chipset configuration.
|
| 18 |
|
| 19 |
For further information, see
|
| 20 |
http://bugzilla.kernel.org/show_bug.cgi?id=11516
|
| 21 |
|
| 22 |
Instead of removing the related dmi-quirks completely we'd like to
|
| 23 |
keep them for (at least) one kernel version -- to double-check whether
|
| 24 |
the early-quirks really took effect. But the dmi-quirks need to be
|
| 25 |
called after early-quirks are executed. With this patch calling
|
| 26 |
sequence for dmi-quriks is changed as follows:
|
| 27 |
|
| 28 |
acpi_boot_table_init() (dmi-quirks)
|
| 29 |
...
|
| 30 |
early_quirks() (detect bogus IRQ0 override)
|
| 31 |
...
|
| 32 |
acpi_boot_init() (late dmi-quirks and setup IO APIC)
|
| 33 |
|
| 34 |
Note: Plan is to remove the "late dmi-quirks" with next kernel version.
|
| 35 |
|
| 36 |
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
|
| 37 |
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
| 38 |
---
|
| 39 |
|
| 40 |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
|
| 41 |
index 0d1c26a..8072edb 100644
|
| 42 |
--- a/arch/x86/kernel/acpi/boot.c
|
| 43 |
+++ b/arch/x86/kernel/acpi/boot.c
|
| 44 |
@@ -1598,6 +1598,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
|
| 45 |
DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
|
| 46 |
},
|
| 47 |
},
|
| 48 |
+ {}
|
| 49 |
+};
|
| 50 |
+
|
| 51 |
+/* second table for DMI checks that should run after early-quirks */
|
| 52 |
+static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
|
| 53 |
/*
|
| 54 |
* HP laptops which use a DSDT reporting as HP/SB400/10000,
|
| 55 |
* which includes some code which overrides all temperature
|
| 56 |
@@ -1726,6 +1731,9 @@ int __init early_acpi_boot_init(void)
|
| 57 |
|
| 58 |
int __init acpi_boot_init(void)
|
| 59 |
{
|
| 60 |
+ /* those are executed after early-quirks are executed */
|
| 61 |
+ dmi_check_system(acpi_dmi_table_late);
|
| 62 |
+
|
| 63 |
/*
|
| 64 |
* If acpi_disabled, bail out
|
| 65 |
* One exception: acpi=ht continues far enough to enumerate LAPICs
|
| 66 |
|