Commit c1fd1b43831fa20c91cdd461342af8edf2e87c2f
Committed by
H. Peter Anvin
1 parent
1431559200
Exists in
master
and in
39 other branches
x86, mm: Unify kernel_physical_mapping_init() API
This patch changes the 32-bit version of kernel_physical_mapping_init() to return the last mapped address like the 64-bit one so that we can unify the call-site in init_memory_mapping(). Cc: Yinghai Lu <yinghai@kernel.org> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> LKML-Reference: <alpine.DEB.2.00.1002241703570.1180@melkki.cs.helsinki.fi> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Showing 2 changed files with 5 additions and 10 deletions Side-by-side Diff
arch/x86/mm/init.c
... | ... | @@ -266,16 +266,9 @@ |
266 | 266 | if (!after_bootmem) |
267 | 267 | find_early_table_space(end, use_pse, use_gbpages); |
268 | 268 | |
269 | -#ifdef CONFIG_X86_32 | |
270 | 269 | 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++) | |
276 | 270 | ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, |
277 | 271 | mr[i].page_size_mask); |
278 | -#endif | |
279 | 272 | |
280 | 273 | #ifdef CONFIG_X86_32 |
281 | 274 | early_ioremap_page_table_range_init(); |
arch/x86/mm/init_32.c
... | ... | @@ -241,6 +241,7 @@ |
241 | 241 | unsigned long page_size_mask) |
242 | 242 | { |
243 | 243 | int use_pse = page_size_mask == (1<<PG_LEVEL_2M); |
244 | + unsigned long last_map_addr = end; | |
244 | 245 | unsigned long start_pfn, end_pfn; |
245 | 246 | pgd_t *pgd_base = swapper_pg_dir; |
246 | 247 | int pgd_idx, pmd_idx, pte_ofs; |
247 | 248 | |
... | ... | @@ -341,9 +342,10 @@ |
341 | 342 | prot = PAGE_KERNEL_EXEC; |
342 | 343 | |
343 | 344 | pages_4k++; |
344 | - if (mapping_iter == 1) | |
345 | + if (mapping_iter == 1) { | |
345 | 346 | set_pte(pte, pfn_pte(pfn, init_prot)); |
346 | - else | |
347 | + last_map_addr = (pfn << PAGE_SHIFT) + PAGE_SIZE; | |
348 | + } else | |
347 | 349 | set_pte(pte, pfn_pte(pfn, prot)); |
348 | 350 | } |
349 | 351 | } |
... | ... | @@ -368,7 +370,7 @@ |
368 | 370 | mapping_iter = 2; |
369 | 371 | goto repeat; |
370 | 372 | } |
371 | - return 0; | |
373 | + return last_map_addr; | |
372 | 374 | } |
373 | 375 | |
374 | 376 | pte_t *kmap_pte; |