* [PATCH] Fix i386 bootup with HIGHMEM+SLAB_DEBUG+NUMA and no real highmem
@ 2004-07-16 12:11 Andi Kleen
0 siblings, 0 replies; only message in thread
From: Andi Kleen @ 2004-07-16 12:11 UTC (permalink / raw)
To: torvalds; +Cc: linux-kernel, gone
For some reason I booted a NUMA and SLAB_DEBUG i386 kernel on a non
NUMA 512MB machine. This caused an oops at bootup in change_page_attr.
The reason was that highmem_start_start page ended up zero and
that triggered the highmem check in change_page_attr when the
slab debug code would unmap a kernel mapping.
Fix is straightforward: if there is no highmem set highmem_start_page
to max_low_pfn+1
-Andi
diff -u linux-2.6.8rc1-work/arch/i386/mm/discontig.c-o linux-2.6.8rc1-work/arch/i386/mm/discontig.c
--- linux-2.6.8rc1-work/arch/i386/mm/discontig.c-o 2004-07-15 08:41:17.000000000 +0200
+++ linux-2.6.8rc1-work/arch/i386/mm/discontig.c 2004-07-16 12:21:37.000000000 +0200
@@ -448,7 +448,11 @@
void __init set_max_mapnr_init(void)
{
#ifdef CONFIG_HIGHMEM
- highmem_start_page = NODE_DATA(0)->node_zones[ZONE_HIGHMEM].zone_mem_map;
+ struct zone *high0 = &NODE_DATA(0)->node_zones[ZONE_HIGHMEM];
+ if (high0->spanned_pages > 0)
+ highmem_start_page = high0->zone_mem_map;
+ else
+ highmem_start_page = pfn_to_page(max_low_pfn+1);
num_physpages = highend_pfn;
#else
num_physpages = max_low_pfn;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-07-16 12:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-16 12:11 [PATCH] Fix i386 bootup with HIGHMEM+SLAB_DEBUG+NUMA and no real highmem Andi Kleen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.