aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/mm/init.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index ab1f6a93b527..8653b3a722be 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -29,14 +29,8 @@ int direct_gbpages
29#endif 29#endif
30; 30;
31 31
32struct map_range { 32static void __init find_early_table_space(unsigned long end, int use_pse,
33 unsigned long start; 33 int use_gbpages)
34 unsigned long end;
35 unsigned page_size_mask;
36};
37
38static void __init find_early_table_space(struct map_range *mr, unsigned long end,
39 int use_pse, int use_gbpages)
40{ 34{
41 unsigned long puds, pmds, ptes, tables, start = 0, good_end = end; 35 unsigned long puds, pmds, ptes, tables, start = 0, good_end = end;
42 phys_addr_t base; 36 phys_addr_t base;
@@ -61,10 +55,6 @@ static void __init find_early_table_space(struct map_range *mr, unsigned long en
61#ifdef CONFIG_X86_32 55#ifdef CONFIG_X86_32
62 extra += PMD_SIZE; 56 extra += PMD_SIZE;
63#endif 57#endif
64 /* The first 2/4M doesn't use large pages. */
65 if (mr->start < PMD_SIZE)
66 extra += mr->end - mr->start;
67
68 ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; 58 ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT;
69 } else 59 } else
70 ptes = (end + PAGE_SIZE - 1) >> PAGE_SHIFT; 60 ptes = (end + PAGE_SIZE - 1) >> PAGE_SHIFT;
@@ -95,6 +85,12 @@ void __init native_pagetable_reserve(u64 start, u64 end)
95 memblock_reserve(start, end - start); 85 memblock_reserve(start, end - start);
96} 86}
97 87
88struct map_range {
89 unsigned long start;
90 unsigned long end;
91 unsigned page_size_mask;
92};
93
98#ifdef CONFIG_X86_32 94#ifdef CONFIG_X86_32
99#define NR_RANGE_MR 3 95#define NR_RANGE_MR 3
100#else /* CONFIG_X86_64 */ 96#else /* CONFIG_X86_64 */
@@ -267,7 +263,7 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
267 * nodes are discovered. 263 * nodes are discovered.
268 */ 264 */
269 if (!after_bootmem) 265 if (!after_bootmem)
270 find_early_table_space(&mr[0], end, use_pse, use_gbpages); 266 find_early_table_space(end, use_pse, use_gbpages);
271 267
272 for (i = 0; i < nr_range; i++) 268 for (i = 0; i < nr_range; i++)
273 ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, 269 ret = kernel_physical_mapping_init(mr[i].start, mr[i].end,