On Fri, 26 Feb 2021, Andrew Morton wrote: > On Fri, 26 Feb 2021 12:17:20 -0800 Palmer Dabbelt <palmer@xxxxxxxxxxx> wrote: > > From: Palmer Dabbelt <palmerdabbelt@xxxxxxxxxx> > > > > This is only useful under CONFIG_NUMA. IIUC skipping the check is the > > right thing to do here, as without CONFIG_NUMA there will never be any > > large node distances on non-NUMA systems. > > > > I expected this to manifest as a link failure under (!CONFIG_NUMA && > > CONFIG_TRANSPARENT_HUGE_PAGES), but I'm not actually seeing that. I > > think the reference is just getting pruned before it's checked, but I > > didn't get that from reading the code so I'm worried I'm missing > > something. > > > > Either way, this is necessary to guard the definition of > > node_reclaim_distance with CONFIG_NUMA. > > > > Signed-off-by: Palmer Dabbelt <palmerdabbelt@xxxxxxxxxx> > > --- > > mm/khugepaged.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index a7d6cb912b05..b1bf191c3a54 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -819,8 +819,10 @@ static bool khugepaged_scan_abort(int nid) > > for (i = 0; i < MAX_NUMNODES; i++) { > > if (!khugepaged_node_load[i]) > > continue; > > +#ifdef CONFIG_NUMA > > if (node_distance(nid, i) > node_reclaim_distance) > > return true; > > +#endif > > } > > return false; > > } > > This makes the entire loop a no-op. Perhaps Kirill can help take a > look at removing unnecessary code in khugepaged.c when CONFIG_NUMA=n? First lines of khugepaged_scan_abort() say if (!node_reclaim_mode) return false; And include/linux/swap.h says #ifdef CONFIG_NUMA extern int node_reclaim_mode; extern int sysctl_min_unmapped_ratio; extern int sysctl_min_slab_ratio; #else #define node_reclaim_mode 0 #endif So, no need for an #ifdef CONFIG_NUMA inside khugepaged_scan_abort(). Hugh