From 4a220341a8dd093dc7831c1901ef4e8de01d62ba Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Mon, 4 Feb 2008 16:48:07 +0100 Subject: [PATCH] --- yaml --- r: 82894 b: refs/heads/master c: 34508f66b69ff1708192654f631eb8f1d4c52005 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/pageattr.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 8e3bb7ebc890..1a057db1a0a1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 65e074dffa198978ab0c9976a19b954fbe1183e2 +refs/heads/master: 34508f66b69ff1708192654f631eb8f1d4c52005 diff --git a/trunk/arch/x86/mm/pageattr.c b/trunk/arch/x86/mm/pageattr.c index 40b7ac58e671..3810f7a83b1d 100644 --- a/trunk/arch/x86/mm/pageattr.c +++ b/trunk/arch/x86/mm/pageattr.c @@ -243,6 +243,17 @@ static int try_preserve_large_page(pte_t *kpte, unsigned long address, pgprot_t old_prot, new_prot; int level, res = CPA_SPLIT; + /* + * An Athlon 64 X2 showed hard hangs if we tried to preserve + * largepages and changed the PSE entry from RW to RO. + * + * As AMD CPUs have a long series of erratas in this area, + * (and none of the known ones seem to explain this hang), + * disable this code until the hang can be debugged: + */ + if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD) + return res; + spin_lock_irqsave(&pgd_lock, flags); /* * Check for races, another CPU might have split this page