Commit eefc2d9e3d4f8820f2c128a0e44a23de28b1ed64

Authored by Jean Delvare
1 parent 7e27d6e778

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, &reg_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,