When MSR_IA32_TEMPERATURE_TARGET is locked, TCC Offset can not be
updated even if the PROGRAMMABE Bit is set.
Yield the driver on platforms with MSR_IA32_TEMPERATURE_TARGET locked.
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
 #define TCC_SHIFT 24
 #define TCC_MASK       (0x3fULL<<24)
 #define TCC_PROGRAMMABLE       BIT(30)
+#define TCC_LOCKED             BIT(31)
 
 static struct thermal_cooling_device *tcc_cdev;
 
        if (!(val & TCC_PROGRAMMABLE))
                return -ENODEV;
 
+       err = rdmsrl_safe(MSR_IA32_TEMPERATURE_TARGET, &val);
+       if (err)
+               return err;
+
+       if (val & TCC_LOCKED) {
+               pr_info("TCC Offset locked\n");
+               return -ENODEV;
+       }
+
        pr_info("Programmable TCC Offset detected\n");
 
        tcc_cdev =