diff mbox series

[3/3] arm64: mm: hugetlb: add support for free vmemmap pages of HugeTLB

Message ID 20210310071535.35245-4-songmuchun@bytedance.com (mailing list archive)
State New, archived
Headers show
Series Add support for free vmemmap pages of HugeTLB for arm64 | expand

Commit Message

Muchun Song March 10, 2021, 7:15 a.m. UTC
The preparation of supporting freeing vmemmap associated with each
infrastructure is ready, so now we can support it for arm64.

Signed-off-by: Muchun Song <songmuchun@bytedance.com>
---
 arch/arm64/mm/mmu.c | 5 +++++
 fs/Kconfig          | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

Comments

kernel test robot March 11, 2021, 12:47 a.m. UTC | #1
Hi Muchun,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20210310]
[cannot apply to hnaz-linux-mm/master arm64/for-next/core tip/x86/mm linus/master v5.12-rc2 v5.12-rc1 v5.11 v5.12-rc2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Muchun-Song/mm-bootmem_info-mark-register_page_bootmem_info_section-__init/20210310-161619
base:    b01d57bfdc41c8f635b08b8a5af8a31217d46936
config: x86_64-randconfig-r002-20210309 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project cd9a69289c7825d54450cb6829fef2c8e0f1963a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://github.com/0day-ci/linux/commit/d0b8d83bb423fd25a85be4a62a8bed9f8d8a0d96
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Muchun-Song/mm-bootmem_info-mark-register_page_bootmem_info_section-__init/20210310-161619
        git checkout d0b8d83bb423fd25a85be4a62a8bed9f8d8a0d96
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   arch/x86/mm/init_64.c:1585:6: error: implicit declaration of function 'vmemmap_use_new_sub_pmd' [-Werror,-Wimplicit-function-declaration]
                                           vmemmap_use_new_sub_pmd(addr, next);
                                           ^
   arch/x86/mm/init_64.c:1591:4: error: implicit declaration of function 'vmemmap_use_sub_pmd' [-Werror,-Wimplicit-function-declaration]
                           vmemmap_use_sub_pmd(addr, next);
                           ^
>> arch/x86/mm/init_64.c:1625:6: warning: no previous prototype for function 'arch_free_vmemmap_page' [-Wmissing-prototypes]
   void arch_free_vmemmap_page(struct page *page)
        ^
   arch/x86/mm/init_64.c:1625:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void arch_free_vmemmap_page(struct page *page)
   ^
   static 
   1 warning and 2 errors generated.
--
   mm/bootmem_info.c:87:11: error: implicit declaration of function 'sparse_decode_mem_map' [-Werror,-Wimplicit-function-declaration]
           memmap = sparse_decode_mem_map(ms->section_mem_map, section_nr);
                    ^
>> mm/bootmem_info.c:87:9: warning: incompatible integer to pointer conversion assigning to 'struct page *' from 'int' [-Wint-conversion]
           memmap = sparse_decode_mem_map(ms->section_mem_map, section_nr);
                  ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 warning and 1 error generated.


vim +/arch_free_vmemmap_page +1625 arch/x86/mm/init_64.c

c2b91e2eec9678 Yinghai Lu  2008-04-12  1623  
cd28b1a6791da0 Muchun Song 2021-03-09  1624  #ifdef CONFIG_HAVE_BOOTMEM_INFO_NODE
92924b23a9f6de Muchun Song 2021-03-10 @1625  void arch_free_vmemmap_page(struct page *page)
92924b23a9f6de Muchun Song 2021-03-10  1626  {
92924b23a9f6de Muchun Song 2021-03-10  1627  	free_bootmem_page(page);
92924b23a9f6de Muchun Song 2021-03-10  1628  }
92924b23a9f6de Muchun Song 2021-03-10  1629  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 3802cfbdd20d..6051a120c906 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -22,6 +22,7 @@ 
 #include <linux/io.h>
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
+#include <linux/hugetlb.h>
 
 #include <asm/barrier.h>
 #include <asm/cputype.h>
@@ -1109,6 +1110,10 @@  int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,
 	pmd_t *pmdp;
 
 	WARN_ON((start < VMEMMAP_START) || (end > VMEMMAP_END));
+
+	if (is_hugetlb_free_vmemmap_enabled() && !altmap)
+		return vmemmap_populate_basepages(start, end, node, altmap);
+
 	do {
 		next = pmd_addr_end(addr, end);
 
diff --git a/fs/Kconfig b/fs/Kconfig
index b5dcc68aab25..d90860135844 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -239,9 +239,9 @@  config HUGETLB_PAGE
 
 config HUGETLB_PAGE_FREE_VMEMMAP
 	def_bool HUGETLB_PAGE
-	depends on X86_64
+	select HAVE_BOOTMEM_INFO_NODE if X86_64
 	depends on SPARSEMEM_VMEMMAP
-	depends on HAVE_BOOTMEM_INFO_NODE
+	depends on X86_64 || ARM64
 
 config MEMFD_CREATE
 	def_bool TMPFS || HUGETLBFS