All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Barry Song (Xiaomi)" <baohua@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev,
	linux-arm-kernel@lists.infradead.org, barry.song@csr.com
Subject: [baohua:dev/kairui_scanbalance 9/9] mm/vmscan.c:1957:46: error: dereferencing pointer to incomplete type 'struct lru_gen_folio'
Date: Fri, 11 Sep 2026 05:18:33 +0800	[thread overview]
Message-ID: <202609110429.UIZ3Tr8e-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/baohua/linux.git dev/kairui_scanbalance
head:   c96aacd4045a7a4c8d292e6c9ba6d169cdc0b570
commit: c96aacd4045a7a4c8d292e6c9ba6d169cdc0b570 [9/9] mm/mglru: avoid placing rejected folios below populated gen
config: powerpc-randconfig-r123-20260910 (https://download.01.org/0day-ci/archive/20260911/202609110429.UIZ3Tr8e-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 8.5.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260911/202609110429.UIZ3Tr8e-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/202609110429.UIZ3Tr8e-lkp@intel.com/

All errors (new ones prefixed by >>):

                        ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
     compiletime_assert_rwonce_type(x);    \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/vmscan.c:1955:26: note: in expansion of macro 'READ_ONCE'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                             ^~~~~~~~~
   mm/vmscan.c:1955:44: error: 'struct lruvec' has no member named 'lrugen'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                                               ^~
   include/linux/compiler.h:68:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:55:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:3: note: in expansion of macro 'if'
      if (!(condition))     \
      ^~
   include/linux/compiler_types.h:690:2: note: in expansion of macro '__compiletime_assert'
     __compiletime_assert(condition, msg, prefix, suffix)
     ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:702:2: note: in expansion of macro '_compiletime_assert'
     _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
     ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
     compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
     ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
     compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
                        ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
     compiletime_assert_rwonce_type(x);    \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/vmscan.c:1955:26: note: in expansion of macro 'READ_ONCE'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                             ^~~~~~~~~
   mm/vmscan.c:1955:44: error: 'struct lruvec' has no member named 'lrugen'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                                               ^~
   include/linux/compiler.h:68:3: note: in definition of macro '__trace_if_value'
     (cond) ?     \
      ^~~~
   include/linux/compiler.h:55:28: note: in expansion of macro '__trace_if_var'
    #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                               ^~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:3: note: in expansion of macro 'if'
      if (!(condition))     \
      ^~
   include/linux/compiler_types.h:690:2: note: in expansion of macro '__compiletime_assert'
     __compiletime_assert(condition, msg, prefix, suffix)
     ^~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:702:2: note: in expansion of macro '_compiletime_assert'
     _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
     ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
     compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
     ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
     compiletime_assert_rwonce_type(x);    \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/vmscan.c:1955:26: note: in expansion of macro 'READ_ONCE'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                             ^~~~~~~~~
   In file included from <command-line>:
   mm/vmscan.c:1955:44: error: 'struct lruvec' has no member named 'lrugen'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                                               ^~
   include/linux/compiler_types.h:626:13: note: in definition of macro '__unqual_scalar_typeof'
      _Generic((x),      \
                ^
   include/asm-generic/rwonce.h:50:2: note: in expansion of macro '__READ_ONCE'
     __READ_ONCE(x);       \
     ^~~~~~~~~~~
   mm/vmscan.c:1955:26: note: in expansion of macro 'READ_ONCE'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                             ^~~~~~~~~
   In file included from ./arch/powerpc/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:369,
                    from include/asm-generic/bug.h:5,
                    from arch/powerpc/include/asm/bug.h:116,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:7,
                    from mm/vmscan.c:15:
   mm/vmscan.c:1955:44: error: 'struct lruvec' has no member named 'lrugen'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                                               ^~
   include/asm-generic/rwonce.h:44:72: note: in definition of macro '__READ_ONCE'
    #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
                                                                           ^
   mm/vmscan.c:1955:26: note: in expansion of macro 'READ_ONCE'
     unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
                             ^~~~~~~~~
   In file included from include/asm-generic/bug.h:5,
                    from arch/powerpc/include/asm/bug.h:116,
                    from include/linux/bug.h:5,
                    from include/linux/mmdebug.h:5,
                    from include/linux/mm.h:7,
                    from mm/vmscan.c:15:
>> mm/vmscan.c:1957:46: error: dereferencing pointer to incomplete type 'struct lru_gen_folio'
     if (folio_test_unevictable(folio) || !lrugen->enabled)
                                                 ^~
   include/linux/compiler.h:57:52: note: in definition of macro '__trace_if_var'
    #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                       ^~~~
   mm/vmscan.c:1957:2: note: in expansion of macro 'if'
     if (folio_test_unevictable(folio) || !lrugen->enabled)
     ^~
   mm/vmscan.c:1960:8: error: implicit declaration of function 'lru_gen_folio_seq'; did you mean 'lru_to_folio'? [-Werror=implicit-function-declaration]
     seq = lru_gen_folio_seq(lruvec, folio, false);
           ^~~~~~~~~~~~~~~~~
           lru_to_folio
   mm/vmscan.c:1962:8: error: implicit declaration of function 'lru_gen_from_seq'; did you mean 'lru_gen_set_refs'? [-Werror=implicit-function-declaration]
     gen = lru_gen_from_seq(seq);
           ^~~~~~~~~~~~~~~~
           lru_gen_set_refs
   mm/vmscan.c:1967:2: error: implicit declaration of function 'lru_gen_update_size'; did you mean 'huge_page_size'? [-Werror=implicit-function-declaration]
     lru_gen_update_size(lruvec, folio, -1, gen);
     ^~~~~~~~~~~~~~~~~~~
     huge_page_size
   mm/vmscan.c:1953:6: warning: variable 'zone' set but not used [-Wunused-but-set-variable]
     int zone = folio_zonenum(folio);
         ^~~~
   mm/vmscan.c:1952:6: warning: variable 'type' set but not used [-Wunused-but-set-variable]
     int type = folio_is_file_lru(folio);
         ^~~~
   cc1: some warnings being treated as errors


vim +1957 mm/vmscan.c

  1938	
  1939	/*
  1940	 * Even though we have called folio_set_active() for rejected folios
  1941	 * in evict_folios(), they may still be demoted or placed in the last
  1942	 * populated generation since we can now scan all generations.
  1943	 * Make sure these folios are neither demoted nor placed in the last
  1944	 * populated generation, unless it is also the youngest generation
  1945	 */
  1946	static inline bool lru_gen_add_rejected_folio(struct lruvec *lruvec, struct folio *folio,
  1947			unsigned long scanned_seq)
  1948	{
  1949		unsigned long seq;
  1950		unsigned long flags;
  1951		int gen;
  1952		int type = folio_is_file_lru(folio);
  1953		int zone = folio_zonenum(folio);
  1954		struct lru_gen_folio *lrugen = &lruvec->lrugen;
> 1955		unsigned long max_seq = READ_ONCE((lruvec)->lrugen.max_seq);
  1956	
> 1957		if (folio_test_unevictable(folio) || !lrugen->enabled)
  1958			return false;
  1959	
  1960		seq = lru_gen_folio_seq(lruvec, folio, false);
  1961		seq = max(seq, min(scanned_seq + 1, max_seq));
  1962		gen = lru_gen_from_seq(seq);
  1963		flags = (gen + 1UL) << LRU_GEN_PGOFF;
  1964		/* see the comment on MIN_NR_GENS about PG_active */
  1965		set_mask_bits(folio_flags(folio, 0), LRU_GEN_MASK | BIT(PG_active), flags);
  1966	
  1967		lru_gen_update_size(lruvec, folio, -1, gen);
  1968		list_add(&folio->lru, &lrugen->folios[gen][type][zone]);
  1969	
  1970		return true;
  1971	}
  1972	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


                 reply	other threads:[~2026-09-10 21:19 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202609110429.UIZ3Tr8e-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=baohua@kernel.org \
    --cc=barry.song@csr.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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.