Hi Wei, url: https://github.com/intel-lab-lkp/linux/commits/Wei-Yang/mm-vmscan-reduce-double-check-if-kswapd-is-not-able-to-sleep/20221023-160625 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20221023080431.30893-1-richard.weiyang%40gmail.com patch subject: [PATCH] mm/vmscan: reduce double-check if kswapd is not able to sleep config: microblaze-randconfig-m041-20221023 compiler: microblaze-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> New smatch warnings: mm/vmscan.c:7261 kswapd_try_to_sleep() error: uninitialized symbol 'remaining'. vim +/remaining +7261 mm/vmscan.c 38087d9b036098 Mel Gorman 2016-07-28 7179 static void kswapd_try_to_sleep(pg_data_t *pgdat, int alloc_order, int reclaim_order, 97a225e69a1f88 Joonsoo Kim 2020-06-03 7180 unsigned int highest_zoneidx) f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7181 { de349a300443b3 Wei Yang 2022-10-23 7182 long remaining; de349a300443b3 Wei Yang 2022-10-23 7183 bool can_sleep; f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7184 DEFINE_WAIT(wait); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7185 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7186 if (freezing(current) || kthread_should_stop()) f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7187 return; f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7188 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7189 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7190 333b0a459c0e1b Shantanu Goel 2017-05-03 7191 /* 333b0a459c0e1b Shantanu Goel 2017-05-03 7192 * Try to sleep for a short interval. Note that kcompactd will only be 333b0a459c0e1b Shantanu Goel 2017-05-03 7193 * woken if it is possible to sleep for a short interval. This is 333b0a459c0e1b Shantanu Goel 2017-05-03 7194 * deliberate on the assumption that if reclaim cannot keep an 333b0a459c0e1b Shantanu Goel 2017-05-03 7195 * eligible zone balanced that it's also unlikely that compaction will 333b0a459c0e1b Shantanu Goel 2017-05-03 7196 * succeed. 333b0a459c0e1b Shantanu Goel 2017-05-03 7197 */ de349a300443b3 Wei Yang 2022-10-23 7198 can_sleep = prepare_kswapd_sleep(pgdat, reclaim_order, highest_zoneidx); de349a300443b3 Wei Yang 2022-10-23 7199 if (can_sleep) { fd901c95388b3b Vlastimil Babka 2016-04-28 7200 /* fd901c95388b3b Vlastimil Babka 2016-04-28 7201 * Compaction records what page blocks it recently failed to fd901c95388b3b Vlastimil Babka 2016-04-28 7202 * isolate pages from and skips them in the future scanning. fd901c95388b3b Vlastimil Babka 2016-04-28 7203 * When kswapd is going to sleep, it is reasonable to assume fd901c95388b3b Vlastimil Babka 2016-04-28 7204 * that pages and compaction may succeed so reset the cache. fd901c95388b3b Vlastimil Babka 2016-04-28 7205 */ fd901c95388b3b Vlastimil Babka 2016-04-28 7206 reset_isolation_suitable(pgdat); fd901c95388b3b Vlastimil Babka 2016-04-28 7207 fd901c95388b3b Vlastimil Babka 2016-04-28 7208 /* fd901c95388b3b Vlastimil Babka 2016-04-28 7209 * We have freed the memory, now we should compact it to make fd901c95388b3b Vlastimil Babka 2016-04-28 7210 * allocation of the requested order possible. fd901c95388b3b Vlastimil Babka 2016-04-28 7211 */ 97a225e69a1f88 Joonsoo Kim 2020-06-03 7212 wakeup_kcompactd(pgdat, alloc_order, highest_zoneidx); fd901c95388b3b Vlastimil Babka 2016-04-28 7213 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7214 remaining = schedule_timeout(HZ/10); "remaining" only set when can_sleep is true. 38087d9b036098 Mel Gorman 2016-07-28 7215 38087d9b036098 Mel Gorman 2016-07-28 7216 /* 97a225e69a1f88 Joonsoo Kim 2020-06-03 7217 * If woken prematurely then reset kswapd_highest_zoneidx and 38087d9b036098 Mel Gorman 2016-07-28 7218 * order. The values will either be from a wakeup request or 38087d9b036098 Mel Gorman 2016-07-28 7219 * the previous request that slept prematurely. 38087d9b036098 Mel Gorman 2016-07-28 7220 */ 38087d9b036098 Mel Gorman 2016-07-28 7221 if (remaining) { 97a225e69a1f88 Joonsoo Kim 2020-06-03 7222 WRITE_ONCE(pgdat->kswapd_highest_zoneidx, 97a225e69a1f88 Joonsoo Kim 2020-06-03 7223 kswapd_highest_zoneidx(pgdat, 97a225e69a1f88 Joonsoo Kim 2020-06-03 7224 highest_zoneidx)); 5644e1fbbfe15a Qian Cai 2020-04-01 7225 5644e1fbbfe15a Qian Cai 2020-04-01 7226 if (READ_ONCE(pgdat->kswapd_order) < reclaim_order) 5644e1fbbfe15a Qian Cai 2020-04-01 7227 WRITE_ONCE(pgdat->kswapd_order, reclaim_order); de349a300443b3 Wei Yang 2022-10-23 7228 can_sleep = false; de349a300443b3 Wei Yang 2022-10-23 7229 } else { de349a300443b3 Wei Yang 2022-10-23 7230 can_sleep = prepare_kswapd_sleep(pgdat, reclaim_order, de349a300443b3 Wei Yang 2022-10-23 7231 highest_zoneidx); 38087d9b036098 Mel Gorman 2016-07-28 7232 } 38087d9b036098 Mel Gorman 2016-07-28 7233 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7234 finish_wait(&pgdat->kswapd_wait, &wait); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7235 prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7236 } f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7237 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7238 /* de349a300443b3 Wei Yang 2022-10-23 7239 * If kswapd is fine to sleep, restore vmstat thresholds and kswapd de349a300443b3 Wei Yang 2022-10-23 7240 * goes to sleep. de349a300443b3 Wei Yang 2022-10-23 7241 * If not, account whether the low or high watermark was hit quickly. f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7242 */ de349a300443b3 Wei Yang 2022-10-23 7243 if (can_sleep) { f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7244 trace_mm_vmscan_kswapd_sleep(pgdat->node_id); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7245 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7246 /* f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7247 * vmstat counters are not perfectly accurate and the estimated f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7248 * value for counters such as NR_FREE_PAGES can deviate from the f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7249 * true value by nr_online_cpus * threshold. To avoid the zone f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7250 * watermarks being breached while under pressure, we reduce the f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7251 * per-cpu vmstat threshold while kswapd is awake and restore f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7252 * them before going back to sleep. f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7253 */ f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7254 set_pgdat_percpu_threshold(pgdat, calculate_normal_threshold); 1c7e7f6c0703d0 Aaditya Kumar 2012-07-17 7255 1c7e7f6c0703d0 Aaditya Kumar 2012-07-17 7256 if (!kthread_should_stop()) f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7257 schedule(); 1c7e7f6c0703d0 Aaditya Kumar 2012-07-17 7258 f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7259 set_pgdat_percpu_threshold(pgdat, calculate_pressure_threshold); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7260 } else { f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 @7261 if (remaining) Uninitialized here. f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7262 count_vm_event(KSWAPD_LOW_WMARK_HIT_QUICKLY); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7263 else f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7264 count_vm_event(KSWAPD_HIGH_WMARK_HIT_QUICKLY); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7265 } f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7266 finish_wait(&pgdat->kswapd_wait, &wait); f0bc0a60b13f20 KOSAKI Motohiro 2011-01-13 7267 } -- 0-DAY CI Kernel Test Service https://01.org/lkp