2.5.64bk5: X86_PC + HIGHMEM boot failure

Adam J. Richter (adam@yggdrasil.com)
Sun, 9 Mar 2003 15:05:12 -0800


Under linux-2.5.64bk5, CONFIG_X86_PC sets CONFIG_NUMA,
which sets CONFIG_DISCONTIGMEM. This causes the version of
set_max_mapnr_init in arch/i386/mm/discontig.c to be compiled
in (instead of the one from arch/i386/mm/init.c):

void __init set_max_mapnr_init(void)
{
#ifdef CONFIG_HIGHMEM
highmem_start_page = NODE_DATA(0)->node_zones[ZONE_HIGHMEM].zone_mem_ma\p;
printk ("AJR discontig.c: highmem_start_page set to %p.\n", highmem_sta\rt_page);
num_physpages = highend_pfn;
#else
num_physpages = max_low_pfn;
#endif
}

The discontig.c version sets highmem_start_page to NULL
on my 768MB computer that is compiled with CONFIG_HIGHMEM4G, which
a kernel BUG() as soon as something that needs a lowmem page does
a sanity check. (In my case, it happens to occur at
arch/i386/mm/pageattr.c line 99 during some kind ACPI initialization,
although I don't think that is particularly imporantant.)

I am not sure what is the "right" fix for this problem,
because I don't understand if
NODE_DATA(0)->node_zones[ZONE_HIGHMEM].zone_mem_map should ever
be NULL (for example, in my case, when running a highmem kernel
on a computer with no highmem pages).

Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/