Description of problem: kernel_selftests中rtc.rtctest用例执行失败 执行日志 TAP version 13 Running tests in rtc ======================================== selftests: rtc: rtctest rtctest.c:49:rtc.date_read:Current RTC date/time is 09/01/2023 13:58:53. rtctest.c:60:rtc.uie_read:skip update IRQs not supported. rtctest.c:85:rtc.uie_select:skip update IRQs not supported. rtctest.c:137:rtc.alarm_alm_set:Alarm time now set to 13:58:56. rtctest.c:141:rtc.alarm_alm_set:Expected -1 (18446744073709551615) != rc (18446744073709551615) [==========] Running 7 tests from 2 test cases. [ RUN ] rtc.date_read [ OK ] rtc.date_read [ RUN ] rtc.uie_read [ OK ] rtc.uie_read [ RUN ] rtc.uie_select [ OK ] rtc.uie_select [ RUN ] rtc.alarm_alm_set rtc.alarm_alm_set: Test terminated by assertion rtctest.c:185:rtc.alarm_wkalm_set:skip alarms are not supported. rtctest.c:239:rtc.alarm_alm_set_minute:Alarm time now set to 13:59:00. rtctest.c:243:rtc.alarm_alm_set_minute:Expected -1 (18446744073709551615) != rc (18446744073709551615) [==========] Running 7 tests from 2 test cases. [ RUN ] rtc.date_read [ OK ] rtc.date_read [ RUN ] rtc.uie_read [ OK ] rtc.uie_read [ RUN ] rtc.uie_select [ OK ] rtc.uie_select [ RUN ] rtc.alarm_alm_set [ FAIL ] rtc.alarm_alm_set [ RUN ] rtc.alarm_wkalm_set [ OK ] rtc.alarm_wkalm_set [ RUN ] rtc.alarm_alm_set_minute rtc.alarm_alm_set_minute: Test terminated by assertion rtctest.c:287:rtc.alarm_wkalm_set_minute:skip alarms are not supported. [==========] Running 7 tests from 2 test cases. [ RUN ] rtc.date_read [ OK ] rtc.date_read [ RUN ] rtc.uie_read [ OK ] rtc.uie_read [ RUN ] rtc.uie_select [ OK ] rtc.uie_select [ RUN ] rtc.alarm_alm_set [ FAIL ] rtc.alarm_alm_set [ RUN ] rtc.alarm_wkalm_set [ OK ] rtc.alarm_wkalm_set [ RUN ] rtc.alarm_alm_set_minute [ FAIL ] rtc.alarm_alm_set_minute [ RUN ] rtc.alarm_wkalm_set_minute [ OK ] rtc.alarm_wkalm_set_minute [==========] 5 / 7 tests passed. [ FAILED ] not ok 1..1 selftests: rtc: rtctest [FAIL] Steps to Reproduce: 下载当前内核 对应的kernel*src.rpm, rpm -ivh kernel*.src.rpm which yum-builddep || yum install -y yum-utils which rpmbuild || yum install -y rpm-build yum-builddep -y $rpmbuild_dir/SPECS/kernel.spec rpmbuild -bp $rpmbuild_dir/SPECS/kernel.spec cd /root/rpmbuild/BUILD/kernel*/linux*/tools/testing/selftests/rtc ./rtctest Actual results: 用例执行通过 Expected results: 用例执行失败 Additional info: # uname -r 4.19.91-253.git.e680634.an7.aarch64 # cat /etc/os-release NAME="Anolis OS" VERSION="7.9" ID="anolis" ID_LIKE="rhel fedora centos" VERSION_ID="7.9" PRETTY_NAME="Anolis OS 7.9" ANSI_COLOR="0;31" HOME_URL="https://openanolis.cn/" BUG_REPORT_URL="https://bugs.openanolis.cn/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7" # free -g total used free shared buff/cache available Mem: 14 0 13 0 0 14 Swap: 0 0 0 # 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
内部alinux3 arm上有同样问题,已知问题 结论:看了下目前ARM上的EFI RTC不支持alarm_irq_enable()接口,导致在设置alarm时,不能通过使能中断并通过中断通知,所以set alarm测试会失败。 而x86的cmos RTC是支持alarm_irq_enable()接口,所以alarm set测试会通过。 目前看EFI RTC的设计是符合预期的,并且目前没有场景需要设置RTC alarm来唤醒系统的。