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@nvidia.com Signed-off-by: Joseph Jang jjang@nvidia.com
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