diff mbox series

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

Message ID 20220428132656.11075-2-liwang@redhat.com
State Superseded
Headers show
Series fix some bugs in rct02 | expand

Commit Message

Li Wang April 28, 2022, 1:26 p.m. UTC
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(-)

Comments

Cyril Hrubis April 29, 2022, 11:07 a.m. UTC | #1
Hi!
> 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)");
> +		}

I wonder if there is a different way how to figure out setting RTC is
not supported, this may potentionaly mask away a breakage in a driver
that is supposed to be able to set time like this.

>  		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
> 
> 
> -- 
> Mailing list info: https://lists.linux.it/listinfo/ltp
Li Wang April 29, 2022, 11:12 a.m. UTC | #2
On Fri, Apr 29, 2022 at 7:05 PM Cyril Hrubis <chrubis@suse.cz> wrote:


>
> I wonder if there is a different way how to figure out setting RTC is
> not supported, this may potentionaly mask away a breakage in a driver
> that is supposed to be able to set time like this.
>

Yes, that is what I really hope to know as well.

Not sure if Hiroyuki Yasuhara (already on CC list) can provide more info
here.
diff mbox series

Patch

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 = {