Messages in this thread | | | From | "Adam J. Richter" <> | Date | Sun, 9 Mar 2003 15:05:12 -0800 | Subject | 2.5.64bk5: X86_PC + HIGHMEM boot failure |
| |
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/
| |