On Wed, 7 Aug 2019 13:58:21 +0100 Steven Price <[email protected]> wrote:
> > ./arch/x86/include/asm/pgtable_64_types.h:56:22: error: initializer element
> > is not constant
> > #define PTRS_PER_PGD 512
> > ^
>
> This is very unhelpful of GCC - it's actually PTRS_PER_P4D which isn't
> constant!
Well. You had every right to assume that an all-caps macro is a
compile-time constant.
We are innocent victims of Kirill's c65e774fb3f6af2 ("x86/mm: Make
PGDIR_SHIFT and PTRS_PER_P4D variable") which lazily converted these
macros into runtime-only, under some Kconfig settings. It should have
changed those macros into static inlined lower-case functions.