* [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
@ 2026-07-25 0:56 kernel test robot
2026-07-26 2:51 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2026-07-25 0:56 UTC (permalink / raw)
To: Kiryl Shutsemau (Meta)
Cc: oe-kbuild-all, David Hildenbrand, Andrew Morton,
Linux Memory Management List, mm-commits
tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
head: c04df384b55dd9dcf72c36b661becb5aaba371a9
commit: d2aed7c02fafacb9d055a2f683ac12e977ef16e0 [340/601] mm: preserve RWP marker across PTE rewrites
config: sparc64-randconfig-r134-20260725 (https://download.01.org/0day-ci/archive/20260725/202607250853.VaJWGLeA-lkp@intel.com/config)
compiler: sparc64-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/20260725/202607250853.VaJWGLeA-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/202607250853.VaJWGLeA-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from <command-line>:
mm/huge_memory.c: In function 'move_pages_huge_pmd':
>> include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:683:4: note: in definition of macro '__compiletime_assert'
prefix ## suffix(); \
^~~~~~
include/linux/compiler_types.h:702:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:60:21: note: in expansion of macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG() BUILD_BUG_ON_MSG(1, "BUILD_BUG failed")
^~~~~~~~~~~~~~~~
include/linux/pgtable.h:2145:22: note: in expansion of macro 'BUILD_BUG'
#define PAGE_NONE ({ BUILD_BUG(); (pgprot_t){0}; })
^~~~~~~~~
mm/huge_memory.c:2874:35: note: in expansion of macro 'PAGE_NONE'
_dst_pmd = pmd_modify(_dst_pmd, PAGE_NONE);
^~~~~~~~~
vim +/__compiletime_assert_501 +702 include/linux/compiler_types.h
eb5c2d4b45e3d2 Will Deacon 2020-07-21 688
eb5c2d4b45e3d2 Will Deacon 2020-07-21 689 #define _compiletime_assert(condition, msg, prefix, suffix) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 690 __compiletime_assert(condition, msg, prefix, suffix)
eb5c2d4b45e3d2 Will Deacon 2020-07-21 691
eb5c2d4b45e3d2 Will Deacon 2020-07-21 692 /**
eb5c2d4b45e3d2 Will Deacon 2020-07-21 693 * compiletime_assert - break build and emit msg if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21 694 * @condition: a compile-time constant condition to check
eb5c2d4b45e3d2 Will Deacon 2020-07-21 695 * @msg: a message to emit if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21 696 *
eb5c2d4b45e3d2 Will Deacon 2020-07-21 697 * In tradition of POSIX assert, this macro will break the build if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21 698 * supplied condition is *false*, emitting the supplied error message if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21 699 * compiler has support to do so.
eb5c2d4b45e3d2 Will Deacon 2020-07-21 700 */
eb5c2d4b45e3d2 Will Deacon 2020-07-21 701 #define compiletime_assert(condition, msg) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 @702 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
eb5c2d4b45e3d2 Will Deacon 2020-07-21 703
:::::: The code at line 702 was first introduced by commit
:::::: eb5c2d4b45e3d2d5d052ea6b8f1463976b1020d5 compiler.h: Move compiletime_assert() macros into compiler_types.h
:::::: TO: Will Deacon <will@kernel.org>
:::::: CC: Will Deacon <will@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
2026-07-25 0:56 [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed kernel test robot
@ 2026-07-26 2:51 ` Andrew Morton
2026-07-27 9:25 ` Kiryl Shutsemau
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2026-07-26 2:51 UTC (permalink / raw)
To: kernel test robot
Cc: Kiryl Shutsemau (Meta), oe-kbuild-all, David Hildenbrand,
Linux Memory Management List, mm-commits
On Sat, 25 Jul 2026 08:56:41 +0800 kernel test robot <lkp@intel.com> wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> head: c04df384b55dd9dcf72c36b661becb5aaba371a9
> commit: d2aed7c02fafacb9d055a2f683ac12e977ef16e0 [340/601] mm: preserve RWP marker across PTE rewrites
> config: sparc64-randconfig-r134-20260725 (https://download.01.org/0day-ci/archive/20260725/202607250853.VaJWGLeA-lkp@intel.com/config)
> compiler: sparc64-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/20260725/202607250853.VaJWGLeA-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/202607250853.VaJWGLeA-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> In file included from <command-line>:
> mm/huge_memory.c: In function 'move_pages_huge_pmd':
> >> include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
> _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
> ^
> include/linux/compiler_types.h:683:4: note: in definition of macro '__compiletime_assert'
> prefix ## suffix(); \
Well dang.
I can't reproduce with sparc64 gcc-15.2.0.
Documentation/process/changes.rst says we support 8,1, released in
2018. Your 8.5 was released in 2021 so perhaps three other people are
still using it :(
https://www.kernel.org/pub/tools/crosstool/ doesn't appear to have
sparc64 gcc-8.5 so I gave up.
So I dunno. I'm inclined to ignore and assume that if someone else hits
this one day, they'll either fix it or provide us with enough details
to figure it out.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
2026-07-26 2:51 ` Andrew Morton
@ 2026-07-27 9:25 ` Kiryl Shutsemau
0 siblings, 0 replies; 3+ messages in thread
From: Kiryl Shutsemau @ 2026-07-27 9:25 UTC (permalink / raw)
To: Andrew Morton
Cc: kernel test robot, oe-kbuild-all, David Hildenbrand,
Linux Memory Management List, mm-commits
On Sat, Jul 25, 2026 at 07:51:08PM -0700, Andrew Morton wrote:
> On Sat, 25 Jul 2026 08:56:41 +0800 kernel test robot <lkp@intel.com> wrote:
>
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
> > head: c04df384b55dd9dcf72c36b661becb5aaba371a9
> > commit: d2aed7c02fafacb9d055a2f683ac12e977ef16e0 [340/601] mm: preserve RWP marker across PTE rewrites
> > config: sparc64-randconfig-r134-20260725 (https://download.01.org/0day-ci/archive/20260725/202607250853.VaJWGLeA-lkp@intel.com/config)
> > compiler: sparc64-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/20260725/202607250853.VaJWGLeA-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/202607250853.VaJWGLeA-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > In file included from <command-line>:
> > mm/huge_memory.c: In function 'move_pages_huge_pmd':
> > >> include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed
> > _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
> > ^
> > include/linux/compiler_types.h:683:4: note: in definition of macro '__compiletime_assert'
> > prefix ## suffix(); \
>
> Well dang.
>
> I can't reproduce with sparc64 gcc-15.2.0.
> Documentation/process/changes.rst says we support 8,1, released in
> 2018. Your 8.5 was released in 2021 so perhaps three other people are
> still using it :(
>
> https://www.kernel.org/pub/tools/crosstool/ doesn't appear to have
> sparc64 gcc-8.5 so I gave up.
>
> So I dunno. I'm inclined to ignore and assume that if someone else hits
> this one day, they'll either fix it or provide us with enough details
> to figure it out.
I cannot reproduce it either. Maybe we can help compiler to derive that the
code is dead?
-- >8 --
From: "Kiryl Shutsemau (Meta)" <kas@kernel.org>
Date: Mon, 27 Jul 2026 10:16:11 +0100
Subject: [PATCH] mm: fold userfaultfd_rwp() to false without
CONFIG_ARCH_HAS_PTE_PROTNONE
RWP tracks accesses by installing PAGE_NONE (protnone) PTEs, so its code
paths are gated on userfaultfd_rwp(). Without CONFIG_ARCH_HAS_PTE_PROTNONE
there is no PAGE_NONE -- <linux/pgtable.h> defines it to a BUILD_BUG()
stub, relying on callers folding such paths to dead code via
IS_ENABLED(CONFIG_ARCH_HAS_PTE_PROTNONE).
userfaultfd_rwp() was not a compile-time constant, so the compiler could
not fold those paths. With an older compiler (gcc 8.5.0, sparc64) the
PAGE_NONE reference in move_pages_huge_pmd() survived to codegen:
mm/huge_memory.c:2874: _dst_pmd = pmd_modify(_dst_pmd, PAGE_NONE);
compiler_types.h:702: error: call to '__compiletime_assert_501'
declared with attribute error: BUILD_BUG failed
RWP cannot exist without protnone, so return a compile-time false when
CONFIG_ARCH_HAS_PTE_PROTNONE is unset; every RWP path then folds away.
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Kiryl Shutsemau (Meta) <kas@kernel.org>
---
include/linux/userfaultfd_k.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
index bfbd6a59909f..0ce438ec294f 100644
--- a/include/linux/userfaultfd_k.h
+++ b/include/linux/userfaultfd_k.h
@@ -221,6 +221,12 @@ static inline bool userfaultfd_minor(struct vm_area_struct *vma)
static inline bool userfaultfd_rwp(struct vm_area_struct *vma)
{
+ /*
+ * Callers gate PAGE_NONE usage on this; PAGE_NONE is a BUILD_BUG()
+ * without CONFIG_ARCH_HAS_PTE_PROTNONE, so fold to false.
+ */
+ if (!IS_ENABLED(CONFIG_ARCH_HAS_PTE_PROTNONE))
+ return false;
return vma_test_single_mask(vma, VMA_UFFD_RWP);
}
base-commit: 505f6bc5c6c6db7d6390ea33c4e2ab44379e6f49
--
Kiryl Shutsemau / Kirill A. Shutemov
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-27 9:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-25 0:56 [akpm-mm:mm-unstable 340/601] include/linux/compiler_types.h:702:38: error: call to '__compiletime_assert_501' declared with attribute error: BUILD_BUG failed kernel test robot
2026-07-26 2:51 ` Andrew Morton
2026-07-27 9:25 ` Kiryl Shutsemau
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox