int hugetlb_prefault(struct address_space *, struct vm_area_struct *);
 void hugetlb_report_meminfo(struct seq_file *);
 int hugetlb_report_node_meminfo(int, char *);
+void hugetlb_show_meminfo(void);
 unsigned long hugetlb_total_pages(void);
 int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
                        unsigned long address, unsigned int flags);
 {
 }
 #define hugetlb_report_node_meminfo(n, buf)    0
+static inline void hugetlb_show_meminfo(void)
+{
+}
 #define follow_huge_pmd(mm, addr, pmd, write)  NULL
 #define follow_huge_pud(mm, addr, pud, write)  NULL
 #define prepare_hugepage_range(file, addr, len)        (-EINVAL)
 
                nid, h->surplus_huge_pages_node[nid]);
 }
 
+void hugetlb_show_meminfo(void)
+{
+       struct hstate *h;
+       int nid;
+
+       for_each_node_state(nid, N_MEMORY)
+               for_each_hstate(h)
+                       pr_info("Node %d hugepages_total=%u hugepages_free=%u hugepages_surp=%u hugepages_size=%lukB\n",
+                               nid,
+                               h->nr_huge_pages_node[nid],
+                               h->free_huge_pages_node[nid],
+                               h->surplus_huge_pages_node[nid],
+                               1UL << (huge_page_order(h) + PAGE_SHIFT - 10));
+}
+
 /* Return the number pages of memory we physically have, in PAGE_SIZE units. */
 unsigned long hugetlb_total_pages(void)
 {
 
 #include <linux/prefetch.h>
 #include <linux/migrate.h>
 #include <linux/page-debug-flags.h>
+#include <linux/hugetlb.h>
 #include <linux/sched/rt.h>
 
 #include <asm/tlbflush.h>
                printk("= %lukB\n", K(total));
        }
 
+       hugetlb_show_meminfo();
+
        printk("%ld total pagecache pages\n", global_page_state(NR_FILE_PAGES));
 
        show_swap_cache_info();