Re: [PATCH v1 1/1] mm: report per-page metadata information

kernel test robot
2023-09-13T21:54:41Z

Hi Sourav,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]
[also build test ERROR on driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus linus/master v6.6-rc1 next-20230913]
[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#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Sourav-Panda/mm-report-per-page-metadata-information/20230914-013201
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20230913173000.4016218-2-souravpanda%40google.com
patch subject: [PATCH v1 1/1] mm: report per-page metadata information
config: um-defconfig (https://download.01.org/0day-ci/archive/20230914/202309140522.z5SLip5C-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230914/202309140522.z5SLip5C-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202309140522.z5SLip5C-lkp@intel.com/

All errors (new ones prefixed by >>):

/usr/bin/ld: mm/mm_init.o: in function `alloc_node_mem_map':
>> mm/mm_init.c:1660: undefined reference to `mod_node_early_perpage_metadata'
/usr/bin/ld: mm/page_alloc.o: in function `setup_per_cpu_pageset':
>> mm/page_alloc.c:5500: undefined reference to `writeout_early_perpage_metadata'
collect2: error: ld returned 1 exit status

vim +1660 mm/mm_init.c

1628
1629 #ifdef CONFIG_FLATMEM
1630 static void __init alloc_node_mem_map(struct pglist_data *pgdat)
1631 {
1632 unsigned long __maybe_unused start = 0;
1633 unsigned long __maybe_unused offset = 0;
1634
1635 /* Skip empty nodes */
1636 if (!pgdat->node_spanned_pages)
1637 return;
1638
1639 start = pgdat->node_start_pfn & ~(MAX_ORDER_NR_PAGES - 1);
1640 offset = pgdat->node_start_pfn - start;
1641 /* ia64 gets its own node_mem_map, before this, without bootmem */
1642 if (!pgdat->node_mem_map) {
1643 unsigned long size, end;
1644 struct page *map;
1645
1646 /*
1647 * The zone's endpoints aren't required to be MAX_ORDER
1648 * aligned but the node_mem_map endpoints must be in order
1649 * for the buddy allocator to function correctly.
1650 */
1651 end = pgdat_end_pfn(pgdat);
1652 end = ALIGN(end, MAX_ORDER_NR_PAGES);
1653 size = (end - start) * sizeof(struct page);
1654 map = memmap_alloc(size, SMP_CACHE_BYTES, MEMBLOCK_LOW_LIMIT,
1655 pgdat->node_id, false);
1656 if (!map)
1657 panic("Failed to allocate %ld bytes for node %d memory map\n",
1658 size, pgdat->node_id);
1659 pgdat->node_mem_map = map + offset;
> 1660 mod_node_early_perpage_metadata(pgdat->node_id,
1661 PAGE_ALIGN(size) >> PAGE_SHIFT);
1662 }
1663 pr_debug("%s: node %d, pgdat %08lx, node_mem_map %08lx\n",
1664 __func__, pgdat->node_id, (unsigned long)pgdat,
1665 (unsigned long)pgdat->node_mem_map);
1666 #ifndef CONFIG_NUMA
1667 /*
1668 * With no DISCONTIG, the global mem_map is just set as node 0's
1669 */
1670 if (pgdat == NODE_DATA(0)) {
1671 mem_map = NODE_DATA(0)->node_mem_map;
1672 if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
1673 mem_map -= offset;
1674 }
1675 #endif
1676 }
1677 #else
1678 static inline void alloc_node_mem_map(struct pglist_data *pgdat) { }
1679 #endif /* CONFIG_FLATMEM */
1680

--
0-DAY CI Kernel Test Service