From 014919eb26063812b46ffce8f56a34f0130d7709 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Wed, 30 Jan 2008 13:34:07 +0100 Subject: [PATCH] --- yaml --- r: 80532 b: refs/heads/master c: a72a08a4b61cb8868606a69b744848552e92062b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/pageattr.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5cc62a538911..b292c215d915 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3c1df68b848b39270752ff8d4b956cc4a4dce0f6 +refs/heads/master: a72a08a4b61cb8868606a69b744848552e92062b diff --git a/trunk/arch/x86/mm/pageattr.c b/trunk/arch/x86/mm/pageattr.c index 23f0aa3d01c1..a2ee317548f2 100644 --- a/trunk/arch/x86/mm/pageattr.c +++ b/trunk/arch/x86/mm/pageattr.c @@ -216,8 +216,12 @@ __change_page_attr(unsigned long address, unsigned long pfn, pgprot_t prot) prot = static_protections(prot, address); if (level == PG_LEVEL_4K) { + WARN_ON_ONCE(pgprot_val(prot) & _PAGE_PSE); set_pte_atomic(kpte, pfn_pte(pfn, canon_pgprot(prot))); } else { + /* Clear the PSE bit for the 4k level pages ! */ + pgprot_val(prot) = pgprot_val(prot) & ~_PAGE_PSE; + err = split_large_page(kpte, address); if (!err) goto repeat;