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)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 14 Dec 2014 16:23:44 +0000 (16:23 +0000)
commit9c8387509ce9f8124f7c5b1ab77fd98305deff37
treedcedf428ba981bde4dd744d5d38e74b38b3048d6
parentf9b5299d5ae1ba735fa3cc081fd5dc0dc33ba2e8
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: Ben Hutchings <ben@decadent.org.uk>
arch/x86/kernel/cpu/intel.c