diff options
| -rw-r--r-- | drivers/hwmon/k10temp.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c index 099a2138cdf6..da5a2404cd3e 100644 --- a/drivers/hwmon/k10temp.c +++ b/drivers/hwmon/k10temp.c | |||
| @@ -112,11 +112,21 @@ static bool __devinit has_erratum_319(struct pci_dev *pdev) | |||
| 112 | if (pkg_type != CPUID_PKGTYPE_AM2R2_AM3) | 112 | if (pkg_type != CPUID_PKGTYPE_AM2R2_AM3) |
| 113 | return false; | 113 | return false; |
| 114 | 114 | ||
| 115 | /* Differentiate between AM2+ (bad) and AM3 (good) */ | 115 | /* DDR3 memory implies socket AM3, which is good */ |
| 116 | pci_bus_read_config_dword(pdev->bus, | 116 | pci_bus_read_config_dword(pdev->bus, |
| 117 | PCI_DEVFN(PCI_SLOT(pdev->devfn), 2), | 117 | PCI_DEVFN(PCI_SLOT(pdev->devfn), 2), |
| 118 | REG_DCT0_CONFIG_HIGH, ®_dram_cfg); | 118 | REG_DCT0_CONFIG_HIGH, ®_dram_cfg); |
| 119 | return !(reg_dram_cfg & DDR3_MODE); | 119 | if (reg_dram_cfg & DDR3_MODE) |
| 120 | return false; | ||
| 121 | |||
| 122 | /* | ||
| 123 | * Unfortunately it is possible to run a socket AM3 CPU with DDR2 | ||
| 124 | * memory. We blacklist all the cores which do exist in socket AM2+ | ||
| 125 | * format. It still isn't perfect, as RB-C2 cores exist in both AM2+ | ||
| 126 | * and AM3 formats, but that's the best we can do. | ||
| 127 | */ | ||
| 128 | return boot_cpu_data.x86_model < 4 || | ||
| 129 | (boot_cpu_data.x86_model == 4 && boot_cpu_data.x86_mask <= 2); | ||
| 120 | } | 130 | } |
| 121 | 131 | ||
| 122 | static int __devinit k10temp_probe(struct pci_dev *pdev, | 132 | static int __devinit k10temp_probe(struct pci_dev *pdev, |
