Hi Please remove this patch from all stable kernels because it causes boot failure for some people. I will send another patch. Mikulas On Mon, 5 Jun 2017, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > > This is a note to let you know that I've just added the patch titled > > x86/PAT: Fix Xorg regression on CPUs that don't support PAT > > to the 4.11-stable tree which can be found at: > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > The filename of the patch is: > x86-pat-fix-xorg-regression-on-cpus-that-don-t-support-pat.patch > and it can be found in the queue-4.11 subdirectory. > > If you, or anyone else, feels it should not be added to the stable tree, > please let <stable@xxxxxxxxxxxxxxx> know about it. > > > >From cbed27cdf0e3f7ea3b2259e86b9e34df02be3fe4 Mon Sep 17 00:00:00 2001 > From: Mikulas Patocka <mpatocka@xxxxxxxxxx> > Date: Tue, 18 Apr 2017 15:07:11 -0400 > Subject: x86/PAT: Fix Xorg regression on CPUs that don't support PAT > > From: Mikulas Patocka <mpatocka@xxxxxxxxxx> > > commit cbed27cdf0e3f7ea3b2259e86b9e34df02be3fe4 upstream. > > In the file arch/x86/mm/pat.c, there's a '__pat_enabled' variable. The > variable is set to 1 by default and the function pat_init() sets > __pat_enabled to 0 if the CPU doesn't support PAT. > > However, on AMD K6-3 CPUs, the processor initialization code never calls > pat_init() and so __pat_enabled stays 1 and the function pat_enabled() > returns true, even though the K6-3 CPU doesn't support PAT. > > The result of this bug is that a kernel warning is produced when attempting to > start the Xserver and the Xserver doesn't start (fork() returns ENOMEM). > Another symptom of this bug is that the framebuffer driver doesn't set the > K6-3 MTRR registers: > > x86/PAT: Xorg:3891 map pfn expected mapping type uncached-minus for [mem 0xe4000000-0xe5ffffff], got write-combining > ------------[ cut here ]------------ > WARNING: CPU: 0 PID: 3891 at arch/x86/mm/pat.c:1020 untrack_pfn+0x5c/0x9f > ... > x86/PAT: Xorg:3891 map pfn expected mapping type uncached-minus for [mem 0xe4000000-0xe5ffffff], got write-combining > > To fix the bug change pat_enabled() so that it returns true only if PAT > initialization was actually done. > > Also, I changed boot_cpu_has(X86_FEATURE_PAT) to > this_cpu_has(X86_FEATURE_PAT) in pat_ap_init(), so that we check the PAT > feature on the processor that is being initialized. > > Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Andy Lutomirski <luto@xxxxxxxxxx> > Cc: Borislav Petkov <bp@xxxxxxxxx> > Cc: Brian Gerst <brgerst@xxxxxxxxx> > Cc: Denys Vlasenko <dvlasenk@xxxxxxxxxx> > Cc: H. Peter Anvin <hpa@xxxxxxxxx> > Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Luis R. Rodriguez <mcgrof@xxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Toshi Kani <toshi.kani@xxxxxx> > Link: http://lkml.kernel.org/r/alpine.LRH.2.02.1704181501450.26399@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > arch/x86/mm/pat.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > --- a/arch/x86/mm/pat.c > +++ b/arch/x86/mm/pat.c > @@ -64,9 +64,11 @@ static int __init nopat(char *str) > } > early_param("nopat", nopat); > > +static bool __read_mostly __pat_initialized = false; > + > bool pat_enabled(void) > { > - return !!__pat_enabled; > + return __pat_initialized; > } > EXPORT_SYMBOL_GPL(pat_enabled); > > @@ -224,13 +226,14 @@ static void pat_bsp_init(u64 pat) > } > > wrmsrl(MSR_IA32_CR_PAT, pat); > + __pat_initialized = true; > > __init_cache_modes(pat); > } > > static void pat_ap_init(u64 pat) > { > - if (!boot_cpu_has(X86_FEATURE_PAT)) { > + if (!this_cpu_has(X86_FEATURE_PAT)) { > /* > * If this happens we are on a secondary CPU, but switched to > * PAT on the boot CPU. We have no way to undo PAT. > @@ -305,7 +308,7 @@ void pat_init(void) > u64 pat; > struct cpuinfo_x86 *c = &boot_cpu_data; > > - if (!pat_enabled()) { > + if (!__pat_enabled) { > init_cache_modes(); > return; > } > > > Patches currently in stable-queue which might be from mpatocka@xxxxxxxxxx are > > queue-4.11/x86-pat-fix-xorg-regression-on-cpus-that-don-t-support-pat.patch >