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. See https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/rtc-tools.git/tree/rtc.c > > 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 https://bootlin.com