RE: 2.6.16 hugetlbfs problem - DEBUG_PAGEALLOC

From: Chen, Kenneth W
Date: Fri Mar 24 2006 - 20:21:42 EST


Mark Rustad wrote on Friday, March 24, 2006 9:52 AM
> I have narrowed this down to DEBUG_PAGEALLOC. If that option is
> enabled, attempts to reference areas mmap-ed from hugetlbfs files
> fault forever. You can see that I had that set in the failing config
> I reported below.

Yeah, it turns out that the debug option is not compatible with hugetlb
page support. That debug option turns off PSE. Once it is turned off in
CR4, cpu will ignore pse bit in the pmd and causing infinite page-not-
present fault :-(

void __init early_cpu_init(void)
{ ...

#ifdef CONFIG_DEBUG_PAGEALLOC
/* pse is not compatible with on-the-fly unmapping,
* disable it even if the cpus claim to support it.
*/
clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability);
disable_pse = 1;
#endif


[patch] mark DEBUG_PAGEALLOC to be mutually exclusive option with
HUGETLBFS. Bug found by Mark Rustad.

Signed-off-by: Ken Chen <kenneth.w.chen@xxxxxxxxx>


--- ./arch/i386/Kconfig.debug.orig 2006-03-24 17:50:39.000000000 -0800
+++ ./arch/i386/Kconfig.debug 2006-03-24 17:50:58.000000000 -0800
@@ -36,7 +36,7 @@

config DEBUG_PAGEALLOC
bool "Page alloc debugging"
- depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND
+ depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND && !HUGETLBFS
help
Unmap pages from the kernel linear mapping after free_pages().
This results in a large slowdown, but helps to find certain types


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/