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