diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-07-01 19:46:33 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 07:16:27 -0400 |
commit | 574977a2edde0148ea365008dceb0c2594d10b11 (patch) | |
tree | f20b4093034b5a9293dba7bc132778aebbe41e26 /arch/x86 | |
parent | aea5f9f89bae5d5f9eb3fe3cddedbbfb82e6e44f (diff) |
x86_64/setup: unconditionally populate the pgd
When allocating a new pud, unconditionally populate the pgd (why did
we bother to create a new pud if we weren't going to populate it?).
This will only happen if the pgd slot was empty, since any existing
pud will be reused.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: Stephen Tweedie <sct@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/mm/init_64.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index b10b7f17ea58..77d129d62c97 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -616,9 +616,8 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, unsigned lon | |||
616 | 616 | ||
617 | last_map_addr = phys_pud_init(pud, __pa(start), __pa(next)); | 617 | last_map_addr = phys_pud_init(pud, __pa(start), __pa(next)); |
618 | unmap_low_page(pud); | 618 | unmap_low_page(pud); |
619 | if (!after_bootmem) | 619 | pgd_populate(&init_mm, pgd_offset_k(start), |
620 | pgd_populate(&init_mm, pgd_offset_k(start), | 620 | __va(pud_phys)); |
621 | __va(pud_phys)); | ||
622 | } | 621 | } |
623 | 622 | ||
624 | if (!after_bootmem) | 623 | if (!after_bootmem) |