[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Zx-icwjwSxT1T9K5@yury-ThinkPad>
Date: Mon, 28 Oct 2024 07:40:51 -0700
From: Yury Norov <yury.norov@...il.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
Cc: linux-kernel@...r.kernel.org, Adrian Hunter <adrian.hunter@...el.com>,
Anshuman Khandual <anshuman.khandual@....com>,
Ian Rogers <irogers@...gle.com>, Jiri Olsa <jolsa@...nel.org>,
Kan Liang <kan.liang@...ux.intel.com>,
Namhyung Kim <namhyung@...nel.org>
Subject: Re: [PATCH 1/1 fyi] tools headers: Synchronize {uapi/}linux/bits.h
with the kernel sources
On Mon, Oct 28, 2024 at 11:01:56AM -0300, Arnaldo Carvalho de Melo wrote:
> tldr; Just FYI, I'm carrying this on the perf tools tree.
>
> Full explanation:
>
> There used to be no copies, with tools/ code using kernel headers
> directly. From time to time tools/perf/ broke due to legitimate kernel
> hacking. At some point Linus complained about such direct usage. Then we
> adopted the current model.
>
> See further details at:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/include/uapi/README
>
> To pick up the changes in this cset:
>
> 947697c6f0f75f98 ("uapi: Define GENMASK_U128")
>
> This addresses these perf build warnings:
>
> Warning: Kernel ABI header differences:
> diff -u tools/include/uapi/linux/bits.h include/uapi/linux/bits.h
> diff -u tools/include/linux/bits.h include/linux/bits.h
>
> Please see tools/include/uapi/README for further details.
>
> Cc: Adrian Hunter <adrian.hunter@...el.com>
> Cc: Anshuman Khandual <anshuman.khandual@....com>
> Cc: Ian Rogers <irogers@...gle.com>
> Cc: Jiri Olsa <jolsa@...nel.org>
> Cc: Kan Liang <kan.liang@...ux.intel.com>
> Cc: Namhyung Kim <namhyung@...nel.org>
> Cc: Yury Norov <yury.norov@...il.com>
> Link: https://lore.kernel.org/lkml/
> Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
Thanks,
Acked-by: Yury Norov <yury.norov@...il.com>
> ---
> tools/include/linux/bits.h | 15 +++++++++++++++
> tools/include/uapi/linux/bits.h | 3 +++
> 2 files changed, 18 insertions(+)
>
> diff --git a/tools/include/linux/bits.h b/tools/include/linux/bits.h
> index 0eb24d21aac2142c..60044b6088172b3f 100644
> --- a/tools/include/linux/bits.h
> +++ b/tools/include/linux/bits.h
> @@ -36,4 +36,19 @@
> #define GENMASK_ULL(h, l) \
> (GENMASK_INPUT_CHECK(h, l) + __GENMASK_ULL(h, l))
>
> +#if !defined(__ASSEMBLY__)
> +/*
> + * Missing asm support
> + *
> + * __GENMASK_U128() depends on _BIT128() which would not work
> + * in the asm code, as it shifts an 'unsigned __init128' data
> + * type instead of direct representation of 128 bit constants
> + * such as long and unsigned long. The fundamental problem is
> + * that a 128 bit constant will get silently truncated by the
> + * gcc compiler.
> + */
> +#define GENMASK_U128(h, l) \
> + (GENMASK_INPUT_CHECK(h, l) + __GENMASK_U128(h, l))
> +#endif
> +
> #endif /* __LINUX_BITS_H */
> diff --git a/tools/include/uapi/linux/bits.h b/tools/include/uapi/linux/bits.h
> index 3c2a101986a314f6..5ee30f882736cbd1 100644
> --- a/tools/include/uapi/linux/bits.h
> +++ b/tools/include/uapi/linux/bits.h
> @@ -12,4 +12,7 @@
> (((~_ULL(0)) - (_ULL(1) << (l)) + 1) & \
> (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))
>
> +#define __GENMASK_U128(h, l) \
> + ((_BIT128((h)) << 1) - (_BIT128(l)))
> +
> #endif /* _UAPI_LINUX_BITS_H */
> --
> 2.47.0
Powered by blists - more mailing lists