| .. | .. |
|---|
| 32 | 32 | #include <linux/vmalloc.h> |
|---|
| 33 | 33 | #include <linux/init.h> |
|---|
| 34 | 34 | #include <linux/mm_types.h> |
|---|
| 35 | +#include <linux/pgtable.h> |
|---|
| 35 | 36 | |
|---|
| 36 | | -#include <asm/pgtable.h> |
|---|
| 37 | 37 | #include <asm/pgalloc.h> |
|---|
| 38 | 38 | #include <linux/io.h> |
|---|
| 39 | 39 | #include <asm/mmu.h> |
|---|
| .. | .. |
|---|
| 43 | 43 | unsigned long ioremap_base; |
|---|
| 44 | 44 | unsigned long ioremap_bot; |
|---|
| 45 | 45 | EXPORT_SYMBOL(ioremap_bot); |
|---|
| 46 | | - |
|---|
| 47 | | -#ifndef CONFIG_SMP |
|---|
| 48 | | -struct pgtable_cache_struct quicklists; |
|---|
| 49 | | -#endif |
|---|
| 50 | 46 | |
|---|
| 51 | 47 | static void __iomem *__ioremap(phys_addr_t addr, unsigned long size, |
|---|
| 52 | 48 | unsigned long flags) |
|---|
| .. | .. |
|---|
| 75 | 71 | p >= memory_start && p < virt_to_phys(high_memory) && |
|---|
| 76 | 72 | !(p >= __virt_to_phys((phys_addr_t)__bss_stop) && |
|---|
| 77 | 73 | p < __virt_to_phys((phys_addr_t)__bss_stop))) { |
|---|
| 78 | | - pr_warn("__ioremap(): phys addr "PTE_FMT" is RAM lr %pf\n", |
|---|
| 74 | + pr_warn("__ioremap(): phys addr "PTE_FMT" is RAM lr %ps\n", |
|---|
| 79 | 75 | (unsigned long)p, __builtin_return_address(0)); |
|---|
| 80 | 76 | return NULL; |
|---|
| 81 | 77 | } |
|---|
| .. | .. |
|---|
| 138 | 134 | |
|---|
| 139 | 135 | int map_page(unsigned long va, phys_addr_t pa, int flags) |
|---|
| 140 | 136 | { |
|---|
| 137 | + p4d_t *p4d; |
|---|
| 138 | + pud_t *pud; |
|---|
| 141 | 139 | pmd_t *pd; |
|---|
| 142 | 140 | pte_t *pg; |
|---|
| 143 | 141 | int err = -ENOMEM; |
|---|
| 142 | + |
|---|
| 144 | 143 | /* Use upper 10 bits of VA to index the first level map */ |
|---|
| 145 | | - pd = pmd_offset(pgd_offset_k(va), va); |
|---|
| 144 | + p4d = p4d_offset(pgd_offset_k(va), va); |
|---|
| 145 | + pud = pud_offset(p4d, va); |
|---|
| 146 | + pd = pmd_offset(pud, va); |
|---|
| 146 | 147 | /* Use middle 10 bits of VA to index the second-level map */ |
|---|
| 147 | 148 | pg = pte_alloc_kernel(pd, va); /* from powerpc - pgtable.c */ |
|---|
| 148 | 149 | /* pg = pte_alloc_kernel(&init_mm, pd, va); */ |
|---|
| .. | .. |
|---|
| 192 | 193 | static int get_pteptr(struct mm_struct *mm, unsigned long addr, pte_t **ptep) |
|---|
| 193 | 194 | { |
|---|
| 194 | 195 | pgd_t *pgd; |
|---|
| 196 | + p4d_t *p4d; |
|---|
| 197 | + pud_t *pud; |
|---|
| 195 | 198 | pmd_t *pmd; |
|---|
| 196 | 199 | pte_t *pte; |
|---|
| 197 | 200 | int retval = 0; |
|---|
| 198 | 201 | |
|---|
| 199 | 202 | pgd = pgd_offset(mm, addr & PAGE_MASK); |
|---|
| 200 | 203 | if (pgd) { |
|---|
| 201 | | - pmd = pmd_offset(pgd, addr & PAGE_MASK); |
|---|
| 204 | + p4d = p4d_offset(pgd, addr & PAGE_MASK); |
|---|
| 205 | + pud = pud_offset(p4d, addr & PAGE_MASK); |
|---|
| 206 | + pmd = pmd_offset(pud, addr & PAGE_MASK); |
|---|
| 202 | 207 | if (pmd_present(*pmd)) { |
|---|
| 203 | 208 | pte = pte_offset_kernel(pmd, addr & PAGE_MASK); |
|---|
| 204 | 209 | if (pte) { |
|---|
| .. | .. |
|---|
| 235 | 240 | return pa; |
|---|
| 236 | 241 | } |
|---|
| 237 | 242 | |
|---|
| 238 | | -__ref pte_t *pte_alloc_one_kernel(struct mm_struct *mm, |
|---|
| 239 | | - unsigned long address) |
|---|
| 243 | +__ref pte_t *pte_alloc_one_kernel(struct mm_struct *mm) |
|---|
| 240 | 244 | { |
|---|
| 241 | 245 | pte_t *pte; |
|---|
| 242 | 246 | if (mem_init_done) { |
|---|