* Re: [RFC PATCH v3 2/8] mm: aggregate working set information into histograms
[not found] <20240327213108.2384666-3-yuanchu@google.com>
@ 2024-03-30 8:15 ` kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-03-30 8:15 UTC (permalink / raw)
To: Yuanchu Xie; +Cc: llvm, oe-kbuild-all
Hi Yuanchu,
[This is a private test report for your RFC patch.]
kernel test robot noticed the following build warnings:
[auto build test WARNING on v6.8]
[cannot apply to akpm-mm/mm-everything driver-core/driver-core-testing driver-core/driver-core-next driver-core/driver-core-linus linus/master v6.9-rc1 next-20240328]
[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/Yuanchu-Xie/mm-multi-gen-LRU-ignore-non-leaf-pmd_young-for-force_scan-true/20240328-053344
base: v6.8
patch link: https://lore.kernel.org/r/20240327213108.2384666-3-yuanchu%40google.com
patch subject: [RFC PATCH v3 2/8] mm: aggregate working set information into histograms
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20240330/202403301646.6FJ4eUMp-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 79ba323bdd0843275019e16b6e9b35133677c514)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240330/202403301646.6FJ4eUMp-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/202403301646.6FJ4eUMp-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from mm/vmscan.c:15:
In file included from include/linux/mm.h:2188:
include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
In file included from mm/vmscan.c:30:
include/linux/mm_inline.h:47:41: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
47 | __mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages);
| ~~~~~~~~~~~ ^ ~~~
include/linux/mm_inline.h:49:22: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
49 | NR_ZONE_LRU_BASE + lru, nr_pages);
| ~~~~~~~~~~~~~~~~ ^ ~~~
mm/vmscan.c:376:51: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
376 | size += zone_page_state(zone, NR_ZONE_LRU_BASE + lru);
| ~~~~~~~~~~~~~~~~ ^ ~~~
mm/vmscan.c:1688:4: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
1688 | __count_zid_vm_events(PGSCAN_SKIP, zid, nr_skipped[zid]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
mm/vmscan.c:2194:51: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
2194 | inactive = lruvec_page_state(lruvec, NR_LRU_BASE + inactive_lru);
| ~~~~~~~~~~~ ^ ~~~~~~~~~~~~
mm/vmscan.c:2195:49: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
2195 | active = lruvec_page_state(lruvec, NR_LRU_BASE + active_lru);
| ~~~~~~~~~~~ ^ ~~~~~~~~~~
>> mm/vmscan.c:3819:6: warning: no previous prototype for function 'try_to_inc_max_seq' [-Wmissing-prototypes]
3819 | bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
| ^
mm/vmscan.c:3819:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3819 | bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
| ^
| static
mm/vmscan.c:4375:4: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
4375 | __count_zid_vm_events(PGSCAN_SKIP, zone, skipped_zone);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
mm/vmscan.c:6231:3: warning: arithmetic between different enumeration types ('enum vm_event_item' and 'enum zone_type') [-Wenum-enum-conversion]
6231 | __count_zid_vm_events(ALLOCSTALL, sc->reclaim_idx, 1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:135:34: note: expanded from macro '__count_zid_vm_events'
135 | __count_vm_events(item##_NORMAL - ZONE_NORMAL + zid, delta)
| ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
14 warnings generated.
vim +/try_to_inc_max_seq +3819 mm/vmscan.c
3818
> 3819 bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq,
3820 struct scan_control *sc, bool can_swap, bool force_scan)
3821 {
3822 bool success;
3823 struct lru_gen_mm_walk *walk;
3824 struct mm_struct *mm = NULL;
3825 struct lru_gen_folio *lrugen = &lruvec->lrugen;
3826 struct lru_gen_mm_state *mm_state = get_mm_state(lruvec);
3827
3828 VM_WARN_ON_ONCE(max_seq > READ_ONCE(lrugen->max_seq));
3829
3830 if (!mm_state)
3831 return inc_max_seq(lruvec, max_seq, can_swap, force_scan);
3832
3833 /* see the comment in iterate_mm_list() */
3834 if (max_seq <= READ_ONCE(mm_state->seq))
3835 return false;
3836
3837 /*
3838 * If the hardware doesn't automatically set the accessed bit, fallback
3839 * to lru_gen_look_around(), which only clears the accessed bit in a
3840 * handful of PTEs. Spreading the work out over a period of time usually
3841 * is less efficient, but it avoids bursty page faults.
3842 */
3843 if (!should_walk_mmu()) {
3844 success = iterate_mm_list_nowalk(lruvec, max_seq);
3845 goto done;
3846 }
3847
3848 walk = set_mm_walk(NULL, true);
3849 if (!walk) {
3850 success = iterate_mm_list_nowalk(lruvec, max_seq);
3851 goto done;
3852 }
3853
3854 walk->lruvec = lruvec;
3855 walk->max_seq = max_seq;
3856 walk->can_swap = can_swap;
3857 walk->force_scan = force_scan;
3858
3859 do {
3860 success = iterate_mm_list(lruvec, walk, &mm);
3861 if (mm)
3862 walk_mm(lruvec, mm, walk);
3863 } while (mm);
3864 done:
3865 if (success) {
3866 success = inc_max_seq(lruvec, max_seq, can_swap, force_scan);
3867 WARN_ON_ONCE(!success);
3868 }
3869
3870 return success;
3871 }
3872
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread