diff options
Diffstat (limited to 'arch/x86_64/kernel/early-quirks.c')
-rw-r--r-- | arch/x86_64/kernel/early-quirks.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c index 68273bff58cc..829698f6d049 100644 --- a/arch/x86_64/kernel/early-quirks.c +++ b/arch/x86_64/kernel/early-quirks.c | |||
@@ -69,11 +69,18 @@ static void nvidia_bugs(void) | |||
69 | 69 | ||
70 | static void ati_bugs(void) | 70 | static void ati_bugs(void) |
71 | { | 71 | { |
72 | if (timer_over_8254 == 1) { | 72 | } |
73 | timer_over_8254 = 0; | 73 | |
74 | printk(KERN_INFO | 74 | static void intel_bugs(void) |
75 | "ATI board detected. Disabling timer routing over 8254.\n"); | 75 | { |
76 | } | 76 | u16 device = read_pci_config_16(0, 0, 0, PCI_DEVICE_ID); |
77 | |||
78 | #ifdef CONFIG_SMP | ||
79 | if (device == PCI_DEVICE_ID_INTEL_E7320_MCH || | ||
80 | device == PCI_DEVICE_ID_INTEL_E7520_MCH || | ||
81 | device == PCI_DEVICE_ID_INTEL_E7525_MCH) | ||
82 | quirk_intel_irqbalance(); | ||
83 | #endif | ||
77 | } | 84 | } |
78 | 85 | ||
79 | struct chipset { | 86 | struct chipset { |
@@ -85,6 +92,7 @@ static struct chipset early_qrk[] = { | |||
85 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, | 92 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, |
86 | { PCI_VENDOR_ID_VIA, via_bugs }, | 93 | { PCI_VENDOR_ID_VIA, via_bugs }, |
87 | { PCI_VENDOR_ID_ATI, ati_bugs }, | 94 | { PCI_VENDOR_ID_ATI, ati_bugs }, |
95 | { PCI_VENDOR_ID_INTEL, intel_bugs}, | ||
88 | {} | 96 | {} |
89 | }; | 97 | }; |
90 | 98 | ||