diff options
Diffstat (limited to 'arch/x86_64/kernel/early-quirks.c')
-rw-r--r-- | arch/x86_64/kernel/early-quirks.c | 13 |
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 | ||
79 | static 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 | |||
79 | struct chipset { | 91 | struct 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 | ||