.. | .. |
---|
4 | 4 | * |
---|
5 | 5 | * Extracted from init.c |
---|
6 | 6 | */ |
---|
7 | | -#include <linux/bootmem.h> |
---|
| 7 | +#include <linux/memblock.h> |
---|
8 | 8 | #include <linux/percpu.h> |
---|
9 | 9 | #include <linux/init.h> |
---|
10 | 10 | #include <linux/string.h> |
---|
.. | .. |
---|
21 | 21 | #if defined(CONFIG_HIGHMEM) |
---|
22 | 22 | static void * __init init_pmd(unsigned long vaddr, unsigned long n_pages) |
---|
23 | 23 | { |
---|
24 | | - pgd_t *pgd = pgd_offset_k(vaddr); |
---|
25 | | - pmd_t *pmd = pmd_offset(pgd, vaddr); |
---|
| 24 | + pmd_t *pmd = pmd_off_k(vaddr); |
---|
26 | 25 | pte_t *pte; |
---|
27 | 26 | unsigned long i; |
---|
28 | 27 | |
---|
.. | .. |
---|
31 | 30 | pr_debug("%s: vaddr: 0x%08lx, n_pages: %ld\n", |
---|
32 | 31 | __func__, vaddr, n_pages); |
---|
33 | 32 | |
---|
34 | | - pte = alloc_bootmem_low_pages(n_pages * sizeof(pte_t)); |
---|
| 33 | + pte = memblock_alloc_low(n_pages * sizeof(pte_t), PAGE_SIZE); |
---|
| 34 | + if (!pte) |
---|
| 35 | + panic("%s: Failed to allocate %lu bytes align=%lx\n", |
---|
| 36 | + __func__, n_pages * sizeof(pte_t), PAGE_SIZE); |
---|
35 | 37 | |
---|
36 | 38 | for (i = 0; i < n_pages; ++i) |
---|
37 | 39 | pte_clear(NULL, 0, pte + i); |
---|