aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/mm/tlb.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-09-28 23:13:36 -0400
committerPaul Mackerras <paulus@samba.org>2005-09-28 23:13:36 -0400
commitab11d1ea281e85895369ef57c5259ad8a432fabb (patch)
tree684147479c6a8bb2fbed21bdcf12de1dd519c730 /arch/ppc64/mm/tlb.c
parent952ecef7a0479049c8abb7c34a688ec2981ceadd (diff)
parent664cceb0093b755739e56572b836a99104ee8a75 (diff)
Merge by hand from Linus' tree.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc64/mm/tlb.c')
-rw-r--r--arch/ppc64/mm/tlb.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/ppc64/mm/tlb.c b/arch/ppc64/mm/tlb.c
index 31afd95bf870..09ab81a10f4f 100644
--- a/arch/ppc64/mm/tlb.c
+++ b/arch/ppc64/mm/tlb.c
@@ -141,12 +141,14 @@ void hpte_update(struct mm_struct *mm, unsigned long addr,
141 * up scanning and resetting referenced bits then our batch context 141 * up scanning and resetting referenced bits then our batch context
142 * will change mid stream. 142 * will change mid stream.
143 */ 143 */
144 if (unlikely(i != 0 && mm != batch->mm)) { 144 if (i != 0 && (mm != batch->mm || batch->large != pte_huge(pte))) {
145 flush_tlb_pending(); 145 flush_tlb_pending();
146 i = 0; 146 i = 0;
147 } 147 }
148 if (i == 0) 148 if (i == 0) {
149 batch->mm = mm; 149 batch->mm = mm;
150 batch->large = pte_huge(pte);
151 }
150 if (addr < KERNELBASE) { 152 if (addr < KERNELBASE) {
151 vsid = get_vsid(mm->context.id, addr); 153 vsid = get_vsid(mm->context.id, addr);
152 WARN_ON(vsid == 0); 154 WARN_ON(vsid == 0);