All of lore.kernel.org
 help / color / mirror / Atom feed
* mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
@ 2026-04-08  6:30 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-04-08  6:30 UTC (permalink / raw)
  To: Johannes Weiner; +Cc: oe-kbuild-all, 0day robot

tree:   https://github.com/intel-lab-lkp/linux/commits/Johannes-Weiner/mm-page_alloc-replace-pageblock_flags-bitmap-with-struct-pageblock_data/20260407-193348
head:   fed3344e092819bacd3a25de239265aa067bd4e7
commit: fed3344e092819bacd3a25de239265aa067bd4e7 mm: page_alloc: per-cpu pageblock buddy allocator
date:   17 hours ago
config: i386-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260408/202604080625.I1FdysJj-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260408/202604080625.I1FdysJj-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/r/202604080625.I1FdysJj-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from mm/page_alloc.c:58:
   mm/internal.h: In function 'pfn_to_pageblock':
   mm/internal.h:803:37: error: invalid use of undefined type 'struct pageblock_data'
     803 |         return &zone->pageblock_data[idx];
         |                                     ^
   mm/page_alloc.c: In function 'get_pfnblock_flags_word':
   mm/page_alloc.c:363:44: error: invalid use of undefined type 'struct pageblock_data'
     363 |         return &pfn_to_pageblock(page, pfn)->flags;
         |                                            ^~
   In file included from <command-line>:
   mm/page_alloc.c: In function 'pbd_migratetype':
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:642:53: note: in definition of macro '__unqual_scalar_typeof'
     642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
         |                                                     ^
   ./include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |         ^~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
   In file included from ./arch/x86/include/generated/asm/rwonce.h:1,
                    from ./include/linux/compiler.h:372,
                    from ./include/asm-generic/bug.h:5,
                    from ./arch/x86/include/asm/bug.h:193,
                    from ./include/linux/bug.h:5,
                    from ./include/linux/mmdebug.h:5,
                    from ./include/linux/mm.h:7,
                    from mm/page_alloc.c:18:
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ./include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                         ^
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
   mm/page_alloc.c: In function 'init_pageblock_migratetype':
   mm/page_alloc.c:542:12: error: invalid use of undefined type 'struct pageblock_data'
     542 |         pbd->block_pfn = pfn;
         |            ^~
   mm/page_alloc.c:543:28: error: invalid use of undefined type 'struct pageblock_data'
     543 |         INIT_LIST_HEAD(&pbd->cpu_node);
         |                            ^~
   mm/page_alloc.c: In function 'clear_pcpblock_owner':
   mm/page_alloc.c:712:12: error: invalid use of undefined type 'struct pageblock_data'
     712 |         pbd->cpu = 0;
         |            ^~
   mm/page_alloc.c:713:27: error: invalid use of undefined type 'struct pageblock_data'
     713 |         list_del_init(&pbd->cpu_node);
         |                           ^~
   mm/page_alloc.c: In function 'set_pcpblock_owner':
   mm/page_alloc.c:718:50: error: invalid use of undefined type 'struct pageblock_data'
     718 |         pfn_to_pageblock(page, page_to_pfn(page))->cpu = cpu + 1;
         |                                                  ^~
   mm/page_alloc.c: In function 'get_pcpblock_owner':
   mm/page_alloc.c:723:57: error: invalid use of undefined type 'struct pageblock_data'
     723 |         return pfn_to_pageblock(page, page_to_pfn(page))->cpu - 1;
         |                                                         ^~
   mm/page_alloc.c: In function 'free_pcppages_bulk':
   mm/page_alloc.c:1603:52: error: invalid use of undefined type 'struct pageblock_data'
    1603 |                                 if (list_empty(&pbd->cpu_node))
         |                                                    ^~
   mm/page_alloc.c:1604:54: error: invalid use of undefined type 'struct pageblock_data'
    1604 |                                         list_add(&pbd->cpu_node, &pcp->owned_blocks);
         |                                                      ^~
   In file included from ./include/linux/init.h:5,
                    from ./include/linux/printk.h:6,
                    from ./include/asm-generic/bug.h:31:
   mm/page_alloc.c: In function 'rmqueue_bulk':
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from mm/page_alloc.c:17:
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from ./include/linux/list.h:5,
                    from ./include/linux/smp.h:12,
                    from ./include/linux/lockdep.h:14,
                    from ./include/linux/spinlock.h:63,
                    from ./include/linux/mmzone.h:8,
                    from ./include/linux/gfp.h:7,
                    from ./include/linux/mm.h:8:
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/container_of.h:20:33: note: in definition of macro 'container_of'
      20 |         void *__mptr = (void *)(ptr);                                   \
         |                                 ^~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:22:23: note: in expansion of macro '__same_type'
      22 |                       __same_type(*(ptr), void),                        \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/list.h:869:64: warning: left-hand operand of comma expression has no effect [-Wunused-value]
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                                                                ^
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/list.h:773:26: error: invalid use of undefined type 'struct pageblock_data'
     773 |         list_is_head(&pos->member, (head))
         |                          ^~
   ./include/linux/list.h:871:15: note: in expansion of macro 'list_entry_is_head'
     871 |              !list_entry_is_head(pos, head, member);                    \
         |               ^~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/container_of.h:20:33: note: in definition of macro 'container_of'
      20 |         void *__mptr = (void *)(ptr);                                   \
         |                                 ^~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:22:23: note: in expansion of macro '__same_type'
      22 |                       __same_type(*(ptr), void),                        \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:2722:31: error: invalid use of undefined type 'struct pageblock_data'
    2722 |                 base_pfn = pbd->block_pfn;
         |                               ^~
   mm/page_alloc.c:2743:35: error: invalid use of undefined type 'struct pageblock_data'
    2743 |                 list_del_init(&pbd->cpu_node);
         |                                   ^~
   mm/page_alloc.c: In function '__free_frozen_pages':
   mm/page_alloc.c:3248:24: error: invalid use of undefined type 'struct pageblock_data'
    3248 |         owner_cpu = pbd->cpu - 1;
         |                        ^~
   mm/page_alloc.c: In function 'free_unref_folios':
   mm/page_alloc.c:3333:32: error: invalid use of undefined type 'struct pageblock_data'
    3333 |                 owner_cpu = pbd->cpu - 1;
         |                                ^~
   mm/page_alloc.c: In function 'get_pfnblock_flags_word':
   mm/page_alloc.c:364:1: warning: control reaches end of non-void function [-Wreturn-type]
     364 | }
         | ^


vim +414 mm/page_alloc.c

0b423ca22f95a8 Mel Gorman      2016-05-19  406  
fed3344e092819 Johannes Weiner 2026-04-03  407  /*
fed3344e092819 Johannes Weiner 2026-04-03  408   * Extract migratetype from a pageblock_data pointer. Callers that
fed3344e092819 Johannes Weiner 2026-04-03  409   * already have the pbd can avoid a redundant pfn_to_pageblock().
fed3344e092819 Johannes Weiner 2026-04-03  410   */
fed3344e092819 Johannes Weiner 2026-04-03  411  static __always_inline enum migratetype
fed3344e092819 Johannes Weiner 2026-04-03  412  pbd_migratetype(const struct pageblock_data *pbd)
fed3344e092819 Johannes Weiner 2026-04-03  413  {
fed3344e092819 Johannes Weiner 2026-04-03 @414  	unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
fed3344e092819 Johannes Weiner 2026-04-03  415  

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


^ permalink raw reply	[flat|nested] 2+ messages in thread
* mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
@ 2026-04-08  4:24 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2026-04-08  4:24 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Johannes Weiner <hannes@cmpxchg.org>
CC: 0day robot <lkp@intel.com>

tree:   https://github.com/intel-lab-lkp/linux/commits/Johannes-Weiner/mm-page_alloc-replace-pageblock_flags-bitmap-with-struct-pageblock_data/20260407-193348
head:   fed3344e092819bacd3a25de239265aa067bd4e7
commit: fed3344e092819bacd3a25de239265aa067bd4e7 mm: page_alloc: per-cpu pageblock buddy allocator
date:   17 hours ago
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: i386-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260408/202604080625.I1FdysJj-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260408/202604080625.I1FdysJj-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/r/202604080625.I1FdysJj-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from mm/page_alloc.c:58:
   mm/internal.h: In function 'pfn_to_pageblock':
   mm/internal.h:803:37: error: invalid use of undefined type 'struct pageblock_data'
     803 |         return &zone->pageblock_data[idx];
         |                                     ^
   mm/page_alloc.c: In function 'get_pfnblock_flags_word':
   mm/page_alloc.c:363:44: error: invalid use of undefined type 'struct pageblock_data'
     363 |         return &pfn_to_pageblock(page, pfn)->flags;
         |                                            ^~
   In file included from <command-line>:
   mm/page_alloc.c: In function 'pbd_migratetype':
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |                            ^~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:686:23: note: in definition of macro '__compiletime_assert'
     686 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   ././include/linux/compiler_types.h:706:9: note: in expansion of macro '_compiletime_assert'
     706 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
      36 |         compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
         |         ^~~~~~~~~~~~~~~~~~
   ./include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |         compiletime_assert_rwonce_type(x);                              \
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ././include/linux/compiler_types.h:642:53: note: in definition of macro '__unqual_scalar_typeof'
     642 | #define __unqual_scalar_typeof(x) __typeof_unqual__(x)
         |                                                     ^
   ./include/asm-generic/rwonce.h:50:9: note: in expansion of macro '__READ_ONCE'
      50 |         __READ_ONCE(x);                                                 \
         |         ^~~~~~~~~~~
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
   In file included from ./arch/x86/include/generated/asm/rwonce.h:1,
                    from ./include/linux/compiler.h:372,
                    from ./include/asm-generic/bug.h:5,
                    from ./arch/x86/include/asm/bug.h:193,
                    from ./include/linux/bug.h:5,
                    from ./include/linux/mmdebug.h:5,
                    from ./include/linux/mm.h:7,
                    from mm/page_alloc.c:18:
>> mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                                            ^~
   ./include/asm-generic/rwonce.h:44:73: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                         ^
   mm/page_alloc.c:414:31: note: in expansion of macro 'READ_ONCE'
     414 |         unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
         |                               ^~~~~~~~~
   mm/page_alloc.c: In function 'init_pageblock_migratetype':
   mm/page_alloc.c:542:12: error: invalid use of undefined type 'struct pageblock_data'
     542 |         pbd->block_pfn = pfn;
         |            ^~
   mm/page_alloc.c:543:28: error: invalid use of undefined type 'struct pageblock_data'
     543 |         INIT_LIST_HEAD(&pbd->cpu_node);
         |                            ^~
   mm/page_alloc.c: In function 'clear_pcpblock_owner':
   mm/page_alloc.c:712:12: error: invalid use of undefined type 'struct pageblock_data'
     712 |         pbd->cpu = 0;
         |            ^~
   mm/page_alloc.c:713:27: error: invalid use of undefined type 'struct pageblock_data'
     713 |         list_del_init(&pbd->cpu_node);
         |                           ^~
   mm/page_alloc.c: In function 'set_pcpblock_owner':
   mm/page_alloc.c:718:50: error: invalid use of undefined type 'struct pageblock_data'
     718 |         pfn_to_pageblock(page, page_to_pfn(page))->cpu = cpu + 1;
         |                                                  ^~
   mm/page_alloc.c: In function 'get_pcpblock_owner':
   mm/page_alloc.c:723:57: error: invalid use of undefined type 'struct pageblock_data'
     723 |         return pfn_to_pageblock(page, page_to_pfn(page))->cpu - 1;
         |                                                         ^~
   mm/page_alloc.c: In function 'free_pcppages_bulk':
   mm/page_alloc.c:1603:52: error: invalid use of undefined type 'struct pageblock_data'
    1603 |                                 if (list_empty(&pbd->cpu_node))
         |                                                    ^~
   mm/page_alloc.c:1604:54: error: invalid use of undefined type 'struct pageblock_data'
    1604 |                                         list_add(&pbd->cpu_node, &pcp->owned_blocks);
         |                                                      ^~
   In file included from ./include/linux/init.h:5,
                    from ./include/linux/printk.h:6,
                    from ./include/asm-generic/bug.h:31:
   mm/page_alloc.c: In function 'rmqueue_bulk':
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from mm/page_alloc.c:17:
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:620:9: note: in expansion of macro 'list_entry'
     620 |         list_entry((ptr)->next, type, member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:869:20: note: in expansion of macro 'list_first_entry'
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                    ^~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   In file included from ./include/linux/list.h:5,
                    from ./include/linux/smp.h:12,
                    from ./include/linux/lockdep.h:14,
                    from ./include/linux/spinlock.h:63,
                    from ./include/linux/mmzone.h:8,
                    from ./include/linux/gfp.h:7,
                    from ./include/linux/mm.h:8:
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/container_of.h:20:33: note: in definition of macro 'container_of'
      20 |         void *__mptr = (void *)(ptr);                                   \
         |                                 ^~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:22:23: note: in expansion of macro '__same_type'
      22 |                       __same_type(*(ptr), void),                        \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:870:21: note: in expansion of macro 'list_next_entry'
     870 |                 n = list_next_entry(pos, member);                       \
         |                     ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/list.h:869:64: warning: left-hand operand of comma expression has no effect [-Wunused-value]
     869 |         for (pos = list_first_entry(head, typeof(*pos), member),        \
         |                                                                ^
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/list.h:773:26: error: invalid use of undefined type 'struct pageblock_data'
     773 |         list_is_head(&pos->member, (head))
         |                          ^~
   ./include/linux/list.h:871:15: note: in expansion of macro 'list_entry_is_head'
     871 |              !list_entry_is_head(pos, head, member);                    \
         |               ^~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/container_of.h:20:33: note: in definition of macro 'container_of'
      20 |         void *__mptr = (void *)(ptr);                                   \
         |                                 ^~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/container_of.h:21:54: error: invalid use of undefined type 'struct pageblock_data'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                                                      ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/list.h:667:25: error: invalid use of undefined type 'struct pageblock_data'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |                         ^~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:22:23: note: in expansion of macro '__same_type'
      22 |                       __same_type(*(ptr), void),                        \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   ././include/linux/compiler_types.h:617:27: error: expression in static assertion is not an integer
     617 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
         |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ./include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
      78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
         |                                                        ^~~~
   ./include/linux/container_of.h:21:9: note: in expansion of macro 'static_assert'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |         ^~~~~~~~~~~~~
   ./include/linux/container_of.h:21:23: note: in expansion of macro '__same_type'
      21 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
         |                       ^~~~~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> ./include/linux/stddef.h:16:33: error: invalid use of undefined type 'struct pageblock_data'
      16 | #define offsetof(TYPE, MEMBER)  __builtin_offsetof(TYPE, MEMBER)
         |                                 ^~~~~~~~~~~~~~~~~~
   ./include/linux/container_of.h:24:28: note: in expansion of macro 'offsetof'
      24 |         ((type *)(__mptr - offsetof(type, member))); })
         |                            ^~~~~~~~
   ./include/linux/list.h:609:9: note: in expansion of macro 'container_of'
     609 |         container_of(ptr, type, member)
         |         ^~~~~~~~~~~~
   ./include/linux/list.h:667:9: note: in expansion of macro 'list_entry'
     667 |         list_entry((pos)->member.next, typeof(*(pos)), member)
         |         ^~~~~~~~~~
   ./include/linux/list.h:872:27: note: in expansion of macro 'list_next_entry'
     872 |              pos = n, n = list_next_entry(n, member))
         |                           ^~~~~~~~~~~~~~~
   mm/page_alloc.c:2718:9: note: in expansion of macro 'list_for_each_entry_safe'
    2718 |         list_for_each_entry_safe(pbd, tmp, &pcp->owned_blocks, cpu_node) {
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
   mm/page_alloc.c:2722:31: error: invalid use of undefined type 'struct pageblock_data'
    2722 |                 base_pfn = pbd->block_pfn;
         |                               ^~
   mm/page_alloc.c:2743:35: error: invalid use of undefined type 'struct pageblock_data'
    2743 |                 list_del_init(&pbd->cpu_node);
         |                                   ^~
   mm/page_alloc.c: In function '__free_frozen_pages':
   mm/page_alloc.c:3248:24: error: invalid use of undefined type 'struct pageblock_data'
    3248 |         owner_cpu = pbd->cpu - 1;
         |                        ^~
   mm/page_alloc.c: In function 'free_unref_folios':
   mm/page_alloc.c:3333:32: error: invalid use of undefined type 'struct pageblock_data'
    3333 |                 owner_cpu = pbd->cpu - 1;
         |                                ^~
   mm/page_alloc.c: In function 'get_pfnblock_flags_word':
   mm/page_alloc.c:364:1: warning: control reaches end of non-void function [-Wreturn-type]
     364 | }
         | ^


vim +414 mm/page_alloc.c

0b423ca22f95a8 Mel Gorman      2016-05-19  406  
fed3344e092819 Johannes Weiner 2026-04-03  407  /*
fed3344e092819 Johannes Weiner 2026-04-03  408   * Extract migratetype from a pageblock_data pointer. Callers that
fed3344e092819 Johannes Weiner 2026-04-03  409   * already have the pbd can avoid a redundant pfn_to_pageblock().
fed3344e092819 Johannes Weiner 2026-04-03  410   */
fed3344e092819 Johannes Weiner 2026-04-03  411  static __always_inline enum migratetype
fed3344e092819 Johannes Weiner 2026-04-03  412  pbd_migratetype(const struct pageblock_data *pbd)
fed3344e092819 Johannes Weiner 2026-04-03  413  {
fed3344e092819 Johannes Weiner 2026-04-03 @414  	unsigned long flags = READ_ONCE(pbd->flags) & MIGRATETYPE_AND_ISO_MASK;
fed3344e092819 Johannes Weiner 2026-04-03  415  

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-04-08  6:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-08  6:30 mm/page_alloc.c:414:44: error: invalid use of undefined type 'const struct pageblock_data' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2026-04-08  4:24 kernel test robot

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.