[LTP] [PATCH 1/3] rtc02: skip test with unsupport set RTC platform

Li Wang liwang@redhat.com
Thu Apr 28 15:26:54 CEST 2022


Some hardware(e.g. Fujisu FX700) does not provides a feature to set the
RTC clock, thus test failed with EINVAL from ioctl(RTC_SET_TIME).

  tst_test.c:1431: TINFO: Timeout per run is 0h 05m 00s
  rtc02.c:66: TINFO: To set RTC date/time is: 2020-10-09 13:23:30
  rtc02.c:70: TFAIL: ioctl() RTC_SET_TIME: EINVAL (22)
  tst_rtctime.c:116: TWARN: open(/dev/rtc,0,7020) failed: EBUSY (16)
  tst_wallclock.c:117: TWARN: tst_rtc_settime() realtime failed: EBADF (9)

Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Hiroyuki Yasuhara <hyasuhar@redhat.com>
---
 testcases/kernel/device-drivers/rtc/rtc02.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/testcases/kernel/device-drivers/rtc/rtc02.c b/testcases/kernel/device-drivers/rtc/rtc02.c
index ef83aad89..8484a0074 100644
--- a/testcases/kernel/device-drivers/rtc/rtc02.c
+++ b/testcases/kernel/device-drivers/rtc/rtc02.c
@@ -22,6 +22,7 @@
 #include "tst_wallclock.h"
 #include "tst_test.h"
 
+static int rtc_unsupport;
 static char *rtc_dev = "/dev/rtc";
 
 static char *rtctime_to_str(struct rtc_time *tm)
@@ -67,6 +68,10 @@ static void set_rtc_test(void)
 
 	ret = tst_rtc_settime(rtc_dev, &set_tm);
 	if (ret != 0) {
+		if (errno == EINVAL) {
+			rtc_unsupport = 1;
+			tst_brk(TCONF, "RTC may not support be set via ioctl(RTC_SET_TIME)");
+		}
 		tst_res(TFAIL | TERRNO, "ioctl() RTC_SET_TIME");
 		return;
 	}
@@ -99,7 +104,8 @@ static void rtc_setup(void)
 
 static void rtc_cleanup(void)
 {
-	tst_rtc_clock_restore(rtc_dev);
+	if (!rtc_unsupport)
+		tst_rtc_clock_restore(rtc_dev);
 }
 
 static struct tst_test test = {
-- 
2.35.1



More information about the ltp mailing list