From 947f780663cfe6a2e4ee445209f1ce0dc1394124 Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Fri, 16 Nov 2012 19:38:54 -0800 Subject: [PATCH] --- yaml --- r: 356197 b: refs/heads/master c: 960ddb4fe7832b559897e8b26ec805839b706905 h: refs/heads/master i: 356195: e004795f766e7c73def9a3114b1066ab02cdeb8e v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/init_32.c | 1 + trunk/arch/x86/mm/init_64.c | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c54eab8357b1..2880756c7caf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 74f27655dda84604d8bab47872020dcce5c88731 +refs/heads/master: 960ddb4fe7832b559897e8b26ec805839b706905 diff --git a/trunk/arch/x86/mm/init_32.c b/trunk/arch/x86/mm/init_32.c index 11a58001b4ce..27f7fc69cf8a 100644 --- a/trunk/arch/x86/mm/init_32.c +++ b/trunk/arch/x86/mm/init_32.c @@ -310,6 +310,7 @@ kernel_physical_mapping_init(unsigned long start, __pgprot(PTE_IDENT_ATTR | _PAGE_PSE); + pfn &= PMD_MASK >> PAGE_SHIFT; addr2 = (pfn + PTRS_PER_PTE-1) * PAGE_SIZE + PAGE_OFFSET + PAGE_SIZE-1; diff --git a/trunk/arch/x86/mm/init_64.c b/trunk/arch/x86/mm/init_64.c index 32c7e3847cf6..869372a5d3cf 100644 --- a/trunk/arch/x86/mm/init_64.c +++ b/trunk/arch/x86/mm/init_64.c @@ -464,7 +464,7 @@ phys_pmd_init(pmd_t *pmd_page, unsigned long address, unsigned long end, pages++; spin_lock(&init_mm.page_table_lock); set_pte((pte_t *)pmd, - pfn_pte(address >> PAGE_SHIFT, + pfn_pte((address & PMD_MASK) >> PAGE_SHIFT, __pgprot(pgprot_val(prot) | _PAGE_PSE))); spin_unlock(&init_mm.page_table_lock); last_map_addr = next; @@ -541,7 +541,8 @@ phys_pud_init(pud_t *pud_page, unsigned long addr, unsigned long end, pages++; spin_lock(&init_mm.page_table_lock); set_pte((pte_t *)pud, - pfn_pte(addr >> PAGE_SHIFT, PAGE_KERNEL_LARGE)); + pfn_pte((addr & PUD_MASK) >> PAGE_SHIFT, + PAGE_KERNEL_LARGE)); spin_unlock(&init_mm.page_table_lock); last_map_addr = next; continue;