[缺陷描述]: kernel-selftests测试套,breakpoints.step_after_suspend_test用例失败,报Bail out! Failed to enter Suspend state 测试日志: #./step_after_suspend_test TAP version 13 Bail out! Failed to enter Suspend state # Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0 [重现概率]: 必现 [重现环境]: 环境信息:倚天710机器 11.163.178.238 #uname -r 6.6.71-3_rc1.al8.aarch64 #cat /etc/os-release NAME="Alibaba Cloud Linux" VERSION="3 (Soaring Falcon)" ID="alinux" ID_LIKE="rhel fedora centos anolis" VERSION_ID="3" UPDATE_ID="10" PLATFORM_ID="platform:al8" PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)" ANSI_COLOR="0;31" HOME_URL="https://www.aliyun.com/" #lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 128 On-line CPU(s) list: 0-127 Thread(s) per core: 1 Core(s) per socket: 128 Socket(s): 1 NUMA node(s): 2 Vendor ID: ARM BIOS Vendor ID: T-HEAD Model: 0 Model name: Neoverse-N2 BIOS Model name: Yitian710-128 Stepping: r0p0 CPU MHz: 2750.000 BogoMIPS: 100.00 Hypervisor vendor: Alibaba Virtualization type: full L1d cache: 64K L1i cache: 64K L2 cache: 1024K L3 cache: 65536K NUMA node0 CPU(s): 0-63 NUMA node1 CPU(s): 64-127 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh #free -h total used free shared buff/cache available Mem: 125Gi 3.6Gi 121Gi 12Mi 1.0Gi 122Gi Swap: 2.0Gi 0B 2.0Gi #cat /proc/cmdline BOOT_IMAGE=(hd0,gpt2)/boot/vmlinuz-6.6.71-3_rc1.al8.aarch64 root=UUID=d0af582f-7147-41de-85e3-deb2e14cde99 ro biosdevname=0 rd.driver.pre=ahci iommu.passthrough=1 iommu.strict=0 nospectre_bhb ssbd=force-off systemd.unified_cgroup_hierarchy=0 cgroup.memory=nokmem console=ttyS0,115200 fsck.repair=yes crashkernel=0M-2G:0M,2G-256G:256M,256G-1024G:320M,1024G-:384M #gcc --version gcc (GCC) 12.3.0 20230508 (Red Hat 12.3.0-1) Copyright (C) 2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE [重现步骤]: # 下载并编译用例 wget 内核对应src.rpm包(从这里获取https://koji.alibaba-inc.com/taskinfo?taskID=730244) rpm -ivh xxx.src.rpm 默认安装到/root下 yum install yum-utils yum-builddep -y /root/rpmbuild/SPECS/kernel.spec 自动安装前置依赖包 需要yum-utils rpmbuild -bp /root/rpmbuild/SPECS/kernel.spec # 这个步骤会打相关的patch, 解压缩tar包,生成BUILD目录 cd /root/rpmbuild/BUILD/kernel-*/linux-* make -C tools/testing/selftests/ cd /root/rpmbuild/BUILD/kernel-*/linux-*/tools/testing/selftests/breakpoints;make 执行用例 ./step_after_suspend_test [期望结果]: 用例执行pass [实际结果]: 用例执行失败,报Bail out! Failed to enter Suspend state [分析定位] strace跟踪如下: #strace ./step_after_suspend_test execve("./step_after_suspend_test", ["./step_after_suspend_test"], 0xffffca59d840 /* 57 vars */) = 0 brk(NULL) = 0xe570000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffb6c3c000 faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/aarch64/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/aarch64", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/aarch64/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/aarch64", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib64", {st_mode=S_IFDIR|0555, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/aarch64/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/aarch64", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/tls", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/aarch64/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/aarch64/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/aarch64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/aarch64", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/atomics/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/atomics", 0xfffff5b262c0, 0) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) newfstatat(AT_FDCWD, "/opt/rh/gcc-toolset-12/root/usr/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}, 0) = 0 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=46401, ...}) = 0 mmap(NULL, 46401, PROT_READ, MAP_PRIVATE, 3, 0) = 0xffffb6c30000 close(3) = 0 openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0 \234\2\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=3126520, ...}) = 0 mmap(NULL, 1661744, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xffffb6a6c000 mmap(0xffffb6a70000, 1596208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0) = 0xffffb6a70000 munmap(0xffffb6a6c000, 16384) = 0 munmap(0xffffb6bf6000, 47920) = 0 mprotect(0xffffb6bcf000, 122880, PROT_NONE) = 0 mmap(0xffffb6bed000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16d000) = 0xffffb6bed000 mmap(0xffffb6bf3000, 11056, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xffffb6bf3000 close(3) = 0 mprotect(0xffffb6bed000, 12288, PROT_READ) = 0 mprotect(0x41f000, 4096, PROT_READ) = 0 mprotect(0xffffb6c41000, 4096, PROT_READ) = 0 munmap(0xffffb6c30000, 46401) = 0 fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x1), ...}) = 0 brk(NULL) = 0xe570000 brk(0xe591000) = 0xe591000 brk(NULL) = 0xe591000 write(1, "TAP version 13\n", 15TAP version 13 ) = 15 sched_getaffinity(0, 128, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123]) = 16 getuid() = 0 openat(AT_FDCWD, "/sys/power/state", O_RDWR) = 3 timerfd_create(CLOCK_BOOTTIME_ALARM, 0) = 4 timerfd_settime(4, 0, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=5, tv_nsec=0}}, NULL) = 0 rt_sigaction(SIGINT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigaction(SIGQUIT, {sa_handler=SIG_IGN, sa_mask=[], sa_flags=0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 mmap(NULL, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xffffb6c33000 rt_sigprocmask(SIG_BLOCK, ~[], [CHLD], 8) = 0 clone(child_stack=0xffffb6c3c000, flags=CLONE_VM|CLONE_VFORK|SIGCHLD) = 585310 munmap(0xffffb6c33000, 36864) = 0 rt_sigprocmask(SIG_SETMASK, [CHLD], NULL, 8) = 0 wait4(585310, 0xfffff5b27150, 0, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) wait4(585310, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 585310 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigaction(SIGQUIT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=585310, si_uid=0, si_status=1, si_utime=0, si_stime=0} --- timerfd_gettime(4, {it_interval={tv_sec=0, tv_nsec=0}, it_value={tv_sec=4, tv_nsec=682915101}}) = 0 write(1, "Bail out! Failed to enter Suspen"..., 40Bail out! Failed to enter Suspend state ) = 40 write(1, "# Totals: pass:0 fail:0 xfail:0 "..., 55# Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0 ) = 55 exit_group(1) = ? +++ exited with 1 +++
在6.6.71-3.100_rc2.2.al8.aarch64内核版本上,breakpoints.step_after_suspend_test用例依然失败 #./step_after_suspend_test TAP version 13 Bail out! Failed to enter Suspend state # Totals: pass:0 fail:0 xfail:0 xpass:0 skip:0 error:0 [root@v43c07451.sqa.na131 /var/tmp/tone/run/kernel-selftests/breakpoints] #echo $? 1 [root@v43c07451.sqa.na131 /var/tmp/tone/run/kernel-selftests/breakpoints] #uname -r 6.6.71-3.100_rc2.2.al8.aarch64