Re: arch/arm64/include/asm/atomic_ll_sc.h:298:9: error: unknown type name 'u128'

Arnd Bergmann
2024-02-26T16:20:11Z

On Mon, Feb 26, 2024, at 17:00, Anna-Maria Behnsen wrote:
> "Arnd Bergmann" <arnd@arndb.de> writes:
>> Commit a0d2fcd62ac2 ("vdso/ARM: Make union vdso_data_store
>> available for all architectures") introduced a reference to
>> the asm/page.h in include/vdso/datapage.h, but this is outside
>> of the vdso/*.h namespace and doesn't work in the compat vdso.
>
> But the asm namespace works for the vdso namespace. Only linux headers
> do not work, or am I wrong?

The vdso namespace was added to have something that works for
userspace code in both compat 32-bit mode and native (32 or
64) bit mode, while anything outside of include/vdso may not
work here.

> PAGE_SIZE is defined in asm/page-def.h for arm64. So this could be a
> fast fix (tested with clang-14):
>
> ---8<----
> --- a/include/vdso/datapage.h
> +++ b/include/vdso/datapage.h
> @@ -19,7 +19,11 @@
> #include <vdso/time32.h>
> #include <vdso/time64.h>
>
> +#ifdef CONFIG_ARM64
> +#include <asm/page-def.h>
> +#else
> #include <asm/page.h>
> +#endif
>
> #ifdef CONFIG_ARCH_HAS_VDSO_DATA
> #include <asm/vdso/data.h>
> ---8<---

I've sent my own patch now, which is something we probably want
anyway, but is obviously much more invasive thank your four-line
patch.

Maybe we can put your quick fix in the tip tree for the moment
and I put my patches into the asm-generic tree, then
we can do the trivial cleanup from my final patch later.

Arnd