.. | .. |
---|
19 | 19 | #include <linux/mm.h> |
---|
20 | 20 | #include <linux/swap.h> |
---|
21 | 21 | #include <linux/init.h> |
---|
22 | | -#include <linux/bootmem.h> /* max_low_pfn */ |
---|
| 22 | +#include <linux/memblock.h> /* max_low_pfn */ |
---|
23 | 23 | #include <linux/vmalloc.h> |
---|
24 | 24 | #include <linux/gfp.h> |
---|
25 | 25 | |
---|
26 | 26 | #include <linux/uaccess.h> |
---|
27 | | -#include <asm/pgtable.h> |
---|
28 | 27 | #include <asm/pgalloc.h> |
---|
29 | 28 | #include <asm/hwrpb.h> |
---|
30 | 29 | #include <asm/dma.h> |
---|
.. | .. |
---|
146 | 145 | { |
---|
147 | 146 | struct crb_struct * crb; |
---|
148 | 147 | pgd_t *pgd; |
---|
| 148 | + p4d_t *p4d; |
---|
| 149 | + pud_t *pud; |
---|
149 | 150 | pmd_t *pmd; |
---|
150 | 151 | void *two_pages; |
---|
151 | 152 | |
---|
.. | .. |
---|
184 | 185 | memset(two_pages, 0, 2*PAGE_SIZE); |
---|
185 | 186 | |
---|
186 | 187 | pgd = pgd_offset_k(VMALLOC_START); |
---|
187 | | - pgd_set(pgd, (pmd_t *)two_pages); |
---|
188 | | - pmd = pmd_offset(pgd, VMALLOC_START); |
---|
| 188 | + p4d = p4d_offset(pgd, VMALLOC_START); |
---|
| 189 | + pud = pud_offset(p4d, VMALLOC_START); |
---|
| 190 | + pud_set(pud, (pmd_t *)two_pages); |
---|
| 191 | + pmd = pmd_offset(pud, VMALLOC_START); |
---|
189 | 192 | pmd_set(pmd, (pte_t *)(two_pages + PAGE_SIZE)); |
---|
190 | 193 | |
---|
191 | 194 | if (alpha_using_srm) { |
---|
.. | .. |
---|
214 | 217 | /* Newer consoles (especially on larger |
---|
215 | 218 | systems) may require more pages of |
---|
216 | 219 | PTEs. Grab additional pages as needed. */ |
---|
217 | | - if (pmd != pmd_offset(pgd, vaddr)) { |
---|
| 220 | + if (pmd != pmd_offset(pud, vaddr)) { |
---|
218 | 221 | memset(kernel_end, 0, PAGE_SIZE); |
---|
219 | | - pmd = pmd_offset(pgd, vaddr); |
---|
| 222 | + pmd = pmd_offset(pud, vaddr); |
---|
220 | 223 | pmd_set(pmd, (pte_t *)kernel_end); |
---|
221 | 224 | kernel_end += PAGE_SIZE; |
---|
222 | 225 | } |
---|
.. | .. |
---|
239 | 242 | */ |
---|
240 | 243 | void __init paging_init(void) |
---|
241 | 244 | { |
---|
242 | | - unsigned long zones_size[MAX_NR_ZONES] = {0, }; |
---|
243 | | - unsigned long dma_pfn, high_pfn; |
---|
| 245 | + unsigned long max_zone_pfn[MAX_NR_ZONES] = {0, }; |
---|
| 246 | + unsigned long dma_pfn; |
---|
244 | 247 | |
---|
245 | 248 | dma_pfn = virt_to_phys((char *)MAX_DMA_ADDRESS) >> PAGE_SHIFT; |
---|
246 | | - high_pfn = max_pfn = max_low_pfn; |
---|
| 249 | + max_pfn = max_low_pfn; |
---|
247 | 250 | |
---|
248 | | - if (dma_pfn >= high_pfn) |
---|
249 | | - zones_size[ZONE_DMA] = high_pfn; |
---|
250 | | - else { |
---|
251 | | - zones_size[ZONE_DMA] = dma_pfn; |
---|
252 | | - zones_size[ZONE_NORMAL] = high_pfn - dma_pfn; |
---|
253 | | - } |
---|
| 251 | + max_zone_pfn[ZONE_DMA] = dma_pfn; |
---|
| 252 | + max_zone_pfn[ZONE_NORMAL] = max_pfn; |
---|
254 | 253 | |
---|
255 | 254 | /* Initialize mem_map[]. */ |
---|
256 | | - free_area_init(zones_size); |
---|
| 255 | + free_area_init(max_zone_pfn); |
---|
257 | 256 | |
---|
258 | 257 | /* Initialize the kernel's ZERO_PGE. */ |
---|
259 | 258 | memset((void *)ZERO_PGE, 0, PAGE_SIZE); |
---|
.. | .. |
---|
282 | 281 | { |
---|
283 | 282 | set_max_mapnr(max_low_pfn); |
---|
284 | 283 | high_memory = (void *) __va(max_low_pfn * PAGE_SIZE); |
---|
285 | | - free_all_bootmem(); |
---|
| 284 | + memblock_free_all(); |
---|
286 | 285 | mem_init_print_info(NULL); |
---|
287 | 286 | } |
---|
288 | | - |
---|
289 | | -void |
---|
290 | | -free_initmem(void) |
---|
291 | | -{ |
---|
292 | | - free_initmem_default(-1); |
---|
293 | | -} |
---|
294 | | - |
---|
295 | | -#ifdef CONFIG_BLK_DEV_INITRD |
---|
296 | | -void |
---|
297 | | -free_initrd_mem(unsigned long start, unsigned long end) |
---|
298 | | -{ |
---|
299 | | - free_reserved_area((void *)start, (void *)end, -1, "initrd"); |
---|
300 | | -} |
---|
301 | | -#endif |
---|