From: David Gibson Currently the flag indicating whether or not hugepages are allowed below 4GB is not correctly propagated across fork(), which can lead to oopses. The patch below fixes this. --- include/asm-ppc64/mmu_context.h | 3 +++ 1 files changed, 3 insertions(+) diff -puN include/asm-ppc64/mmu_context.h~ppc64-hugepages-fix include/asm-ppc64/mmu_context.h --- 25/include/asm-ppc64/mmu_context.h~ppc64-hugepages-fix 2004-01-19 23:11:18.000000000 -0800 +++ 25-akpm/include/asm-ppc64/mmu_context.h 2004-01-19 23:11:18.000000000 -0800 @@ -81,6 +81,8 @@ init_new_context(struct task_struct *tsk { long head; unsigned long flags; + /* This does the right thing across a fork (I hope) */ + unsigned long low_hpages = mm->context & CONTEXT_LOW_HPAGES; spin_lock_irqsave(&mmu_context_queue.lock, flags); @@ -91,6 +93,7 @@ init_new_context(struct task_struct *tsk head = mmu_context_queue.head; mm->context = mmu_context_queue.elements[head]; + mm->context |= low_hpages; head = (head < LAST_USER_CONTEXT-1) ? head+1 : 0; mmu_context_queue.head = head; _