diff options
author | David S. Miller <davem@davemloft.net> | 2014-09-27 00:19:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-10-05 19:53:38 -0400 |
commit | ac55c768143aa34cc3789c4820cbb0809a76fd9c (patch) | |
tree | f6bb7af5b71e7935169a778e3f7e7694fbd1416f /arch/sparc/kernel | |
parent | 473ad7f4fb005d1bb727e4ef27d370d28703a062 (diff) |
sparc64: Switch to 4-level page tables.
This has become necessary with chips that support more than 43-bits
of physical addressing.
Based almost entirely upon a patch by Bob Picco.
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Bob Picco <bob.picco@oracle.com>
Diffstat (limited to 'arch/sparc/kernel')
-rw-r--r-- | arch/sparc/kernel/smp_64.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index f7ba87543e5f..c9300bfaee5a 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c | |||
@@ -1467,6 +1467,13 @@ static void __init pcpu_populate_pte(unsigned long addr) | |||
1467 | pud_t *pud; | 1467 | pud_t *pud; |
1468 | pmd_t *pmd; | 1468 | pmd_t *pmd; |
1469 | 1469 | ||
1470 | if (pgd_none(*pgd)) { | ||
1471 | pud_t *new; | ||
1472 | |||
1473 | new = __alloc_bootmem(PAGE_SIZE, PAGE_SIZE, PAGE_SIZE); | ||
1474 | pgd_populate(&init_mm, pgd, new); | ||
1475 | } | ||
1476 | |||
1470 | pud = pud_offset(pgd, addr); | 1477 | pud = pud_offset(pgd, addr); |
1471 | if (pud_none(*pud)) { | 1478 | if (pud_none(*pud)) { |
1472 | pmd_t *new; | 1479 | pmd_t *new; |