【问题简述】 社区版Anolis8 ck-4.19 aarch64 nightly, kernel-selftest测试套case:cpufreq.main.sh run fail 【复现步骤】 rpm -i kernel-4.19.91-210.git.02d097c7c673.an8.src.rpm 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 BUILD/linux-4.19.91-210.git.02d097c7c673.an8.aarch64/tools/testing/selftests/ cd cpufreq/ make make install ./main.sh 【环境信息】 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# uname -r 4.19.91-210.git.02d097c7c673.an8.aarch64 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# cat /etc/redhat- cat: /etc/redhat-: No such file or directory [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# cat /etc/redhat-release Anolis OS release 8.6 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.5G 0 7.5G 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs 7.6G 608K 7.6G 1% /run tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup /dev/vda2 39G 33G 4.1G 90% / /dev/vda1 500M 6.8M 494M 2% /boot/efi tmpfs 1.6G 0 1.6G 0% /run/user/0 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# free -g total used free shared buff/cache available Mem: 15 0 9 0 5 14 Swap: 0 0 0 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# cat /proc/cmdline BOOT_IMAGE=(hd0,gpt2)/boot/vmlinuz-4.19.91-210.git.02d097c7c673.an8.aarch64 root=UUID=69f901e7-05b1-40ca-bff0-947d6f410fe7 ro cryptomgr.notests cgroup.memory=nokmem rcupdate.rcu_cpu_stall_timeout=300 vring_force_dma_api rhgb quiet console=tty0 biosdevname=0 net.ifnames=0 console=ttyAMA0,115200n8 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per cluster: 4 Socket(s): 1 Cluster(s): 1 NUMA node(s): 1 Vendor ID: ARM BIOS Vendor ID: Alibaba Cloud Model: 1 Model name: Neoverse-N1 BIOS Model name: virt-rhel7.6.0 Stepping: r3p1 BogoMIPS: 50.00 NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs 【出现频率】 必现 【测试报错】 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# ./main.sh pid 1288305's current affinity mask: f pid 1288305's new affinity mask: 1 [root@qibo-anolis8-nightly-func-arm-1 cpufreq]# echo $? 2 【定位分析】 调试了下测试代码发现是/sys/devices/system/cpu/ 下面对应cpu下不存在cpufreq ----------------------------- + source cpu.sh ++ '[' ']' ++ FILE_CPU=DONE ++ source cpufreq.sh +++ '[' ']' +++ FILE_CPUFREQ=DONE +++ source cpu.sh ++++ '[' DONE ']' ++++ return 0 + source cpufreq.sh ++ '[' DONE ']' ++ return 0 + source governor.sh ++ '[' ']' ++ FILE_GOVERNOR=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ CUR_GOV= ++ CUR_FREQ= + source module.sh ++ '[' ']' ++ FILE_MODULE=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ source governor.sh +++ '[' DONE ']' +++ return 0 + source special-tests.sh ++ '[' ']' ++ FILE_SPECIAL=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ source governor.sh +++ '[' DONE ']' +++ return 0 + FUNC=basic + OUTFILE=cpufreq_selftest + SYSFS= + CPUROOT= + CPUFREQROOT= + ksft_skip=4 + parse_arguments + getopts ht:o:d:g: arg + prerequisite + msg='skip all tests:' + '[' 0 '!=' 0 ']' + taskset -p 01 1288327 pid 1288327's current affinity mask: f pid 1288327's new affinity mask: 1 ++ mount -t sysfs ++ head -1 ++ awk '{ print $3 }' + SYSFS=/sys + '[' '!' -d /sys ']' + CPUROOT=/sys/devices/system/cpu + CPUFREQROOT=/sys/devices/system/cpu/cpufreq + ls /sys/devices/system/cpu/cpu0 /sys/devices/system/cpu/cpu1 /sys/devices/system/cpu/cpu2 /sys/devices/system/cpu/cpu3 /sys/devices/system/cpu/cpufreq /sys/devices/system/cpu/cpuidle + ls /sys/devices/system/cpu/cpufreq + clear_dumps cpufreq_selftest + echo '' + echo '' + echo '' + do_test ++ count_cpufreq_managed_cpus ++ count=0 +++ ls /sys/devices/system/cpu +++ grep 'cpu[0-9].*' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu0/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu1/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu2/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu3/cpufreq ']' ++ echo 0 + count=0 + '[' 0 = 0 -a basic '!=' modtest ']' + echo 'No cpu is managed by cpufreq core, exiting' + exit 2
Anolis7 4.19 aarch64有同样问题 selftests: cpufreq: main.sh pid 16135's current affinity mask: f pid 16135's new affinity mask: 1 not ok 1..1 selftests: cpufreq: main.sh [FAIL] # uname -r 4.19.91-260.git.98e6929.an7.aarch64 # lscpu Architecture: aarch64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Model: 1 BogoMIPS: 50.00 NUMA node0 CPU(s): 0-3 Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs
Anolis8 4.19 x86_64社区nightly有同样问题: # ./main.sh pid 807236's current affinity mask: f pid 807236's new affinity mask: 1 # echo $? 2 # uname -r 4.19.91-264.git.c452e2d70d27.an8.x86_64 # cat /etc/os-release NAME="Anolis OS" VERSION="8.6" ID="anolis" ID_LIKE="rhel fedora centos" VERSION_ID="8.6" PLATFORM_ID="platform:an8" PRETTY_NAME="Anolis OS 8.6" ANSI_COLOR="0;31" HOME_URL="https://openanolis.cn/" # lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 2 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel BIOS Vendor ID: Alibaba Cloud CPU family: 6 Model: 106 Model name: Intel(R) Xeon(R) Platinum 8369B CPU @ 2.70GHz BIOS Model name: pc-i440fx-2.1 Stepping: 6 CPU MHz: 2699.998 BogoMIPS: 5399.99 Hypervisor vendor: KVM Virtualization type: full L1d cache: 48K L1i cache: 32K L2 cache: 1280K L3 cache: 49152K NUMA node0 CPU(s): 0-3 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves wbnoinvd arat avx512vbmi pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm arch_capabilities
在Anolis23 x86虚拟机环境下,社区的nightly kernel-tests测试该case也有同样的问题 ------------------------ [root@qibo-anolis23-nightly-func-x86-1 cpufreq]# ./main.sh + source cpu.sh ++ '[' ']' ++ FILE_CPU=DONE ++ source cpufreq.sh +++ '[' ']' +++ FILE_CPUFREQ=DONE +++ source cpu.sh ++++ '[' DONE ']' ++++ return 0 + source cpufreq.sh ++ '[' DONE ']' ++ return 0 + source governor.sh ++ '[' ']' ++ FILE_GOVERNOR=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ CUR_GOV= ++ CUR_FREQ= + source module.sh ++ '[' ']' ++ FILE_MODULE=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ source governor.sh +++ '[' DONE ']' +++ return 0 + source special-tests.sh ++ '[' ']' ++ FILE_SPECIAL=DONE ++ source cpu.sh +++ '[' DONE ']' +++ return 0 ++ source cpufreq.sh +++ '[' DONE ']' +++ return 0 ++ source governor.sh +++ '[' DONE ']' +++ return 0 + FUNC=basic + OUTFILE=cpufreq_selftest + SYSFS= + CPUROOT= + CPUFREQROOT= + ksft_skip=4 + parse_arguments + getopts ht:o:d:g: arg + prerequisite + msg='skip all tests:' + '[' 0 '!=' 0 ']' + taskset -p 01 2685870 pid 2685870's current affinity mask: f pid 2685870's new affinity mask: 1 ++ awk '{ print $3 }' ++ head -1 ++ mount -t sysfs + SYSFS=/sys + '[' '!' -d /sys ']' + CPUROOT=/sys/devices/system/cpu + CPUFREQROOT=/sys/devices/system/cpu/cpufreq + ls /sys/devices/system/cpu/cpu0 /sys/devices/system/cpu/cpu1 /sys/devices/system/cpu/cpu2 /sys/devices/system/cpu/cpu3 /sys/devices/system/cpu/cpufreq /sys/devices/system/cpu/cpuidle + ls /sys/devices/system/cpu/cpufreq + clear_dumps cpufreq_selftest + echo '' + echo '' + echo '' + do_test ++ count_cpufreq_managed_cpus ++ count=0 +++ grep 'cpu[0-9].*' +++ ls /sys/devices/system/cpu ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu0/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu1/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu2/cpufreq ']' ++ for cpu in `ls $CPUROOT | grep "cpu[0-9].*"` ++ '[' -d /sys/devices/system/cpu/cpu3/cpufreq ']' ++ echo 0 + count=0 + '[' 0 = 0 -a basic '!=' modtest ']' + echo 'No cpu is managed by cpufreq core, exiting' + exit 2 [root@qibo-anolis23-nightly-func-x86-1 cpufreq]# uname -r 5.10.134-1.git.2ed1510fd4be.an23.x86_64 [root@qibo-anolis23-nightly-func-x86-1 cpufreq]# cat /etc/anolis-release Anolis OS release 23 #内部aone:29090441 开发同学给过的回复是“虚拟机没有透传 ACP特性, VM 无法加载 acpi_cpufreq.ko, 无法动态调频”