Hello,
On 08/11/2022 15:17:04+0530, Naresh Kamboju wrote:
kselftest rtctests failed on arm64 Raspberry Pi 4 Model B device and
passed on other devices and qemu emulators. Please refer to the
full logs and test comparison results links.
It seems your board doesn't have an rtc at all, the tests will not run
unless you add one.
You can try the following patch:
From e93ddc7046aba97b39b0ceffc53ebf1f10ad9868 Mon Sep 17 00:00:00 2001
From: Alexandre Belloni alexandre.belloni@bootlin.com
Date: Tue, 8 Nov 2022 22:18:55 +0100
Subject: [PATCH] selftests: rtc: skip when RTC is not present
There is not point in failing the tests when there the RTC is not present,
simply skip the test.
Signed-off-by: Alexandre Belloni alexandre.belloni@bootlin.com
---
tools/testing/selftests/rtc/rtctest.c | 33 ++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/rtc/rtctest.c b/tools/testing/selftests/rtc/rtctest.c
index 2b9d929a24ed..63ce02d1d5cc 100644
--- a/tools/testing/selftests/rtc/rtctest.c
+++ b/tools/testing/selftests/rtc/rtctest.c
@@ -31,7 +31,6 @@ FIXTURE(rtc) {
FIXTURE_SETUP(rtc) {
self->fd = open(rtc_file, O_RDONLY);
- ASSERT_NE(-1, self->fd);
}
FIXTURE_TEARDOWN(rtc) {
@@ -42,6 +41,10 @@ TEST_F(rtc, date_read) {
int rc;
struct rtc_time rtc_tm;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
/* Read the RTC time/date */
rc = ioctl(self->fd, RTC_RD_TIME, &rtc_tm);
ASSERT_NE(-1, rc);
@@ -85,6 +88,10 @@ TEST_F_TIMEOUT(rtc, date_read_loop, READ_LOOP_DURATION_SEC + 2) {
struct rtc_time rtc_tm;
time_t start_rtc_read, prev_rtc_read;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
TH_LOG("Continuously reading RTC time for %ds (with %dms breaks after every read).",
READ_LOOP_DURATION_SEC, READ_LOOP_SLEEP_MS);
@@ -119,6 +126,10 @@ TEST_F_TIMEOUT(rtc, uie_read, NUM_UIE + 2) {
int i, rc, irq = 0;
unsigned long data;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
/* Turn on update interrupts */
rc = ioctl(self->fd, RTC_UIE_ON, 0);
if (rc == -1) {
@@ -144,6 +155,10 @@ TEST_F(rtc, uie_select) {
int i, rc, irq = 0;
unsigned long data;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
/* Turn on update interrupts */
rc = ioctl(self->fd, RTC_UIE_ON, 0);
if (rc == -1) {
@@ -183,6 +198,10 @@ TEST_F(rtc, alarm_alm_set) {
time_t secs, new;
int rc;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
ASSERT_NE(-1, rc);
@@ -237,6 +256,10 @@ TEST_F(rtc, alarm_wkalm_set) {
time_t secs, new;
int rc;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
rc = ioctl(self->fd, RTC_RD_TIME, &alarm.time);
ASSERT_NE(-1, rc);
@@ -285,6 +308,10 @@ TEST_F_TIMEOUT(rtc, alarm_alm_set_minute, 65) {
time_t secs, new;
int rc;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
ASSERT_NE(-1, rc);
@@ -339,6 +366,10 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) {
time_t secs, new;
int rc;
+ if (self->fd == -1 && errno == ENOENT)
+ SKIP(return, "Skipping test since %s does not exist", rtc_file);
+ ASSERT_NE(-1, self->fd);
+
rc = ioctl(self->fd, RTC_RD_TIME, &alarm.time);
ASSERT_NE(-1, rc);
--
2.38.1
>
> Reported-by: Linux Kernel Functional Testing
lkft@linaro.org
>
> Test run log:
> -------------
>
> [ 248.627989] kselftest: Running tests in rtc
> TAP version 13
> 1..1
> # selftests: rtc: rtctest
> [ 249.116824] audit: type=1701 audit(1651167970.071:12):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2818 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.133837] audit: type=1701 audit(1651167970.079:13):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2819 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.151179] audit: type=1701 audit(1651167970.083:14):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2820 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.168401] audit: type=1701 audit(1651167970.091:15):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2821 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.185406] audit: type=1701 audit(1651167970.095:16):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2822 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.202343] audit: type=1701 audit(1651167970.103:17):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2823 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> #[ 249.219262] audit: type=1701 audit(1651167970.111:18):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2824 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> [ 249.236233] audit: type=1701 audit(1651167970.115:19):
> auid=4294967295 uid=0 gid=0 ses=4294967295 pid=2825 comm="rtctest"
> exe="/opt/kselftests/default-in-kernel/rtc/rtctest" sig=6 res=1
> TAP version 13
> # 1..8
> # # Starting 8 tests from 2 test cases.
> # # RUN rtc.date_read ...
> # # rtctest.c:34:date_read:Expected -1 (-1) != self->fd (-1)
> # # date_read: Test terminated by assertion
> # # FAIL rtc.date_read
> # not ok 1 rtc.date_read
> # # RUN rtc.date_read_loop ...
> # # rtctest.c:34:date_read_loop:Expected -1 (-1) != self->fd (-1)
> # # date_read_loop: Test terminated by assertion
> # # FAIL rtc.date_read_loop
> # not ok 2 rtc.date_read_loop
> # # RUN rtc.uie_read ...
> # # rtctest.c:34:uie_read:Expected -1 (-1) != self->fd (-1)
> # # uie_read: Test terminated by assertion
> # # FAIL rtc.uie_read
> # not ok 3 rtc.uie_read
> # # RUN rtc.uie_select ...
> # # rtctest.c:34:uie_select:Expected -1 (-1) != self->fd (-1)
> # # uie_select: Test terminated by assertion
> # # FAIL rtc.uie_select
> # not ok 4 rtc.uie_select
> # # RUN rtc.alarm_alm_set ...
> # # rtctest.c:34:alarm_alm_set:Expected -1 (-1) != self->fd (-1)
> # # alarm_alm_set: Test terminated by assertion
> # # FAIL rtc.alarm_alm_set
> # not ok 5 rtc.alarm_alm_set
> # # RUN rtc.alarm_wkalm_set ...
> # # rtctest.c:34:alarm_wkalm_set:Expected -1 (-1) != self->fd (-1)
> # # alarm_wkalm_set: Test terminated by assertion
> # # FAIL rtc.alarm_wkalm_set
> # not ok 6 rtc.alarm_wkalm_set
> # # RUN rtc.alarm_alm_set_minute ...
> # # rtctest.c:34:alarm_alm_set_minute:Expected -1 (-1) != self->fd (-1)
> # # alarm_alm_set_minute: Test terminated by assertion
> # # FAIL rtc.alarm_alm_set_minute
> # not ok 7 rtc.alarm_alm_set_minute
> # # RUN rtc.alarm_wkalm_set_minute ...
> # # rtctest.c:34:alarm_wkalm_set_minute:Expected -1 (-1) != self->fd (-1)
> # # alarm_wkalm_set_minute: Test terminated by assertion
> # # FAIL rtc.alarm_wkalm_set_minute
> # not ok 8 rtc.alarm_wkalm_set_minute
> # # FAILED: 0 / 8 tests passed.
> # # Totals: pass:0 fail:8 xfail:0 xpass:0 skip:0 error:0
> not ok 1 selftests: rtc: rtctest # exit=1
>
> Test results details,
>
https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20221107/tes...
>
> Test results compare,
>
https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20221107/tes...
>
> Test detailed log,
>
https://lkft.validation.linaro.org/scheduler/job/5812742#L1759
>
> metadata:
> git_ref: master
> git_repo:
https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
> git_sha: d8e87774068af213ab5b058b1b114dc397b577aa
> git_describe: next-20221107
> kernel_version: 6.1.0-rc3
> kernel-config:
https://builds.tuxbuild.com/2HChVOSNxUpvfAfLTnaK7zyTdUi/config
> build-url:
https://gitlab.com/Linaro/lkft/mirrors/next/linux-next/-/pipelines/687092361
> artifact-location:
https://builds.tuxbuild.com/2HChVOSNxUpvfAfLTnaK7zyTdUi
> toolchain: gcc-11
>
>
> --
> Linaro QA
>
https://qa-reports.linaro.org
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com