x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead
authorBryan O'Donoghue <pure.logic@nexus-software.ie>
Tue, 23 Sep 2014 23:26:24 +0000 (00:26 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Oct 2014 16:38:19 +0000 (09:38 -0700)
commit94b209e7d25da7ad9f72ad27a87ba2faddcf1fe6
tree7d232402013607f3398c1aa7bc15151794fe9856
parentdff6e8cd03a5c2709ef0933e8b48cbf8b28aee4a
x86/intel/quark: Switch off CR4.PGE so TLB flush uses CR3 instead

commit ee1b5b165c0a2f04d2107e634e51f05d0eb107de upstream.

Quark x1000 advertises PGE via the standard CPUID method
PGE bits exist in Quark X1000's PTEs. In order to flush
an individual PTE it is necessary to reload CR3 irrespective
of the PTE.PGE bit.

See Quark Core_DevMan_001.pdf section 6.4.11

This bug was fixed in Galileo kernels, unfixed vanilla kernels are expected to
crash and burn on this platform.

Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Cc: Borislav Petkov <bp@alien8.de>
Link: http://lkml.kernel.org/r/1411514784-14885-1-git-send-email-pure.logic@nexus-software.ie
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kernel/cpu/intel.c