diff options
| author | Len Brown <lenb@kernel.org> | 2007-03-08 18:28:32 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-08 19:06:07 -0500 |
| commit | fe69933652562f093ccde600cecf234930c01932 (patch) | |
| tree | a5f7890fc469b7ea63047572076adad7c5d7c208 | |
| parent | eb9c4f2ef7150ea2144b53811d1cf555d8e27f69 (diff) | |
[PATCH] ACPI: repair nvidia early quirk breakage on x86_64
x86_64 nvidia_bugs() broke when we bailed out on not finding the HPET.
However, the quirk works by checking for _not_ finding the HPET...
Delete the nvidia_hpet_detected flag and simply test for
not finding the HPET, which is simple to do now that
acpi_table_parse returns 1 on failure.
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| -rw-r--r-- | arch/i386/kernel/acpi/earlyquirk.c | 7 | ||||
| -rw-r--r-- | arch/x86_64/kernel/early-quirks.c | 9 |
2 files changed, 2 insertions, 14 deletions
diff --git a/arch/i386/kernel/acpi/earlyquirk.c b/arch/i386/kernel/acpi/earlyquirk.c index bf86f7662d8b..7fdba8a44c17 100644 --- a/arch/i386/kernel/acpi/earlyquirk.c +++ b/arch/i386/kernel/acpi/earlyquirk.c | |||
| @@ -14,11 +14,8 @@ | |||
| 14 | 14 | ||
| 15 | #ifdef CONFIG_ACPI | 15 | #ifdef CONFIG_ACPI |
| 16 | 16 | ||
| 17 | static int nvidia_hpet_detected __initdata; | ||
| 18 | |||
| 19 | static int __init nvidia_hpet_check(struct acpi_table_header *header) | 17 | static int __init nvidia_hpet_check(struct acpi_table_header *header) |
| 20 | { | 18 | { |
| 21 | nvidia_hpet_detected = 1; | ||
| 22 | return 0; | 19 | return 0; |
| 23 | } | 20 | } |
| 24 | #endif | 21 | #endif |
| @@ -29,9 +26,7 @@ static int __init check_bridge(int vendor, int device) | |||
| 29 | /* According to Nvidia all timer overrides are bogus unless HPET | 26 | /* According to Nvidia all timer overrides are bogus unless HPET |
| 30 | is enabled. */ | 27 | is enabled. */ |
| 31 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { | 28 | if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { |
| 32 | nvidia_hpet_detected = 0; | 29 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check) { |
| 33 | acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check); | ||
| 34 | if (nvidia_hpet_detected == 0) { | ||
| 35 | acpi_skip_timer_override = 1; | 30 | acpi_skip_timer_override = 1; |
| 36 | printk(KERN_INFO "Nvidia board " | 31 | printk(KERN_INFO "Nvidia board " |
| 37 | "detected. Ignoring ACPI " | 32 | "detected. Ignoring ACPI " |
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c index 8047ea8c2ab2..dec587b293bf 100644 --- a/arch/x86_64/kernel/early-quirks.c +++ b/arch/x86_64/kernel/early-quirks.c | |||
| @@ -30,11 +30,8 @@ static void via_bugs(void) | |||
| 30 | 30 | ||
| 31 | #ifdef CONFIG_ACPI | 31 | #ifdef CONFIG_ACPI |
| 32 | 32 | ||
| 33 | static int nvidia_hpet_detected __initdata; | ||
| 34 | |||
| 35 | static int __init nvidia_hpet_check(struct acpi_table_header *header) | 33 | static int __init nvidia_hpet_check(struct acpi_table_header *header) |
| 36 | { | 34 | { |
| 37 | nvidia_hpet_detected = 1; | ||
| 38 | return 0; | 35 | return 0; |
| 39 | } | 36 | } |
| 40 | #endif | 37 | #endif |
| @@ -52,11 +49,7 @@ static void nvidia_bugs(void) | |||
| 52 | if (acpi_use_timer_override) | 49 | if (acpi_use_timer_override) |
| 53 | return; | 50 | return; |
| 54 | 51 | ||
| 55 | nvidia_hpet_detected = 0; | 52 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) { |
| 56 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) | ||
| 57 | return; | ||
| 58 | |||
| 59 | if (nvidia_hpet_detected == 0) { | ||
| 60 | acpi_skip_timer_override = 1; | 53 | acpi_skip_timer_override = 1; |
| 61 | printk(KERN_INFO "Nvidia board " | 54 | printk(KERN_INFO "Nvidia board " |
| 62 | "detected. Ignoring ACPI " | 55 | "detected. Ignoring ACPI " |
