hwmon: (coretemp) Refine TjMax detection
authorGuenter Roeck <linux@roeck-us.net>
Sat, 9 Nov 2013 17:38:14 +0000 (09:38 -0800)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 15 Jan 2014 05:36:31 +0000 (21:36 -0800)
Intel's turbostat code uses only 7 bits from MSR_IA32_TEMPERATURE_TARGET to
read TjMax, and also only accepts it if the reported temperature is at least
85 degrees C. Play safe and do the same.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/coretemp.c

index 7eed10e20b38a236fbb0582e88f12834b75d5edf..b2e59b395ce475a91b6c9bbeecf66a3e4e3caeee 100644 (file)
@@ -368,12 +368,12 @@ static int get_tjmax(struct cpuinfo_x86 *c, u32 id, struct device *dev)
                if (cpu_has_tjmax(c))
                        dev_warn(dev, "Unable to read TjMax from CPU %u\n", id);
        } else {
-               val = (eax >> 16) & 0xff;
+               val = (eax >> 16) & 0x7f;
                /*
                 * If the TjMax is not plausible, an assumption
                 * will be used
                 */
-               if (val) {
+               if (val >= 85) {
                        dev_dbg(dev, "TjMax is %d degrees C\n", val);
                        return val * 1000;
                }