On Mon, Sep 18, 2023, at 09:29, Mike Rapoport wrote: > index a42e4cd11db2..c0b536e398b4 100644 > --- a/arch/arm/mm/init.c > +++ b/arch/arm/mm/init.c > +#ifdef CONFIG_XIP_KERNEL > +/* > + * The XIP kernel text is mapped in the module area for modules and > + * some other stuff to work without any indirect relocations. > + * MODULES_VADDR is redefined here and not in asm/memory.h to avoid > + * recompiling the whole kernel when CONFIG_XIP_KERNEL is turned > on/off. > + */ > +#undef MODULES_VADDR > +#define MODULES_VADDR (((unsigned long)_exiprom + ~PMD_MASK) & > PMD_MASK) > +#endif > + > +#if defined(CONFIG_MMU) && defined(CONFIG_EXECMEM) > +static struct execmem_params execmem_params __ro_after_init = { > + .ranges = { > + [EXECMEM_DEFAULT] = { > + .start = MODULES_VADDR, > + .end = MODULES_END, > + .alignment = 1, > + }, This causes a randconfig build failure for me on linux-next now: arch/arm/mm/init.c:499:25: error: initializer element is not constant 499 | #define MODULES_VADDR (((unsigned long)_exiprom + ~PMD_MASK) & PMD_MASK) | ^ arch/arm/mm/init.c:506:34: note: in expansion of macro 'MODULES_VADDR' 506 | .start = MODULES_VADDR, | ^~~~~~~~~~~~~ arch/arm/mm/init.c:499:25: note: (near initialization for 'execmem_params.ranges[0].start') 499 | #define MODULES_VADDR (((unsigned long)_exiprom + ~PMD_MASK) & PMD_MASK) | ^ arch/arm/mm/init.c:506:34: note: in expansion of macro 'MODULES_VADDR' 506 | .start = MODULES_VADDR, | ^~~~~~~~~~~~~ I have not done any analysis on the issue so far, I hope you can see the problem directly. See https://pastebin.com/raw/xVqAyakH for a .config that runs into this problem with gcc-13.2.0. Arnd