diff options
| -rw-r--r-- | arch/x86/mm/init.c | 7 | ||||
| -rw-r--r-- | arch/x86/mm/init_32.c | 8 |
2 files changed, 5 insertions, 10 deletions
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index d406c5239019..e71c5cbc8f35 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c | |||
| @@ -266,16 +266,9 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, | |||
| 266 | if (!after_bootmem) | 266 | if (!after_bootmem) |
| 267 | find_early_table_space(end, use_pse, use_gbpages); | 267 | find_early_table_space(end, use_pse, use_gbpages); |
| 268 | 268 | ||
| 269 | #ifdef CONFIG_X86_32 | ||
| 270 | for (i = 0; i < nr_range; i++) | ||
| 271 | kernel_physical_mapping_init(mr[i].start, mr[i].end, | ||
| 272 | mr[i].page_size_mask); | ||
| 273 | ret = end; | ||
| 274 | #else /* CONFIG_X86_64 */ | ||
| 275 | for (i = 0; i < nr_range; i++) | 269 | for (i = 0; i < nr_range; i++) |
| 276 | ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, | 270 | ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, |
| 277 | mr[i].page_size_mask); | 271 | mr[i].page_size_mask); |
| 278 | #endif | ||
| 279 | 272 | ||
| 280 | #ifdef CONFIG_X86_32 | 273 | #ifdef CONFIG_X86_32 |
| 281 | early_ioremap_page_table_range_init(); | 274 | early_ioremap_page_table_range_init(); |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 9a0c258a86be..2226f2c70ea3 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
| @@ -241,6 +241,7 @@ kernel_physical_mapping_init(unsigned long start, | |||
| 241 | unsigned long page_size_mask) | 241 | unsigned long page_size_mask) |
| 242 | { | 242 | { |
| 243 | int use_pse = page_size_mask == (1<<PG_LEVEL_2M); | 243 | int use_pse = page_size_mask == (1<<PG_LEVEL_2M); |
| 244 | unsigned long last_map_addr = end; | ||
| 244 | unsigned long start_pfn, end_pfn; | 245 | unsigned long start_pfn, end_pfn; |
| 245 | pgd_t *pgd_base = swapper_pg_dir; | 246 | pgd_t *pgd_base = swapper_pg_dir; |
| 246 | int pgd_idx, pmd_idx, pte_ofs; | 247 | int pgd_idx, pmd_idx, pte_ofs; |
| @@ -341,9 +342,10 @@ repeat: | |||
| 341 | prot = PAGE_KERNEL_EXEC; | 342 | prot = PAGE_KERNEL_EXEC; |
| 342 | 343 | ||
| 343 | pages_4k++; | 344 | pages_4k++; |
| 344 | if (mapping_iter == 1) | 345 | if (mapping_iter == 1) { |
| 345 | set_pte(pte, pfn_pte(pfn, init_prot)); | 346 | set_pte(pte, pfn_pte(pfn, init_prot)); |
| 346 | else | 347 | last_map_addr = (pfn << PAGE_SHIFT) + PAGE_SIZE; |
| 348 | } else | ||
| 347 | set_pte(pte, pfn_pte(pfn, prot)); | 349 | set_pte(pte, pfn_pte(pfn, prot)); |
| 348 | } | 350 | } |
| 349 | } | 351 | } |
| @@ -368,7 +370,7 @@ repeat: | |||
| 368 | mapping_iter = 2; | 370 | mapping_iter = 2; |
| 369 | goto repeat; | 371 | goto repeat; |
| 370 | } | 372 | } |
| 371 | return 0; | 373 | return last_map_addr; |
| 372 | } | 374 | } |
| 373 | 375 | ||
| 374 | pte_t *kmap_pte; | 376 | pte_t *kmap_pte; |
