diff options
Diffstat (limited to 'arch/i386/kernel/cpu/mtrr/main.c')
-rw-r--r-- | arch/i386/kernel/cpu/mtrr/main.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/i386/kernel/cpu/mtrr/main.c b/arch/i386/kernel/cpu/mtrr/main.c index 54999e4c55fd..e1c2042b9b7e 100644 --- a/arch/i386/kernel/cpu/mtrr/main.c +++ b/arch/i386/kernel/cpu/mtrr/main.c | |||
@@ -72,17 +72,21 @@ void set_mtrr_ops(struct mtrr_ops * ops) | |||
72 | static int have_wrcomb(void) | 72 | static int have_wrcomb(void) |
73 | { | 73 | { |
74 | struct pci_dev *dev; | 74 | struct pci_dev *dev; |
75 | u8 rev; | ||
75 | 76 | ||
76 | if ((dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) { | 77 | if ((dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) != NULL) { |
77 | /* ServerWorks LE chipsets have problems with write-combining | 78 | /* ServerWorks LE chipsets < rev 6 have problems with write-combining |
78 | Don't allow it and leave room for other chipsets to be tagged */ | 79 | Don't allow it and leave room for other chipsets to be tagged */ |
79 | if (dev->vendor == PCI_VENDOR_ID_SERVERWORKS && | 80 | if (dev->vendor == PCI_VENDOR_ID_SERVERWORKS && |
80 | dev->device == PCI_DEVICE_ID_SERVERWORKS_LE) { | 81 | dev->device == PCI_DEVICE_ID_SERVERWORKS_LE) { |
81 | printk(KERN_INFO "mtrr: Serverworks LE detected. Write-combining disabled.\n"); | 82 | pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev); |
82 | pci_dev_put(dev); | 83 | if (rev <= 5) { |
83 | return 0; | 84 | printk(KERN_INFO "mtrr: Serverworks LE rev < 6 detected. Write-combining disabled.\n"); |
85 | pci_dev_put(dev); | ||
86 | return 0; | ||
87 | } | ||
84 | } | 88 | } |
85 | /* Intel 450NX errata # 23. Non ascending cachline evictions to | 89 | /* Intel 450NX errata # 23. Non ascending cacheline evictions to |
86 | write combining memory may resulting in data corruption */ | 90 | write combining memory may resulting in data corruption */ |
87 | if (dev->vendor == PCI_VENDOR_ID_INTEL && | 91 | if (dev->vendor == PCI_VENDOR_ID_INTEL && |
88 | dev->device == PCI_DEVICE_ID_INTEL_82451NX) { | 92 | dev->device == PCI_DEVICE_ID_INTEL_82451NX) { |