Merge by hand from Linus' tree.

Signed-off-by: Paul Mackerras <paulus@samba.org>
diff --git a/arch/ppc64/mm/tlb.c b/arch/ppc64/mm/tlb.c
index 31afd95..09ab81a 100644
--- a/arch/ppc64/mm/tlb.c
+++ b/arch/ppc64/mm/tlb.c
@@ -141,12 +141,14 @@
 	 * up scanning and resetting referenced bits then our batch context
 	 * will change mid stream.
 	 */
-	if (unlikely(i != 0 && mm != batch->mm)) {
+	if (i != 0 && (mm != batch->mm || batch->large != pte_huge(pte))) {
 		flush_tlb_pending();
 		i = 0;
 	}
-	if (i == 0)
+	if (i == 0) {
 		batch->mm = mm;
+		batch->large = pte_huge(pte);
+	}
 	if (addr < KERNELBASE) {
 		vsid = get_vsid(mm->context.id, addr);
 		WARN_ON(vsid == 0);