* ❌ FAIL: Test report for kernel 5.14.0 (mainline.kernel.org-clang, 1dbe7e38)
@ 2021-09-06 17:55 CKI Project
2021-09-06 19:55 ` Nathan Chancellor
0 siblings, 1 reply; 2+ messages in thread
From: CKI Project @ 2021-09-06 17:55 UTC (permalink / raw)
To: llvm
[-- Attachment #1: Type: text/plain, Size: 1999 bytes --]
Hello,
We ran automated tests on a recent commit from this kernel tree:
Kernel repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Commit: 1dbe7e386f50 - Merge tag 'block-5.15-2021-09-05' of git://git.kernel.dk/linux-block
The results of these automated tests are provided below.
Overall result: FAILED (see details below)
Merge: OK
Compile: FAILED
Selftests compile: OK
All kernel binaries, config files, and logs are available for download here:
https://arr-cki-prod-datawarehouse-public.s3.amazonaws.com/index.html?prefix=datawarehouse-public/2021/09/06/366042792
We attempted to compile the kernel for multiple architectures, but the compile
failed on one or more architectures:
aarch64: FAILED (see build-aarch64.log.xz attachment)
ppc64le: FAILED (see build-ppc64le.log.xz attachment)
s390x: FAILED (see build-s390x.log.xz attachment)
x86_64: FAILED (see build-x86_64.log.xz attachment)
We hope that these logs can help you find the problem quickly. For the full
detail on our testing procedures, please scroll to the bottom of this message.
Please reply to this email if you have any questions about the tests that we
ran or if you have any suggestions on how to make future tests more effective.
,-. ,-.
( C ) ( K ) Continuous
`-',-.`-' Kernel
( I ) Integration
`-'
______________________________________________________________________________
Compile testing
---------------
We compiled the kernel for 4 architectures:
aarch64:
make options: make LLVM=1 -j24 INSTALL_MOD_STRIP=1 targz-pkg
ppc64le:
make options: make CC=clang -j24 INSTALL_MOD_STRIP=1 targz-pkg
s390x:
make options: make CC=clang -j24 INSTALL_MOD_STRIP=1 targz-pkg
x86_64:
make options: make LLVM=1 -j24 INSTALL_MOD_STRIP=1 targz-pkg
[-- Attachment #2: build-s390x.log.xz --]
[-- Type: application/x-xz, Size: 35964 bytes --]
[-- Attachment #3: build-ppc64le.log.xz --]
[-- Type: application/x-xz, Size: 8196 bytes --]
[-- Attachment #4: build-aarch64.log.xz --]
[-- Type: application/x-xz, Size: 33456 bytes --]
[-- Attachment #5: build-x86_64.log.xz --]
[-- Type: application/x-xz, Size: 112404 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: ❌ FAIL: Test report for kernel 5.14.0 (mainline.kernel.org-clang, 1dbe7e38)
2021-09-06 17:55 ❌ FAIL: Test report for kernel 5.14.0 (mainline.kernel.org-clang, 1dbe7e38) CKI Project
@ 2021-09-06 19:55 ` Nathan Chancellor
0 siblings, 0 replies; 2+ messages in thread
From: Nathan Chancellor @ 2021-09-06 19:55 UTC (permalink / raw)
To: CKI Project; +Cc: llvm, Nick Desaulniers
On Mon, Sep 06, 2021 at 05:55:12PM -0000, CKI Project wrote:
>
> Hello,
>
> We ran automated tests on a recent commit from this kernel tree:
>
> Kernel repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> Commit: 1dbe7e386f50 - Merge tag 'block-5.15-2021-09-05' of git://git.kernel.dk/linux-block
>
> The results of these automated tests are provided below.
>
> Overall result: FAILED (see details below)
> Merge: OK
> Compile: FAILED
> Selftests compile: OK
>
> All kernel binaries, config files, and logs are available for download here:
>
> https://arr-cki-prod-datawarehouse-public.s3.amazonaws.com/index.html?prefix=datawarehouse-public/2021/09/06/366042792
>
> We attempted to compile the kernel for multiple architectures, but the compile
> failed on one or more architectures:
>
> aarch64: FAILED (see build-aarch64.log.xz attachment)
> ppc64le: FAILED (see build-ppc64le.log.xz attachment)
> s390x: FAILED (see build-s390x.log.xz attachment)
> x86_64: FAILED (see build-x86_64.log.xz attachment)
>
> We hope that these logs can help you find the problem quickly. For the full
> detail on our testing procedures, please scroll to the bottom of this message.
>
> Please reply to this email if you have any questions about the tests that we
> ran or if you have any suggestions on how to make future tests more effective.
>
> ,-. ,-.
> ( C ) ( K ) Continuous
> `-',-.`-' Kernel
> ( I ) Integration
> `-'
> ______________________________________________________________________________
aarch64:
00:00:19 kernel/sched/core.c:7934:1: error: stack frame size (1088) exceeds limit (1024) in function '__sched_setaffinity' [-Werror,-Wframe-larger-than]
00:00:19 __sched_setaffinity(struct task_struct *p, const struct cpumask *mask)
00:00:19 ^
00:00:19 1 error generated.
This appears to happen because cpumask_var_t variables in this config
are allocated on the stack (CONFIG_CPUMASK_OFFSTACK is not selected for
arm64) and this config sets CONFIG_NR_CPUS=4096, meaning struct cpumask
is 512 bytes large:
$ pahole -C cpumask_var_t kernel/sched/core.o
typedef struct cpumask cpumask_var_t[1];
$ pahole -C cpumask kernel/sched/core.o
struct cpumask {
long unsigned int bits[64]; /* 0 512 */
/* size: 512, cachelines: 8, members: 1 */
};
There is a little extra inlining that happens, as can be seen with
Nick's tool (https://github.com/ClangBuiltLinux/frame-larger-than):
$ python3 $CBL_GIT/frame-larger-than/frame_larger_than.py kernel/sched/core.o __sched_setaffinity
__sched_setaffinity:
0 cpumask_var_t cpus_allowed
0 cpumask_var_t new_mask
4 int retval
cpumask_and:
bitmap_and:
cpumask_subset:
bitmap_subset:
cpumask_copy:
bitmap_copy:
4 unsigned int len
4 unsigned int len
__set_cpus_allowed_ptr:
16 struct rq_flags rf
8 struct rq* rq
16 struct rq_flags rf
8 struct rq* rq
GCC has the same issue:
kernel/sched/core.c: In function '__sched_setaffinity':
kernel/sched/core.c:7973:1: error: the frame size of 1040 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
7973 | }
| ^
cc1: all warnings being treated as errors
I am guessing there is a little less inling happening with GCC,
resulting in it being over the limit by less but the core of the issue
is still the same (two stack allocated 512 byte structures will be over
1024 with one other variable OR changed inlining decisions).
For what it's worth, CONFIG_FRAME_WARN defaults to 2048 for 64-bit so
this is somewhat self inflicted (none of these would be visible with
that value)...
$ sed -n '345,355p' lib/Kconfig.debug
config FRAME_WARN
int "Warn for stack frames larger than"
range 0 8192
default 2048 if GCC_PLUGIN_LATENT_ENTROPY
default 1536 if (!64BIT && PARISC)
default 1024 if (!64BIT && !PARISC)
default 2048 if 64BIT
help
Tell gcc to warn at build time for stack frames larger than this.
Setting this too low will cause a lot of warnings.
Setting it to 0 disables the warning.
00:00:44 arch/arm64/crypto/aes-neonbs-glue.c:270:12: error: stack frame size (1040) exceeds limit (1024) in function 'aesbs_xts_setkey' [-Werror,-Wframe-larger-than]
00:00:44 static int aesbs_xts_setkey(struct crypto_skcipher *tfm, const u8 *in_key,
00:00:44 ^
00:00:44 1 error generated.
I think this is clang inling certain calls?
$ python3 $CBL_GIT/frame-larger-than/frame_larger_than.py arch/arm64/crypto/aes-neonbs-glue.o aesbs_xts_setkey
aesbs_xts_setkey:
484 struct crypto_aes_ctx rk
8 struct aesbs_xts_ctx* ctx
4 int err
xts_verify_key:
crypto_memneq:
aesbs_setkey:
484 struct crypto_aes_ctx rk
8 struct aesbs_ctx* ctx
4 int err
484 struct crypto_aes_ctx rk
8 struct aesbs_ctx* ctx
4 int err
compared to GCC 11.2.0:
$ python3 $CBL_GIT/frame-larger-than/frame_larger_than.py arch/arm64/crypto/aes-neonbs-glue.o aesbs_xts_setkey
aesbs_xts_setkey:
8 struct aesbs_xts_ctx* ctx
484 struct crypto_aes_ctx rk
4 int err
00:02:12 drivers/char/ipmi/ipmi_msghandler.c:4850:13: error: stack frame size (1072) exceeds limit (1024) in function 'ipmi_panic_request_and_wait' [-Werror,-Wframe-larger-than]
00:02:12 static void ipmi_panic_request_and_wait(struct ipmi_smi *intf,
00:02:12 ^
00:02:12 1 error generated.
clang-14:
$ python3 $CBL_GIT/frame-larger-than/frame_larger_than.py drivers/char/ipmi/ipmi_msghandler.o ipmi_panic_request_and_wait
ipmi_panic_request_and_wait:
592 struct ipmi_smi_msg smi_msg
384 struct ipmi_recv_msg recv_msg
4 int rv
atomic_add:
arch_atomic_add:
system_uses_lse_atomics:
1 bool branch
1 bool branch
arch_static_branch_jump:
arch_static_branch_jump:
__lse_atomic_add:
__ll_sc_atomic_add:
8 long unsigned int tmp
4 int result
atomic_sub:
arch_atomic_sub:
system_uses_lse_atomics:
1 bool branch
1 bool branch
arch_static_branch_jump:
arch_static_branch_jump:
__lse_atomic_sub:
__ll_sc_atomic_sub:
8 long unsigned int tmp
4 int result
atomic_read:
ipmi_poll:
GCC 11.2.0:
$ python3 $CBL_GIT/frame-larger-than/frame_larger_than.py drivers/char/ipmi/ipmi_msghandler.o ipmi_panic_request_and_wait
ipmi_panic_request_and_wait:
592 struct ipmi_smi_msg smi_msg
384 struct ipmi_recv_msg recv_msg
4 int rv
atomic_add:
arch_atomic_add:
system_uses_lse_atomics:
1 bool branch
1 bool branch
1 bool branch
arch_static_branch_jump:
1 bool branch
arch_static_branch_jump:
__lse_atomic_add:
__ll_sc_atomic_add:
8 long unsigned int tmp
4 int result
8 long unsigned int tmp
4 int result
atomic_read:
ipmi_poll:
atomic_sub:
arch_atomic_sub:
system_uses_lse_atomics:
1 bool branch
1 bool branch
1 bool branch
arch_static_branch_jump:
1 bool branch
arch_static_branch_jump:
__lse_atomic_sub:
__ll_sc_atomic_sub:
8 long unsigned int tmp
4 int result
8 long unsigned int tmp
4 int result
Not really sure why clang warns here while GCC doesn't... unless there
is a bug in the tool.
00:03:54 fs/jffs2/xattr.c:775:6: error: stack frame size (1216) exceeds limit (1024) in function 'jffs2_build_xattr_subsystem' [-Werror,-Wframe-larger-than]
00:03:54 void jffs2_build_xattr_subsystem(struct jffs2_sb_info *c)
00:03:54 ^
00:03:54 1 error generated.
GCC 11.2.0 shows the same warning, albeit with less usage like before:
fs/jffs2/xattr.c: In function 'jffs2_build_xattr_subsystem':
fs/jffs2/xattr.c:887:1: warning: the frame size of 1104 bytes is larger than 1024 bytes [-Wframe-larger-than=]
887 | }
| ^
ppc64le and s390x are being worked on:
https://lore.kernel.org/r/20210906114804.GE143157@black/
https://gitlab.com/cki-project/pipeline-definition/-/merge_requests/1382
x86_64:
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:157:11: error: variable 'err' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
00:21:24 else if (mlx5_esw_bridge_dev_same_hw(rep, esw))
00:21:24 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:164:9: note: uninitialized use occurs here
00:21:24 return err;
00:21:24 ^~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:157:7: note: remove the 'if' if its condition is always true
00:21:24 else if (mlx5_esw_bridge_dev_same_hw(rep, esw))
00:21:24 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:140:9: note: initialize the variable 'err' to silence this warning
00:21:24 int err;
00:21:24 ^
00:21:24 = 0
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:262:7: error: variable 'err' is used uninitialized whenever switch case is taken [-Werror,-Wsometimes-uninitialized]
00:21:24 case SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS:
00:21:24 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:276:9: note: uninitialized use occurs here
00:21:24 return err;
00:21:24 ^~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:257:7: error: variable 'err' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
00:21:24 if (attr->u.brport_flags.mask & ~(BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD)) {
00:21:24 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:276:9: note: uninitialized use occurs here
00:21:24 return err;
00:21:24 ^~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:257:3: note: remove the 'if' if its condition is always true
00:21:24 if (attr->u.brport_flags.mask & ~(BR_LEARNING | BR_FLOOD | BR_MCAST_FLOOD)) {
00:21:24 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00:21:24 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c:247:9: note: initialize the variable 'err' to silence this warning
00:21:24 int err;
00:21:24 ^
00:21:24 = 0
00:21:24 3 errors generated.
Another report and pending patch:
https://lore.kernel.org/r/CA+G9fYsV7sTfaefGj3bpkvVdRQUeiWCVRiu6ovjtM=qri-HJ8g@mail.gmail.com/
https://lore.kernel.org/r/20210902190554.211497-4-saeed@kernel.org/
Cheers,
Nathan
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-09-06 19:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-06 17:55 ❌ FAIL: Test report for kernel 5.14.0 (mainline.kernel.org-clang, 1dbe7e38) CKI Project
2021-09-06 19:55 ` Nathan Chancellor
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.