A typical usage of hugetlbfs it's to reserve amount of memory during the kernel booting stage, and the reserved pages are unlikely to return to the buddy system. When application need hugepages, kernel will allocate them from the reserved pool. when application terminates, huge pages will return to the reserved pool and are kept in the free list for hugetlbfs, these free pages will not return to buddy freelist unless the size of reserved pool is changed. Free page reporting only supports buddy pages, it can't report the free pages reserved for hugetlbfs. On the other hand, hugetlbfs is a good choice for system with a huge amount of RAM, because it can help to reduce the memory management overhead and improve system performance. This patch add the support for reporting hugepages in the free list of hugetlbfs, it can be used by virtio_balloon driver for memory overcommit and pre zero out free pages for speeding up memory population and page fault handling. Most of the code are 'copied' from free page reporting because they are working in the same way. So the code can be refined to remove duplication. It can be done later. Since some guys have some concern about side effect of the 'buddy free page pre zero out' feature brings, I remove it from this serier. Liang Li (6): mm: Add batch size for free page reporting mm: let user decide page reporting option hugetlb: add free page reporting support hugetlb: avoid allocation failed when page reporting is on going virtio-balloon: reporting hugetlb free page to host hugetlb: support free hugepage pre zero out drivers/virtio/virtio_balloon.c | 58 +++++- include/linux/hugetlb.h | 5 + include/linux/page-flags.h | 12 ++ include/linux/page_reporting.h | 7 + mm/Kconfig | 11 ++ mm/huge_memory.c | 3 +- mm/hugetlb.c | 271 +++++++++++++++++++++++++++ mm/memory.c | 4 + mm/page_reporting.c | 315 +++++++++++++++++++++++++++++++- mm/page_reporting.h | 50 ++++- 10 files changed, 725 insertions(+), 11 deletions(-) -- 2.18.2