From ee57ce20dbdd8982367fe317d17dcf77566a52bc Mon Sep 17 00:00:00 2001 From: Mel Gorman Date: Mon, 11 Feb 2013 14:52:36 +0000 Subject: [PATCH] --- yaml --- r: 349731 b: refs/heads/master c: 0ee364eb316348ddf3e0dfcd986f5f13f528f821 h: refs/heads/master i: 349729: 8d786438fcdef8b8f917b60f37212335eded6253 349727: e4e0f26c1d68d179b60e3dee6bb05ab35dc260c7 v: v3 --- [refs] | 2 +- trunk/arch/x86/include/asm/pgtable.h | 5 +++++ trunk/arch/x86/mm/init_64.c | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 3ddc61b344a7..43ae7454d059 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cb214ede7657db458fd0b2a25ea0b28dbf900ebc +refs/heads/master: 0ee364eb316348ddf3e0dfcd986f5f13f528f821 diff --git a/trunk/arch/x86/include/asm/pgtable.h b/trunk/arch/x86/include/asm/pgtable.h index 5199db2923d3..1c1a955e67c0 100644 --- a/trunk/arch/x86/include/asm/pgtable.h +++ b/trunk/arch/x86/include/asm/pgtable.h @@ -142,6 +142,11 @@ static inline unsigned long pmd_pfn(pmd_t pmd) return (pmd_val(pmd) & PTE_PFN_MASK) >> PAGE_SHIFT; } +static inline unsigned long pud_pfn(pud_t pud) +{ + return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT; +} + #define pte_page(pte) pfn_to_page(pte_pfn(pte)) static inline int pmd_large(pmd_t pte) diff --git a/trunk/arch/x86/mm/init_64.c b/trunk/arch/x86/mm/init_64.c index 2ead3c8a4c84..75c9a6a59697 100644 --- a/trunk/arch/x86/mm/init_64.c +++ b/trunk/arch/x86/mm/init_64.c @@ -831,6 +831,9 @@ int kern_addr_valid(unsigned long addr) if (pud_none(*pud)) return 0; + if (pud_large(*pud)) + return pfn_valid(pud_pfn(*pud)); + pmd = pmd_offset(pud, addr); if (pmd_none(*pmd)) return 0;