Commit eefc2d9e3d4f8820f2c128a0e44a23de28b1ed64
1 parent
7e27d6e778
Exists in
master
and in
7 other branches
hwmon: (k10temp) Do not blacklist known working CPU models
When detecting AM2+ or AM3 socket with DDR2, only blacklist cores which are known to exist in AM2+ format. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Clemens Ladisch <clemens@ladisch.de> Cc: Andreas Herrmann <andreas.herrmann3@amd.com> Cc: stable@kernel.org
Showing 1 changed file with 12 additions and 2 deletions Side-by-side Diff
drivers/hwmon/k10temp.c
... | ... | @@ -112,11 +112,21 @@ |
112 | 112 | if (pkg_type != CPUID_PKGTYPE_AM2R2_AM3) |
113 | 113 | return false; |
114 | 114 | |
115 | - /* Differentiate between AM2+ (bad) and AM3 (good) */ | |
115 | + /* DDR3 memory implies socket AM3, which is good */ | |
116 | 116 | pci_bus_read_config_dword(pdev->bus, |
117 | 117 | PCI_DEVFN(PCI_SLOT(pdev->devfn), 2), |
118 | 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 | 132 | static int __devinit k10temp_probe(struct pci_dev *pdev, |