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