Skip to content

Commit 9d34cfd

Browse files
jgross1KAGA-KOKO
authored andcommitted
x86: Don't rely on VMWare emulating PAT MSR correctly
VMWare seems not to emulate the PAT MSR correctly: reaeding MSR_IA32_CR_PAT returns 0 even after writing another value to it. Commit bd809af triggers this VMWare bug when the kernel is booted as a VMWare guest. Detect this bug and don't use the read value if it is 0. Fixes: bd809af "x86: Enable PAT to use cache mode translation tables" Reported-and-tested-by: Jongman Heo <[email protected]> Acked-by: Alok N Kataria <[email protected]> Signed-off-by: Juergen Gross <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Thomas Gleixner <[email protected]>
1 parent 4a0d310 commit 9d34cfd

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

arch/x86/mm/pat.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,13 @@ void pat_init(void)
234234
PAT(4, WB) | PAT(5, WC) | PAT(6, UC_MINUS) | PAT(7, UC);
235235

236236
/* Boot CPU check */
237-
if (!boot_pat_state)
237+
if (!boot_pat_state) {
238238
rdmsrl(MSR_IA32_CR_PAT, boot_pat_state);
239+
if (!boot_pat_state) {
240+
pat_disable("PAT read returns always zero, disabled.");
241+
return;
242+
}
243+
}
239244

240245
wrmsrl(MSR_IA32_CR_PAT, pat);
241246

0 commit comments

Comments
 (0)