Hi Alexandre,
Thanks for your promptly response, I try to remove all HTML links and
resend the email again to avoid the security scanner to disrupt the
external link. Hope you can see this email without problems.
On 2024/5/3 8:20 PM, Joseph Jang wrote:
On 02/05/2024 18:41:02-0700, Joseph Jang wrote:
> Some platforms do not support WAKEUP service by default, we use a shell
> script to check the absence of alarm content in /proc/driver/rtc.
procfs for the RTC has been deprecated for a while, don't use it.
Instead, you can use the RTC_PARAM_GET ioctl to get RTC_PARAM_FEATURES
and then look at RTC_FEATURE_ALARM.
I found old version kernel doesn't support RTC_PARAM_GET ioctl. In order
support old version kernel testing, is it possible to use rtc procfs to
validate wakealarm function for old version kernel ?
Can I move this rtc alarm validation to
<linux_root>/tools/testing/selftests/rtc/rtctest.c ? So, we could try to
use RTC_PARAM_GET ioctl first and then roll back to use rtc procfs if
new RTC_PARAM_GET ioctl was not supported.
Thank you,
Joseph
>
> The script will validate /proc/driver/rtc when it is not empty and then
> check if could find alarm content in it according to the rtc wakealarm
> is supported or not.
>
> Requires commit 101ca8d05913b ("rtc: efi: Enable SET/GET WAKEUP services
> as optional")
>
> Reviewed-by: Matthew R. Ochs <mochs@xxxxxxxxxx>
> Signed-off-by: Joseph Jang <jjang@xxxxxxxxxx>
> ---
> tools/testing/selftests/Makefile | 1 +
> tools/testing/selftests/rtc/property/Makefile | 5 ++++
> .../selftests/rtc/property/rtc-alarm-test.sh | 27 +++++++++++++++++++
> 3 files changed, 33 insertions(+)
> create mode 100644 tools/testing/selftests/rtc/property/Makefile
> create mode 100755 tools/testing/selftests/rtc/property/rtc-alarm-test.sh
>
> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
> index e1504833654d..f5d43e2132e8 100644
> --- a/tools/testing/selftests/Makefile
> +++ b/tools/testing/selftests/Makefile
> @@ -80,6 +80,7 @@ TARGETS += riscv
> TARGETS += rlimits
> TARGETS += rseq
> TARGETS += rtc
> +TARGETS += rtc/property
> TARGETS += rust
> TARGETS += seccomp
> TARGETS += sgx
> diff --git a/tools/testing/selftests/rtc/property/Makefile
b/tools/testing/selftests/rtc/property/Makefile
> new file mode 100644
> index 000000000000..c6f7aa4f0e29
> --- /dev/null
> +++ b/tools/testing/selftests/rtc/property/Makefile
> @@ -0,0 +1,5 @@
> +# SPDX-License-Identifier: GPL-2.0
> +TEST_PROGS := rtc-alarm-test.sh
> +
> +include ../../lib.mk
> +
> diff --git a/tools/testing/selftests/rtc/property/rtc-alarm-test.sh
b/tools/testing/selftests/rtc/property/rtc-alarm-test.sh
> new file mode 100755
> index 000000000000..3bee1dd5fbd0
> --- /dev/null
> +++ b/tools/testing/selftests/rtc/property/rtc-alarm-test.sh
> @@ -0,0 +1,27 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +
> +if [ ! -f /proc/driver/rtc ]; then
> + echo "SKIP: the /proc/driver/rtc is empty."
> + exit 4
> +fi
> +
> +# Check if could find alarm content in /proc/driver/rtc according to
> +# the rtc wakealarm is supported or not.
> +if [ -n "$(ls /sys/class/rtc/rtc* | grep -i wakealarm)" ]; then
> + if [ -n "$(grep -i alarm /proc/driver/rtc)" ]; then
> + exit 0
> + else
> + echo "ERROR: The alarm content is not found."
> + cat /proc/driver/rtc
> + exit 1
> + fi
> +else
> + if [ -n "$(grep -i alarm /proc/driver/rtc)" ]; then
> + echo "ERROR: The alarm content is found."
> + cat /proc/driver/rtc
> + exit 1
> + else
> + exit 0
> + fi
> +fi
> --
> 2.34.1
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering