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

Li Wang
2022-04-28T13:27:28Z

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