aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/early-quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/kernel/early-quirks.c')
-rw-r--r--arch/x86_64/kernel/early-quirks.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c
index 68273bff58cc..49802f1bee94 100644
--- a/arch/x86_64/kernel/early-quirks.c
+++ b/arch/x86_64/kernel/early-quirks.c
@@ -76,6 +76,18 @@ static void ati_bugs(void)
76 } 76 }
77} 77}
78 78
79static void intel_bugs(void)
80{
81 u16 device = read_pci_config_16(0, 0, 0, PCI_DEVICE_ID);
82
83#ifdef CONFIG_SMP
84 if (device == PCI_DEVICE_ID_INTEL_E7320_MCH ||
85 device == PCI_DEVICE_ID_INTEL_E7520_MCH ||
86 device == PCI_DEVICE_ID_INTEL_E7525_MCH)
87 quirk_intel_irqbalance();
88#endif
89}
90
79struct chipset { 91struct chipset {
80 u16 vendor; 92 u16 vendor;
81 void (*f)(void); 93 void (*f)(void);
@@ -85,6 +97,7 @@ static struct chipset early_qrk[] = {
85 { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, 97 { PCI_VENDOR_ID_NVIDIA, nvidia_bugs },
86 { PCI_VENDOR_ID_VIA, via_bugs }, 98 { PCI_VENDOR_ID_VIA, via_bugs },
87 { PCI_VENDOR_ID_ATI, ati_bugs }, 99 { PCI_VENDOR_ID_ATI, ati_bugs },
100 { PCI_VENDOR_ID_INTEL, intel_bugs},
88 {} 101 {}
89}; 102};
90 103