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