Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1fd1b43 authored by Pekka Enberg's avatar Pekka Enberg Committed by H. Peter Anvin
Browse files

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: default avatarPekka Enberg <penberg@cs.helsinki.fi>
LKML-Reference: <alpine.DEB.2.00.1002241703570.1180@melkki.cs.helsinki.fi>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
parent 14315592
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -266,16 +266,9 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
	if (!after_bootmem)
		find_early_table_space(end, use_pse, use_gbpages);

#ifdef CONFIG_X86_32
	for (i = 0; i < nr_range; i++)
		kernel_physical_mapping_init(mr[i].start, mr[i].end,
					     mr[i].page_size_mask);
	ret = end;
#else /* CONFIG_X86_64 */
	for (i = 0; i < nr_range; i++)
		ret = kernel_physical_mapping_init(mr[i].start, mr[i].end,
						   mr[i].page_size_mask);
#endif

#ifdef CONFIG_X86_32
	early_ioremap_page_table_range_init();
+5 −3
Original line number Diff line number Diff line
@@ -241,6 +241,7 @@ kernel_physical_mapping_init(unsigned long start,
			     unsigned long page_size_mask)
{
	int use_pse = page_size_mask == (1<<PG_LEVEL_2M);
	unsigned long last_map_addr = end;
	unsigned long start_pfn, end_pfn;
	pgd_t *pgd_base = swapper_pg_dir;
	int pgd_idx, pmd_idx, pte_ofs;
@@ -341,9 +342,10 @@ repeat:
					prot = PAGE_KERNEL_EXEC;

				pages_4k++;
				if (mapping_iter == 1)
				if (mapping_iter == 1) {
					set_pte(pte, pfn_pte(pfn, init_prot));
				else
					last_map_addr = (pfn << PAGE_SHIFT) + PAGE_SIZE;
				} else
					set_pte(pte, pfn_pte(pfn, prot));
			}
		}
@@ -368,7 +370,7 @@ repeat:
		mapping_iter = 2;
		goto repeat;
	}
	return 0;
	return last_map_addr;
}

pte_t *kmap_pte;