From: Andi Kleen <andi@firstfloor.org>
To: mingo@elte.hu, tglx@linutronix.de, lenb@kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH] Replace nvidia timer override quirk with pci id list
Date: Thu, 7 Feb 2008 20:55:19 +0100 [thread overview]
Message-ID: <20080207195519.GA21772@basil.nowhere.org> (raw)
[This patch was originally in the old ff tree and was intended for .24; but
somehow got lost in the arch merge. Has also shipped with OpenSUSE 10.3.
I think it should go into .25]
This replaces the old NF3/NF4 reference BIOS timer override quirk with a device
ID list. We need to ignore the timer override on these systems, but not
ignore it on NF5 based systems. Previously this was distingushed by checking
for HPET, but a lot of BIOS vendors didn't enable HPET in their pre Vista
BIOSes.
Replace the old "for all of nvidia" quirk with a quirk containing pci device
ID. I goobled this list together from pci.ids and googling and it may be
incomplete, but so far I haven't had complaints.
Cc: lenb@kernel.org
Signed-off-by: Andi Kleen <ak@suse.de>
---
arch/x86/kernel/early-quirks.c | 43 ++++++++++++++++-------------------------
1 file changed, 17 insertions(+), 26 deletions(-)
Index: linux/arch/x86/kernel/early-quirks.c
===================================================================
--- linux.orig/arch/x86/kernel/early-quirks.c
+++ linux/arch/x86/kernel/early-quirks.c
@@ -60,38 +60,21 @@ static void __init via_bugs(int num, in
#endif
}
-#ifdef CONFIG_ACPI
-#ifdef CONFIG_X86_IO_APIC
-
-static int __init nvidia_hpet_check(struct acpi_table_header *header)
-{
- return 0;
-}
-#endif /* CONFIG_X86_IO_APIC */
-#endif /* CONFIG_ACPI */
-
-static void __init nvidia_bugs(int num, int slot, int func)
+static void __init nvidia_timer(int num, int slot, int func)
{
#ifdef CONFIG_ACPI
#ifdef CONFIG_X86_IO_APIC
/*
- * All timer overrides on Nvidia are
- * wrong unless HPET is enabled.
- * Unfortunately that's not true on many Asus boards.
- * We don't know yet how to detect this automatically, but
- * at least allow a command line override.
+ * All timer overrides on Nvidia NF3/NF4 are
+ * wrong.
*/
if (acpi_use_timer_override)
return;
- if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) {
- acpi_skip_timer_override = 1;
- printk(KERN_INFO "Nvidia board "
- "detected. Ignoring ACPI "
- "timer override.\n");
- printk(KERN_INFO "If you got timer trouble "
- "try acpi_use_timer_override\n");
- }
+ acpi_skip_timer_override = 1;
+ printk(KERN_INFO "Pre NForce5 vidia board detected."
+ "Ignoring ACPI timer override.\n");
+ printk(KERN_INFO "If you have trouble try acpi_use_timer_override\n");
#endif
#endif
/* RED-PEN skip them on mptables too? */
@@ -121,9 +104,19 @@ struct chipset {
void (*f)(int num, int slot, int func);
};
+#define QBRIDGE(vendor, device, func) { \
+ vendor, device, PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, \
+ QFLAG_APPLY_ONCE, func }
+
static struct chipset early_qrk[] __initdata = {
- { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
- PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, nvidia_bugs },
+ /* This list should cover at least one PCI ID from each NF3 or NF4
+ mainboard to handle a bug in their reference BIOS. */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x00e1, nvidia_timer), /* nforce 3 */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x00ed, nvidia_timer), /* nforce 3 */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x003d, nvidia_timer), /* mcp 04 ?? */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x02f0, nvidia_timer), /* mcp 51/nf4 ? */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x026f, nvidia_timer), /* mcp 51/nf4 ? */
+ QBRIDGE(PCI_VENDOR_ID_NVIDIA, 0x005c, nvidia_timer), /* ck 804 */
{ PCI_VENDOR_ID_VIA, PCI_ANY_ID,
PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, via_bugs },
{ PCI_VENDOR_ID_ATI, PCI_ANY_ID,
next reply other threads:[~2008-02-07 19:55 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-07 19:55 Andi Kleen [this message]
2008-02-07 21:21 ` [PATCH] Replace nvidia timer override quirk with pci id list Prakash Punnoor
2008-02-08 11:36 ` Andi Kleen
2008-02-08 15:13 ` Prakash Punnoor
2008-02-08 15:18 ` Prakash Punnoor
2008-02-08 16:09 ` Andi Kleen
2008-02-08 17:39 ` Prakash Punnoor
2008-02-08 19:01 ` Andi Kleen
2008-02-08 19:00 ` Prakash Punnoor
2008-02-08 21:02 ` Andi Kleen
2008-02-08 23:08 ` Prakash Punnoor
2008-02-09 11:06 ` Thomas Gleixner
2008-02-09 12:18 ` Prakash Punnoor
2008-02-09 11:59 ` Andi Kleen
2008-02-09 11:53 ` Prakash Punnoor
2008-02-09 14:31 ` Andi Kleen
2008-02-09 15:51 ` Prakash Punnoor
2008-02-09 16:56 ` Andi Kleen
2008-02-09 17:30 ` Prakash Punnoor
2008-02-09 12:17 ` [PATCH] Replace nvidia timer override quirk with pci id list II Andi Kleen
2010-01-29 8:32 ` [PATCH] Replace nvidia timer override quirk with pci id list Yuhong Bao
2008-02-09 12:46 ` Gene Heskett
2008-02-09 14:18 ` Andi Kleen
2008-02-09 14:03 ` Alan Cox
2008-02-09 18:02 ` Gene Heskett
2008-02-09 18:11 ` Prakash Punnoor
2008-02-09 20:05 ` Gene Heskett
2008-02-09 21:13 ` Prakash Punnoor
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=20080207195519.GA21772@basil.nowhere.org \
--to=andi@firstfloor.org \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
/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