aboutsummaryrefslogtreecommitdiffstats
path: root/mm/hugetlb.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/hugetlb.c')
-rw-r--r--mm/hugetlb.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 9cc773483624..abfbe8ca3323 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -2790,6 +2790,12 @@ void hugetlb_show_meminfo(void)
2790 1UL << (huge_page_order(h) + PAGE_SHIFT - 10)); 2790 1UL << (huge_page_order(h) + PAGE_SHIFT - 10));
2791} 2791}
2792 2792
2793void hugetlb_report_usage(struct seq_file *m, struct mm_struct *mm)
2794{
2795 seq_printf(m, "HugetlbPages:\t%8lu kB\n",
2796 atomic_long_read(&mm->hugetlb_usage) << (PAGE_SHIFT - 10));
2797}
2798
2793/* Return the number pages of memory we physically have, in PAGE_SIZE units. */ 2799/* Return the number pages of memory we physically have, in PAGE_SIZE units. */
2794unsigned long hugetlb_total_pages(void) 2800unsigned long hugetlb_total_pages(void)
2795{ 2801{
@@ -3025,6 +3031,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
3025 get_page(ptepage); 3031 get_page(ptepage);
3026 page_dup_rmap(ptepage); 3032 page_dup_rmap(ptepage);
3027 set_huge_pte_at(dst, addr, dst_pte, entry); 3033 set_huge_pte_at(dst, addr, dst_pte, entry);
3034 hugetlb_count_add(pages_per_huge_page(h), dst);
3028 } 3035 }
3029 spin_unlock(src_ptl); 3036 spin_unlock(src_ptl);
3030 spin_unlock(dst_ptl); 3037 spin_unlock(dst_ptl);
@@ -3105,6 +3112,7 @@ again:
3105 if (huge_pte_dirty(pte)) 3112 if (huge_pte_dirty(pte))
3106 set_page_dirty(page); 3113 set_page_dirty(page);
3107 3114
3115 hugetlb_count_sub(pages_per_huge_page(h), mm);
3108 page_remove_rmap(page); 3116 page_remove_rmap(page);
3109 force_flush = !__tlb_remove_page(tlb, page); 3117 force_flush = !__tlb_remove_page(tlb, page);
3110 if (force_flush) { 3118 if (force_flush) {
@@ -3509,6 +3517,7 @@ retry:
3509 && (vma->vm_flags & VM_SHARED))); 3517 && (vma->vm_flags & VM_SHARED)));
3510 set_huge_pte_at(mm, address, ptep, new_pte); 3518 set_huge_pte_at(mm, address, ptep, new_pte);
3511 3519
3520 hugetlb_count_add(pages_per_huge_page(h), mm);
3512 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) { 3521 if ((flags & FAULT_FLAG_WRITE) && !(vma->vm_flags & VM_SHARED)) {
3513 /* Optimization, do the COW without a second fault */ 3522 /* Optimization, do the COW without a second fault */
3514 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl); 3523 ret = hugetlb_cow(mm, vma, address, ptep, new_pte, page, ptl);