| .. | .. |
|---|
| 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); |
|---|