Merge master.kernel.org:/home/rmk/linux-2.6-serial
[pandora-kernel.git] / arch / sparc64 / mm / fault.c
index 63b6cc0..0db2f7d 100644 (file)
@@ -410,9 +410,18 @@ good_area:
        up_read(&mm->mmap_sem);
 
        mm_rss = get_mm_rss(mm);
-       if (unlikely(mm_rss >= mm->context.tsb_rss_limit))
-               tsb_grow(mm, mm_rss);
-
+#ifdef CONFIG_HUGETLB_PAGE
+       mm_rss -= (mm->context.huge_pte_count * (HPAGE_SIZE / PAGE_SIZE));
+#endif
+       if (unlikely(mm_rss >
+                    mm->context.tsb_block[MM_TSB_BASE].tsb_rss_limit))
+               tsb_grow(mm, MM_TSB_BASE, mm_rss);
+#ifdef CONFIG_HUGETLB_PAGE
+       mm_rss = mm->context.huge_pte_count;
+       if (unlikely(mm_rss >
+                    mm->context.tsb_block[MM_TSB_HUGE].tsb_rss_limit))
+               tsb_grow(mm, MM_TSB_HUGE, mm_rss);
+#endif
        return;
 
        /*