[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b6372b9e-f93d-4243-9acd-64b60a6dc779@collabora.com>
Date: Thu, 22 Aug 2024 09:49:31 +0500
From: Muhammad Usama Anjum <Usama.Anjum@...labora.com>
To: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
Shuah Khan <shuah@...nel.org>, Reinette Chatre <reinette.chatre@...el.com>,
linux-kselftest@...r.kernel.org
Cc: Usama.Anjum@...labora.com, linux-kernel@...r.kernel.org,
Shaopeng Tan <tan.shaopeng@...fujitsu.com>, Fenghua Yu <fenghua.yu@...el.com>
Subject: Re: [RFC PATCH 3/3] kselftest: Provide __cpuid_count() stub on
non-x86 archs
On 8/13/24 3:45 PM, Ilpo Järvinen wrote:
> Building resctrl selftest fails on ARM because it uses __cpuid_count()
> that fails the build with error:
>
> CC resctrl_tests
> In file included from resctrl.h:24,
> from cat_test.c:11:
> In function 'arch_supports_noncont_cat',
> inlined from 'noncont_cat_run_test' at cat_test.c:323:6:
> ../kselftest.h:74:9: error: impossible constraint in 'asm'
> 74 | __asm__ __volatile__ ("cpuid\n\t"
> \
> | ^~~~~~~
> cat_test.c:301:17: note: in expansion of macro '__cpuid_count'
> 301 | __cpuid_count(0x10, 1, eax, ebx, ecx, edx);
> | ^~~~~~~~~~~~~
> ../kselftest.h:74:9: error: impossible constraint in 'asm'
> 74 | __asm__ __volatile__ ("cpuid\n\t"
> \
> | ^~~~~~~
> cat_test.c:303:17: note: in expansion of macro '__cpuid_count'
> 303 | __cpuid_count(0x10, 2, eax, ebx, ecx, edx);
> | ^~~~~~~~~~~~~
>
> The resctrl selftest would run that code only on Intel CPUs but
> as is, the code cannot be build at all.
>
> Provide an empty stub for __cpuid_count() if it is not supported
> to allow build to succeed.
>
> Reported-by: Muhammad Usama Anjum <usama.anjum@...labora.com>
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@...labora.com>
Tested-by: Muhammad Usama Anjum <usama.anjum@...labora.com>
> ---
> tools/testing/selftests/kselftest.h | 6 ++++++
> tools/testing/selftests/lib.mk | 4 ++++
> 2 files changed, 10 insertions(+)
>
> diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h
> index b8967b6e29d5..71593add1b39 100644
> --- a/tools/testing/selftests/kselftest.h
> +++ b/tools/testing/selftests/kselftest.h
> @@ -70,10 +70,16 @@
> * have __cpuid_count().
> */
> #ifndef __cpuid_count
> +#ifdef HAVE_CPUID
> #define __cpuid_count(level, count, a, b, c, d) \
> __asm__ __volatile__ ("cpuid\n\t" \
> : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \
> : "0" (level), "2" (count))
> +#else
> +#define __cpuid_count(level, count, a, b, c, d) do { \
> + (void)a; (void)b; (void)c; (void)d; \
> +} while (0)
> +#endif
> #endif
>
> /* define kselftest exit codes */
> diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk
> index d6edcfcb5be8..236db9b24037 100644
> --- a/tools/testing/selftests/lib.mk
> +++ b/tools/testing/selftests/lib.mk
> @@ -199,6 +199,10 @@ clean: $(if $(TEST_GEN_MODS_DIR),clean_mods_dir)
> # Build with _GNU_SOURCE by default
> CFLAGS += -D_GNU_SOURCE=
>
> +ifeq ($(ARCH),$(filter $(ARCH),x86 x86_64))
> +CFLAGS += -DHAVE_CPUID=
> +endif
> +
> # Enables to extend CFLAGS and LDFLAGS from command line, e.g.
> # make USERCFLAGS=-Werror USERLDFLAGS=-static
> CFLAGS += $(USERCFLAGS)
--
BR,
Muhammad Usama Anjum
Powered by blists - more mailing lists