]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/commitdiff
x86: fix kernel_physical_mapping_init() for large x86 systems
authorIngo Molnar <mingo@elte.hu>
Sun, 20 Jul 2008 15:24:03 +0000 (17:24 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Aug 2008 19:43:10 +0000 (12:43 -0700)
based on e22146e610bb7aed63282148740ab1d1b91e1d90 upstream

Fix bug in kernel_physical_mapping_init() that causes kernel
page table to be built incorrectly for systems with greater
than 512GB of memory.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Cc: linux-mm@kvack.org
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Oliver Pinter <oliver.pntr@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
arch/x86/mm/init_64.c

index 819dad973b1375bc5da5a90297c5c41788d2a652..7b27710ce3b70aa6f39c9d7c60e75ac90cd2c43d 100644 (file)
@@ -579,7 +579,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, unsigned lon
                else
                        pud = alloc_low_page(&pud_phys);
 
-               next = start + PGDIR_SIZE;
+               next = (start + PGDIR_SIZE) & PGDIR_MASK;
                if (next > end)
                        next = end;
                last_map_addr = phys_pud_init(pud, __pa(start), __pa(next));