Skip to content

Commit

Permalink
[PATCH] x86_64: Fix sparse mem
Browse files Browse the repository at this point in the history
Fix up booting with sparse mem enabled. Otherwise it would just
cause an early PANIC at boot.

Signed-off-by: Bob Picco <bob.picco@hp.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Bob Picco authored and Linus Torvalds committed Nov 15, 2005
1 parent 8893166 commit d3ee871
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
3 changes: 0 additions & 3 deletions arch/x86_64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,6 @@ contig_initmem_init(unsigned long start_pfn, unsigned long end_pfn)
{
unsigned long bootmap_size, bootmap;

memory_present(0, start_pfn, end_pfn);
bootmap_size = bootmem_bootmap_pages(end_pfn)<<PAGE_SHIFT;
bootmap = find_e820_area(0, end_pfn<<PAGE_SHIFT, bootmap_size);
if (bootmap == -1L)
Expand Down Expand Up @@ -659,8 +658,6 @@ void __init setup_arch(char **cmdline_p)
}
#endif

sparse_init();

paging_init();

check_ioapic();
Expand Down
18 changes: 17 additions & 1 deletion arch/x86_64/mm/numa.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ void __init setup_node_bootmem(int nodeid, unsigned long start, unsigned long en
start_pfn = start >> PAGE_SHIFT;
end_pfn = end >> PAGE_SHIFT;

memory_present(nodeid, start_pfn, end_pfn);
nodedata_phys = find_e820_area(start, end, pgdat_size);
if (nodedata_phys == -1L)
panic("Cannot find memory pgdat in node %d\n", nodeid);
Expand Down Expand Up @@ -285,9 +284,26 @@ unsigned long __init numa_free_all_bootmem(void)
return pages;
}

#ifdef CONFIG_SPARSEMEM
static void __init arch_sparse_init(void)
{
int i;

for_each_online_node(i)
memory_present(i, node_start_pfn(i), node_end_pfn(i));

sparse_init();
}
#else
#define arch_sparse_init() do {} while (0)
#endif

void __init paging_init(void)
{
int i;

arch_sparse_init();

for_each_online_node(i) {
setup_node_zones(i);
}
Expand Down

0 comments on commit d3ee871

Please sign in to comment.