All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [hying-caritas:mt-20210701 33/56] mm/vmscan.c:2261:46: sparse: sparse: mixing different enum types:
Date: Thu, 03 Feb 2022 22:06:15 +0800	[thread overview]
Message-ID: <202202031841.nnBVqqFb-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 6072 bytes --]

tree:   https://github.com/hying-caritas/linux.git mt-20210701
head:   491dd52981b1acfc3638b3780d85ee68113fd51b
commit: 19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c [33/56] mm: make some global page reclaim related vmstat events per-node
config: m68k-randconfig-s032-20220202 (https://download.01.org/0day-ci/archive/20220203/202202031841.nnBVqqFb-lkp(a)intel.com/config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/hying-caritas/linux/commit/19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c
        git remote add hying-caritas https://github.com/hying-caritas/linux.git
        git fetch --no-tags hying-caritas mt-20210701
        git checkout 19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=m68k SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
>> mm/vmscan.c:2261:46: sparse: sparse: mixing different enum types:
>> mm/vmscan.c:2261:46: sparse:    unsigned int enum vm_event_item
>> mm/vmscan.c:2261:46: sparse:    unsigned int enum node_stat_item
   mm/vmscan.c:2278:46: sparse: sparse: mixing different enum types:
   mm/vmscan.c:2278:46: sparse:    unsigned int enum vm_event_item
   mm/vmscan.c:2278:46: sparse:    unsigned int enum node_stat_item
   mm/vmscan.c: note: in included file:
   include/linux/mm_inline.h:66:38: sparse: sparse: context imbalance in 'isolate_lru_page' - unexpected unlock
   mm/vmscan.c: note: in included file (through include/linux/swap.h):
   include/linux/memcontrol.h:1527:39: sparse: sparse: context imbalance in 'check_move_unevictable_pages' - unexpected unlock

vim +2261 mm/vmscan.c

  2219	
  2220	/*
  2221	 * shrink_inactive_list() is a helper for shrink_node().  It returns the number
  2222	 * of reclaimed pages
  2223	 */
  2224	static noinline_for_stack unsigned long
  2225	shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
  2226			     struct scan_control *sc, enum lru_list lru)
  2227	{
  2228		LIST_HEAD(page_list);
  2229		unsigned long nr_scanned;
  2230		unsigned int nr_reclaimed = 0;
  2231		unsigned long nr_taken;
  2232		struct reclaim_stat stat;
  2233		bool file = is_file_lru(lru);
  2234		enum vm_event_item item;
  2235		struct pglist_data *pgdat = lruvec_pgdat(lruvec);
  2236		bool stalled = false;
  2237	
  2238		while (unlikely(too_many_isolated(pgdat, file, sc))) {
  2239			if (stalled)
  2240				return 0;
  2241	
  2242			/* wait a bit for the reclaimer. */
  2243			msleep(100);
  2244			stalled = true;
  2245	
  2246			/* We are about to die and free our memory. Return now. */
  2247			if (fatal_signal_pending(current))
  2248				return SWAP_CLUSTER_MAX;
  2249		}
  2250	
  2251		lru_add_drain();
  2252	
  2253		spin_lock_irq(&lruvec->lru_lock);
  2254	
  2255		nr_taken = isolate_lru_pages(nr_to_scan, lruvec, &page_list,
  2256					     &nr_scanned, sc, lru);
  2257	
  2258		__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, nr_taken);
  2259		item = current_is_kswapd() ? PGSCAN_KSWAPD : PGSCAN_DIRECT;
  2260		if (!cgroup_reclaim(sc))
> 2261			__mod_node_page_state(pgdat, item, nr_scanned);
  2262		__mod_memcg_state(lruvec_memcg(lruvec), item, nr_scanned);
  2263		__count_vm_events(PGSCAN_ANON + file, nr_scanned);
  2264	
  2265		spin_unlock_irq(&lruvec->lru_lock);
  2266	
  2267		if (nr_taken == 0)
  2268			return 0;
  2269	
  2270		nr_reclaimed = shrink_page_list(&page_list, pgdat, sc, &stat, false);
  2271	
  2272		spin_lock_irq(&lruvec->lru_lock);
  2273		move_pages_to_lru(lruvec, &page_list);
  2274	
  2275		__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, -nr_taken);
  2276		item = current_is_kswapd() ? PGSTEAL_KSWAPD : PGSTEAL_DIRECT;
  2277		if (!cgroup_reclaim(sc))
  2278			__mod_node_page_state(pgdat, item, nr_reclaimed);
  2279		__mod_memcg_state(lruvec_memcg(lruvec), item, nr_reclaimed);
  2280		__count_vm_events(PGSTEAL_ANON + file, nr_reclaimed);
  2281		spin_unlock_irq(&lruvec->lru_lock);
  2282	
  2283		lru_note_cost(lruvec, file, stat.nr_pageout);
  2284		mem_cgroup_uncharge_list(&page_list);
  2285		free_unref_page_list(&page_list);
  2286	
  2287		/*
  2288		 * If dirty pages are scanned that are not queued for IO, it
  2289		 * implies that flushers are not doing their job. This can
  2290		 * happen when memory pressure pushes dirty pages to the end of
  2291		 * the LRU before the dirty limits are breached and the dirty
  2292		 * data has expired. It can also happen when the proportion of
  2293		 * dirty pages grows not through writes but through memory
  2294		 * pressure reclaiming all the clean cache. And in some cases,
  2295		 * the flushers simply cannot keep up with the allocation
  2296		 * rate. Nudge the flusher threads in case they are asleep.
  2297		 */
  2298		if (stat.nr_unqueued_dirty == nr_taken)
  2299			wakeup_flusher_threads(WB_REASON_VMSCAN);
  2300	
  2301		sc->nr.dirty += stat.nr_dirty;
  2302		sc->nr.congested += stat.nr_congested;
  2303		sc->nr.unqueued_dirty += stat.nr_unqueued_dirty;
  2304		sc->nr.writeback += stat.nr_writeback;
  2305		sc->nr.immediate += stat.nr_immediate;
  2306		sc->nr.taken += nr_taken;
  2307		if (file)
  2308			sc->nr.file_taken += nr_taken;
  2309	
  2310		trace_mm_vmscan_lru_shrink_inactive(pgdat->node_id,
  2311				nr_scanned, nr_reclaimed, &stat, sc->priority, file);
  2312		return nr_reclaimed;
  2313	}
  2314	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Huang Ying <ying.huang@intel.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [hying-caritas:mt-20210701 33/56] mm/vmscan.c:2261:46: sparse: sparse: mixing different enum types:
Date: Thu, 3 Feb 2022 22:06:15 +0800	[thread overview]
Message-ID: <202202031841.nnBVqqFb-lkp@intel.com> (raw)

tree:   https://github.com/hying-caritas/linux.git mt-20210701
head:   491dd52981b1acfc3638b3780d85ee68113fd51b
commit: 19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c [33/56] mm: make some global page reclaim related vmstat events per-node
config: m68k-randconfig-s032-20220202 (https://download.01.org/0day-ci/archive/20220203/202202031841.nnBVqqFb-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/hying-caritas/linux/commit/19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c
        git remote add hying-caritas https://github.com/hying-caritas/linux.git
        git fetch --no-tags hying-caritas mt-20210701
        git checkout 19f3e3d17bb9b4096c84f6f5e7842dbfd3c1132c
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=m68k SHELL=/bin/bash

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


sparse warnings: (new ones prefixed by >>)
>> mm/vmscan.c:2261:46: sparse: sparse: mixing different enum types:
>> mm/vmscan.c:2261:46: sparse:    unsigned int enum vm_event_item
>> mm/vmscan.c:2261:46: sparse:    unsigned int enum node_stat_item
   mm/vmscan.c:2278:46: sparse: sparse: mixing different enum types:
   mm/vmscan.c:2278:46: sparse:    unsigned int enum vm_event_item
   mm/vmscan.c:2278:46: sparse:    unsigned int enum node_stat_item
   mm/vmscan.c: note: in included file:
   include/linux/mm_inline.h:66:38: sparse: sparse: context imbalance in 'isolate_lru_page' - unexpected unlock
   mm/vmscan.c: note: in included file (through include/linux/swap.h):
   include/linux/memcontrol.h:1527:39: sparse: sparse: context imbalance in 'check_move_unevictable_pages' - unexpected unlock

vim +2261 mm/vmscan.c

  2219	
  2220	/*
  2221	 * shrink_inactive_list() is a helper for shrink_node().  It returns the number
  2222	 * of reclaimed pages
  2223	 */
  2224	static noinline_for_stack unsigned long
  2225	shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec,
  2226			     struct scan_control *sc, enum lru_list lru)
  2227	{
  2228		LIST_HEAD(page_list);
  2229		unsigned long nr_scanned;
  2230		unsigned int nr_reclaimed = 0;
  2231		unsigned long nr_taken;
  2232		struct reclaim_stat stat;
  2233		bool file = is_file_lru(lru);
  2234		enum vm_event_item item;
  2235		struct pglist_data *pgdat = lruvec_pgdat(lruvec);
  2236		bool stalled = false;
  2237	
  2238		while (unlikely(too_many_isolated(pgdat, file, sc))) {
  2239			if (stalled)
  2240				return 0;
  2241	
  2242			/* wait a bit for the reclaimer. */
  2243			msleep(100);
  2244			stalled = true;
  2245	
  2246			/* We are about to die and free our memory. Return now. */
  2247			if (fatal_signal_pending(current))
  2248				return SWAP_CLUSTER_MAX;
  2249		}
  2250	
  2251		lru_add_drain();
  2252	
  2253		spin_lock_irq(&lruvec->lru_lock);
  2254	
  2255		nr_taken = isolate_lru_pages(nr_to_scan, lruvec, &page_list,
  2256					     &nr_scanned, sc, lru);
  2257	
  2258		__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, nr_taken);
  2259		item = current_is_kswapd() ? PGSCAN_KSWAPD : PGSCAN_DIRECT;
  2260		if (!cgroup_reclaim(sc))
> 2261			__mod_node_page_state(pgdat, item, nr_scanned);
  2262		__mod_memcg_state(lruvec_memcg(lruvec), item, nr_scanned);
  2263		__count_vm_events(PGSCAN_ANON + file, nr_scanned);
  2264	
  2265		spin_unlock_irq(&lruvec->lru_lock);
  2266	
  2267		if (nr_taken == 0)
  2268			return 0;
  2269	
  2270		nr_reclaimed = shrink_page_list(&page_list, pgdat, sc, &stat, false);
  2271	
  2272		spin_lock_irq(&lruvec->lru_lock);
  2273		move_pages_to_lru(lruvec, &page_list);
  2274	
  2275		__mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, -nr_taken);
  2276		item = current_is_kswapd() ? PGSTEAL_KSWAPD : PGSTEAL_DIRECT;
  2277		if (!cgroup_reclaim(sc))
  2278			__mod_node_page_state(pgdat, item, nr_reclaimed);
  2279		__mod_memcg_state(lruvec_memcg(lruvec), item, nr_reclaimed);
  2280		__count_vm_events(PGSTEAL_ANON + file, nr_reclaimed);
  2281		spin_unlock_irq(&lruvec->lru_lock);
  2282	
  2283		lru_note_cost(lruvec, file, stat.nr_pageout);
  2284		mem_cgroup_uncharge_list(&page_list);
  2285		free_unref_page_list(&page_list);
  2286	
  2287		/*
  2288		 * If dirty pages are scanned that are not queued for IO, it
  2289		 * implies that flushers are not doing their job. This can
  2290		 * happen when memory pressure pushes dirty pages to the end of
  2291		 * the LRU before the dirty limits are breached and the dirty
  2292		 * data has expired. It can also happen when the proportion of
  2293		 * dirty pages grows not through writes but through memory
  2294		 * pressure reclaiming all the clean cache. And in some cases,
  2295		 * the flushers simply cannot keep up with the allocation
  2296		 * rate. Nudge the flusher threads in case they are asleep.
  2297		 */
  2298		if (stat.nr_unqueued_dirty == nr_taken)
  2299			wakeup_flusher_threads(WB_REASON_VMSCAN);
  2300	
  2301		sc->nr.dirty += stat.nr_dirty;
  2302		sc->nr.congested += stat.nr_congested;
  2303		sc->nr.unqueued_dirty += stat.nr_unqueued_dirty;
  2304		sc->nr.writeback += stat.nr_writeback;
  2305		sc->nr.immediate += stat.nr_immediate;
  2306		sc->nr.taken += nr_taken;
  2307		if (file)
  2308			sc->nr.file_taken += nr_taken;
  2309	
  2310		trace_mm_vmscan_lru_shrink_inactive(pgdat->node_id,
  2311				nr_scanned, nr_reclaimed, &stat, sc->priority, file);
  2312		return nr_reclaimed;
  2313	}
  2314	

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

             reply	other threads:[~2022-02-03 14:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-03 14:06 kernel test robot [this message]
2022-02-03 14:06 ` [hying-caritas:mt-20210701 33/56] mm/vmscan.c:2261:46: sparse: sparse: mixing different enum types: kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202202031841.nnBVqqFb-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.