|
@@ -546,11 +546,13 @@ static int __cpuinit check_c1e_idle(const struct cpuinfo_x86 *c)
|
|
|
* check OSVW bit for CPUs that are not affected
|
|
|
* by erratum #400
|
|
|
*/
|
|
|
- rdmsrl(MSR_AMD64_OSVW_ID_LENGTH, val);
|
|
|
- if (val >= 2) {
|
|
|
- rdmsrl(MSR_AMD64_OSVW_STATUS, val);
|
|
|
- if (!(val & BIT(1)))
|
|
|
- goto no_c1e_idle;
|
|
|
+ if (cpu_has(c, X86_FEATURE_OSVW)) {
|
|
|
+ rdmsrl(MSR_AMD64_OSVW_ID_LENGTH, val);
|
|
|
+ if (val >= 2) {
|
|
|
+ rdmsrl(MSR_AMD64_OSVW_STATUS, val);
|
|
|
+ if (!(val & BIT(1)))
|
|
|
+ goto no_c1e_idle;
|
|
|
+ }
|
|
|
}
|
|
|
return 1;
|
|
|
}
|