mbox series

[v5,0/4] add hugetlb_free_vmemmap sysctl

Message ID 20220323125523.79254-1-songmuchun@bytedance.com (mailing list archive)
Headers show
Series add hugetlb_free_vmemmap sysctl | expand

Message

Muchun Song March 23, 2022, 12:55 p.m. UTC
This series is based on next-20220310.

This series amis to add hugetlb_free_vmemmap sysctl to enable the feature
of freeing vmemmap pages of HugeTLB pages.

v5:
  - Fix not working properly if one is workig off of a very clean build
    reported by Luis Chamberlain.
  - Add Suggested-by for Luis Chamberlain.

Thanks.

v4:
  - Introduce STRUCT_PAGE_SIZE_IS_POWER_OF_2 inspired by Luis.

v3:
  - Add pr_warn_once() (Mike).
  - Handle the transition from enabling to disabling (Luis)

v2:
  - Fix compilation when !CONFIG_MHP_MEMMAP_ON_MEMORY reported by kernel
    test robot <lkp@intel.com>.
  - Move sysctl code from kernel/sysctl.c to mm/hugetlb_vmemmap.c.

Muchun Song (4):
  mm: hugetlb_vmemmap: introduce STRUCT_PAGE_SIZE_IS_POWER_OF_2
  mm: memory_hotplug: override memmap_on_memory when
    hugetlb_free_vmemmap=on
  sysctl: allow to set extra1 to SYSCTL_ONE
  mm: hugetlb_vmemmap: add hugetlb_free_vmemmap sysctl

 Documentation/admin-guide/sysctl/vm.rst |  14 +++++
 Kbuild                                  |  14 +++++
 fs/Kconfig                              |   1 +
 include/linux/memory_hotplug.h          |   9 +++
 include/linux/mm_types.h                |   2 +
 kernel/sysctl.c                         |   2 +-
 mm/Kconfig                              |   3 +
 mm/hugetlb_vmemmap.c                    | 107 ++++++++++++++++++++++++--------
 mm/hugetlb_vmemmap.h                    |   4 +-
 mm/memory_hotplug.c                     |  27 ++++++--
 mm/struct_page_size.c                   |  19 ++++++
 scripts/check_struct_page_po2.sh        |   9 +++
 12 files changed, 177 insertions(+), 34 deletions(-)
 create mode 100644 mm/struct_page_size.c
 create mode 100755 scripts/check_struct_page_po2.sh

Comments

Luis Chamberlain March 23, 2022, 9:57 p.m. UTC | #1
Masahiro,

can I trouble you to help review the first patch here? I thought
something like this might be possible, and Muchun has done some good
work to try it. If anyone can find hole on that kconfig hack it would
be you. I'll bounce you a copy of the patches.

  Luis

On Wed, Mar 23, 2022 at 08:55:19PM +0800, Muchun Song wrote:
> This series is based on next-20220310.
> 
> This series amis to add hugetlb_free_vmemmap sysctl to enable the feature
> of freeing vmemmap pages of HugeTLB pages.
> 
> v5:
>   - Fix not working properly if one is workig off of a very clean build
>     reported by Luis Chamberlain.
>   - Add Suggested-by for Luis Chamberlain.
> 
> Thanks.
> 
> v4:
>   - Introduce STRUCT_PAGE_SIZE_IS_POWER_OF_2 inspired by Luis.
> 
> v3:
>   - Add pr_warn_once() (Mike).
>   - Handle the transition from enabling to disabling (Luis)
> 
> v2:
>   - Fix compilation when !CONFIG_MHP_MEMMAP_ON_MEMORY reported by kernel
>     test robot <lkp@intel.com>.
>   - Move sysctl code from kernel/sysctl.c to mm/hugetlb_vmemmap.c.
> 
> Muchun Song (4):
>   mm: hugetlb_vmemmap: introduce STRUCT_PAGE_SIZE_IS_POWER_OF_2
>   mm: memory_hotplug: override memmap_on_memory when
>     hugetlb_free_vmemmap=on
>   sysctl: allow to set extra1 to SYSCTL_ONE
>   mm: hugetlb_vmemmap: add hugetlb_free_vmemmap sysctl
> 
>  Documentation/admin-guide/sysctl/vm.rst |  14 +++++
>  Kbuild                                  |  14 +++++
>  fs/Kconfig                              |   1 +
>  include/linux/memory_hotplug.h          |   9 +++
>  include/linux/mm_types.h                |   2 +
>  kernel/sysctl.c                         |   2 +-
>  mm/Kconfig                              |   3 +
>  mm/hugetlb_vmemmap.c                    | 107 ++++++++++++++++++++++++--------
>  mm/hugetlb_vmemmap.h                    |   4 +-
>  mm/memory_hotplug.c                     |  27 ++++++--
>  mm/struct_page_size.c                   |  19 ++++++
>  scripts/check_struct_page_po2.sh        |   9 +++
>  12 files changed, 177 insertions(+), 34 deletions(-)
>  create mode 100644 mm/struct_page_size.c
>  create mode 100755 scripts/check_struct_page_po2.sh
> 
> -- 
> 2.11.0
>