diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-05-22 16:30:39 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-11 20:01:19 -0700 |
commit | dd7bee967d1c774f3ae32f9e8f6d3dfd2572e2c9 (patch) | |
tree | cc1a9920660029eaa54bd23c9886189aac1c279f | |
parent | 0fc27bd6135b319fd21b70091b280a6f3b642a87 (diff) | |
download | lwn-dd7bee967d1c774f3ae32f9e8f6d3dfd2572e2c9.tar.gz lwn-dd7bee967d1c774f3ae32f9e8f6d3dfd2572e2c9.zip |
x86: work around Fedora-11 x86-32 kernel failures on Intel Atom CPUs
commit 211b3d03c7400f48a781977a50104c9d12f4e229 upstream
[Trivial backport to 2.6.27 by cebbert@redhat.com]
x86: work around Fedora-11 x86-32 kernel failures on Intel Atom CPUs
Impact: work around boot crash
Work around Intel Atom erratum AAH41 (probabilistically) - it's triggering
in the field.
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Kyle McMartin <kyle@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | arch/x86/mm/pageattr.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index 7c3b8dc52dc8..5468c195a1c9 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c @@ -565,6 +565,17 @@ static int split_large_page(pte_t *kpte, unsigned long address) ref_prot = pte_pgprot(pte_mkexec(pte_clrhuge(*kpte))); pgprot_val(ref_prot) |= _PAGE_PRESENT; __set_pmd_pte(kpte, address, mk_pte(base, ref_prot)); + + /* + * Intel Atom errata AAH41 workaround. + * + * The real fix should be in hw or in a microcode update, but + * we also probabilistically try to reduce the window of having + * a large TLB mixed with 4K TLBs while instruction fetches are + * going on. + */ + __flush_tlb_all(); + base = NULL; out_unlock: |