Subject: linux-next: build failure after merge of the mm tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 2 May 2022 20:49:03 +1000

Hi all,

After merging the mm tree, today's linux-next build (arm
multi_v7_defconfig) failed like this:

In file included from <command-line>:
mm/shmem.c: In function 'shmem_add_to_page_cache.constprop':
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_267' declared with attribute error: BUILD_BUG failed
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |                                             ^
include/linux/compiler_types.h:333:25: note: in definition of macro '__compiletime_assert'
  333 |                         prefix ## suffix();                             \
      |                         ^~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |         ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
      |                                     ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
   59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
      |                     ^~~~~~~~~~~~~~~~
include/linux/vm_event_item.h:147:27: note: in expansion of macro 'BUILD_BUG'
  147 | #define THP_FILE_ALLOC ({ BUILD_BUG(); 0; })
      |                           ^~~~~~~~~
mm/shmem.c:743:40: note: in expansion of macro 'THP_FILE_ALLOC'
  743 |                         count_vm_event(THP_FILE_ALLOC);
      |                                        ^~~~~~~~~~~~~~
In file included from include/linux/math64.h:6,
                 from include/linux/time64.h:5,
                 from include/linux/restart_block.h:10,
                 from include/linux/thread_info.h:14,
                 from include/asm-generic/preempt.h:5,
                 from ./arch/arm/include/generated/asm/preempt.h:1,
                 from include/linux/preempt.h:78,
                 from include/linux/spinlock.h:55,
                 from include/linux/wait.h:9,
                 from include/linux/wait_bit.h:8,
                 from include/linux/fs.h:6,
                 from mm/shmem.c:24:
mm/shmem.c: In function 'shmem_getpage_gfp.constprop':
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_275' declared with attribute error: BUILD_BUG failed
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |                                             ^
include/linux/math.h:15:46: note: in definition of macro '__round_mask'
   15 | #define __round_mask(x, y) ((__typeof__(x))((y)-1))
      |                                              ^
mm/shmem.c:1892:26: note: in expansion of macro 'round_down'
 1892 |                 hindex = round_down(index, HPAGE_PMD_NR);
      |                          ^~~~~~~~~~
include/linux/compiler_types.h:340:9: note: in expansion of macro '__compiletime_assert'
  340 |         __compiletime_assert(condition, msg, prefix, suffix)
      |         ^~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |         ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
      |                                     ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
   59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
      |                     ^~~~~~~~~~~~~~~~
include/linux/huge_mm.h:307:28: note: in expansion of macro 'BUILD_BUG'
  307 | #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
      |                            ^~~~~~~~~
include/linux/huge_mm.h:105:26: note: in expansion of macro 'HPAGE_PMD_SHIFT'
  105 | #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT)
      |                          ^~~~~~~~~~~~~~~
include/linux/huge_mm.h:106:26: note: in expansion of macro 'HPAGE_PMD_ORDER'
  106 | #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER)
      |                          ^~~~~~~~~~~~~~~
mm/shmem.c:1892:44: note: in expansion of macro 'HPAGE_PMD_NR'
 1892 |                 hindex = round_down(index, HPAGE_PMD_NR);
      |                                            ^~~~~~~~~~~~
In file included from <command-line>:
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_276' declared with attribute error: BUILD_BUG failed
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |                                             ^
include/linux/compiler_types.h:333:25: note: in definition of macro '__compiletime_assert'
  333 |                         prefix ## suffix();                             \
      |                         ^~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |         ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
      |                                     ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
   59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
      |                     ^~~~~~~~~~~~~~~~
include/linux/huge_mm.h:307:28: note: in expansion of macro 'BUILD_BUG'
  307 | #define HPAGE_PMD_SHIFT ({ BUILD_BUG(); 0; })
      |                            ^~~~~~~~~
include/linux/huge_mm.h:105:26: note: in expansion of macro 'HPAGE_PMD_SHIFT'
  105 | #define HPAGE_PMD_ORDER (HPAGE_PMD_SHIFT-PAGE_SHIFT)
      |                          ^~~~~~~~~~~~~~~
include/linux/huge_mm.h:106:26: note: in expansion of macro 'HPAGE_PMD_ORDER'
  106 | #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER)
      |                          ^~~~~~~~~~~~~~~
mm/shmem.c:1915:34: note: in expansion of macro 'HPAGE_PMD_NR'
 1915 |                         hindex + HPAGE_PMD_NR - 1) {
      |                                  ^~~~~~~~~~~~
In file included from <command-line>:
In function 'can_split_folio',
    inlined from 'shrink_page_list' at mm/vmscan.c:1719:11:
include/linux/compiler_types.h:352:45: error: call to '__compiletime_assert_195' declared with attribute error: BUILD_BUG failed
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |                                             ^
include/linux/compiler_types.h:333:25: note: in definition of macro '__compiletime_assert'
  333 |                         prefix ## suffix();                             \
      |                         ^~~~~~
include/linux/compiler_types.h:352:9: note: in expansion of macro '_compiletime_assert'
  352 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |         ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
      |                                     ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:59:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
   59 | #define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
      |                     ^~~~~~~~~~~~~~~~
include/linux/huge_mm.h:351:9: note: in expansion of macro 'BUILD_BUG'
  351 |         BUILD_BUG();
      |         ^~~~~~~~~

Reverting the following commits makes the problem go away:

  2b58b3f33ba2 ("mm/shmem: convert shmem_swapin_page() to shmem_swapin_folio()")
  94cdf3e8c0bf ("mm/shmem: convert shmem_getpage_gfp to use a folio")
  3674fd6cadf5 ("mm/shmem: convert shmem_alloc_and_acct_page to use a folio")
  b0bb08b2d5f3 ("mm/shmem: turn shmem_alloc_page() into shmem_alloc_folio()")
  8d657a77c6fe ("mm/shmem: turn shmem_should_replace_page into shmem_should_replace_folio")
  9a44f3462edc ("mm/shmem: convert shmem_add_to_page_cache to take a folio")
  561fd8bee1dc ("mm/swap: add folio_throttle_swaprate")
  cb4e56ee240d ("mm/shmem: use a folio in shmem_unused_huge_shrink")
  22bf1b68e572 ("vmscan: remove remaining uses of page in shrink_page_list")
  7d15d41b7c4a ("vmscan: convert the activate_locked portion of shrink_page_list to folios")
  8a6aff9c51c7 ("vmscan: move initialisation of mapping down")
  b79338b3d217 ("vmscan: convert lazy freeing to folios")
  719426e40146 ("vmscan: convert page buffer handling to use folios")
  339ba7502e13 ("vmscan: convert dirty page handling to folios")

-- 
Cheers,
Stephen Rothwell