From 00fbc4fc0ab649eefeafa85a61923a74b7f76c9d Mon Sep 17 00:00:00 2001 From: Andrew Morton <akpm@osdl.org> Date: Tue, 20 Jan 2004 03:10:38 -0800 Subject: [PATCH] [PATCH] ppc64: Bug fix for hugepages on ppc64 From: David Gibson <david@gibson.dropbear.id.au> 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 file changed, 3 insertions(+) diff --git a/include/asm-ppc64/mmu_context.h b/include/asm-ppc64/mmu_context.h index e43cdf5f7200..11a399c33086 100644 --- a/include/asm-ppc64/mmu_context.h +++ b/include/asm-ppc64/mmu_context.h @@ -81,6 +81,8 @@ init_new_context(struct task_struct *tsk, struct mm_struct *mm) { 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, struct mm_struct *mm) 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; -- 2.30.9