sparc64: Trim page tables for 8M hugepages
[deliverable/linux.git] / arch / sparc / mm / init_64.c
index aef153f9fdac21575e3cbfb8b089f779b7e73117..65457c9f1365f07b0b9d9337c897983234d85652 100644 (file)
@@ -347,10 +347,12 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *
 
 #if defined(CONFIG_HUGETLB_PAGE) || defined(CONFIG_TRANSPARENT_HUGEPAGE)
        if ((mm->context.hugetlb_pte_count || mm->context.thp_pte_count) &&
-           is_hugetlb_pte(pte))
+           is_hugetlb_pte(pte)) {
+               /* We are fabricating 8MB pages using 4MB real hw pages.  */
+               pte_val(pte) |= (address & (1UL << REAL_HPAGE_SHIFT));
                __update_mmu_tsb_insert(mm, MM_TSB_HUGE, REAL_HPAGE_SHIFT,
                                        address, pte_val(pte));
-       else
+       else
 #endif
                __update_mmu_tsb_insert(mm, MM_TSB_BASE, PAGE_SHIFT,
                                        address, pte_val(pte));
This page took 0.024373 seconds and 5 git commands to generate.