2024-04-18 09:38:20

by Naresh Kamboju

[permalink] [raw]
Subject: selftests: resctrl: cat_test.c: In function 'noncont_cat_run_test': ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t"

The Linux next building selftests with gcc-13 found these build warnings
and errors.

Reported-by: Linux Kernel Functional Testing <[email protected]>

Build log:
---------
Path:
selftests/resctrl/resctrl_tests/

In file included from resctrl.h:24,
from cat_test.c:11:
cat_test.c: In function 'noncont_cat_run_test':
./kselftest.h:74:9: error: impossible constraint in 'asm'
74 | __asm__ __volatile__ ("cpuid\n\t"
\
| ^~~~~~~
cat_test.c:308:17: note: in expansion of macro '__cpuid_count'
308 | __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:310:17: note: in expansion of macro '__cpuid_count'
310 | __cpuid_count(0x10, 2, eax, ebx, ecx, edx);
| ^~~~~~~~~~~~~

Steps to reproduce:
---
tuxmake --runtime podman --target-arch arm64 --toolchain gcc-13 \
--kconfig https://storage.tuxsuite.com/public/linaro/lkft/builds/2fDW3wG8BqWxf0afUI5f4wkArPi/config
\
debugkernel dtbs dtbs-legacy headers kernel kselftest modules

Links:
- https://storage.tuxsuite.com/public/linaro/lkft/builds/2fDW3wG8BqWxf0afUI5f4wkArPi/

--
Linaro LKFT
https://lkft.linaro.org


2024-04-18 17:14:18

by Reinette Chatre

[permalink] [raw]
Subject: Re: selftests: resctrl: cat_test.c: In function 'noncont_cat_run_test': ../kselftest.h:74:9: error: impossible constraint in 'asm' 74 | __asm__ __volatile__ ("cpuid\n\t"



On 4/18/2024 2:37 AM, Naresh Kamboju wrote:
> The Linux next building selftests with gcc-13 found these build warnings
> and errors.
>
> Reported-by: Linux Kernel Functional Testing <[email protected]>
>
> Build log:
> ---------
> Path:
> selftests/resctrl/resctrl_tests/
>
> In file included from resctrl.h:24,
> from cat_test.c:11:
> cat_test.c: In function 'noncont_cat_run_test':
> ../kselftest.h:74:9: error: impossible constraint in 'asm'
> 74 | __asm__ __volatile__ ("cpuid\n\t"
> \
> | ^~~~~~~
> cat_test.c:308:17: note: in expansion of macro '__cpuid_count'
> 308 | __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:310:17: note: in expansion of macro '__cpuid_count'
> 310 | __cpuid_count(0x10, 2, eax, ebx, ecx, edx);
> | ^~~~~~~~~~~~~
>

This is unexpected to me. kselftest.h intends to and still does define
__cpuid_count() exactly the same as gcc does (in gcc/config/i386/cpuid.h):


255 #define __cpuid_count(level, count, a, b, c, d) \
256 __asm__ __volatile__ ("cpuid\n\t" \
257 : "=a" (a), "=b" (b), "=c" (c), "=d" (d) \
258 : "0" (level), "2" (count))

Reinette