diff options
author | Andreas Herrmann <andreas.herrmann3@amd.com> | 2008-10-22 07:08:31 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-10-22 08:15:31 -0400 |
commit | 35af28219e684a36cc8b1ff456c370ce22be157d (patch) | |
tree | 81c35b7f16ea5846efca656887eca3a3e60fc059 /arch/x86/kernel/acpi | |
parent | cf52ebedba77ee494b495dedd3a1f55944611275 (diff) |
x86: call dmi-quirks for HP Laptops after early-quirks are executed
Impact: make warning message disappear - functionality unchanged
Problems with bogus IRQ0 override of those laptops should be fixed
with commits
x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
that introduce early-quirks based on chipset configuration.
For further information, see
http://bugzilla.kernel.org/show_bug.cgi?id=11516
Instead of removing the related dmi-quirks completely we'd like to
keep them for (at least) one kernel version -- to double-check whether
the early-quirks really took effect. But the dmi-quirks need to be
called after early-quirks are executed. With this patch calling
sequence for dmi-quriks is changed as follows:
acpi_boot_table_init() (dmi-quirks)
...
early_quirks() (detect bogus IRQ0 override)
...
acpi_boot_init() (late dmi-quirks and setup IO APIC)
Note: Plan is to remove the "late dmi-quirks" with next kernel version.
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/acpi')
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 0d1c26a583c5..8072edb62478 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -1598,6 +1598,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = { | |||
1598 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), | 1598 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), |
1599 | }, | 1599 | }, |
1600 | }, | 1600 | }, |
1601 | {} | ||
1602 | }; | ||
1603 | |||
1604 | /* second table for DMI checks that should run after early-quirks */ | ||
1605 | static struct dmi_system_id __initdata acpi_dmi_table_late[] = { | ||
1601 | /* | 1606 | /* |
1602 | * HP laptops which use a DSDT reporting as HP/SB400/10000, | 1607 | * HP laptops which use a DSDT reporting as HP/SB400/10000, |
1603 | * which includes some code which overrides all temperature | 1608 | * which includes some code which overrides all temperature |
@@ -1726,6 +1731,9 @@ int __init early_acpi_boot_init(void) | |||
1726 | 1731 | ||
1727 | int __init acpi_boot_init(void) | 1732 | int __init acpi_boot_init(void) |
1728 | { | 1733 | { |
1734 | /* those are executed after early-quirks are executed */ | ||
1735 | dmi_check_system(acpi_dmi_table_late); | ||
1736 | |||
1729 | /* | 1737 | /* |
1730 | * If acpi_disabled, bail out | 1738 | * If acpi_disabled, bail out |
1731 | * One exception: acpi=ht continues far enough to enumerate LAPICs | 1739 | * One exception: acpi=ht continues far enough to enumerate LAPICs |