[RFC PATCH 0/2] Add RISC-V SBI watchdog driver
Prajwal N
prajwal.n at oss.qualcomm.com
Fri Oct 2 09:37:56 PDT 2026
This series adds a driver for RISC-V SBI watchdog extension.
The SBI watchdog extension exposes watchdog including start,
stop, pat, read and write attributes to the S-mode software.
The kernel driver uses the standard SBI calls to interact and
configure the attributes. The driver integrates with the
kernel watchdog framework (/dev/watchdog) to ease user-space
implementations.
The driver currently subscribes to the Message Signaled
Interrupts (MSI) for watchdog pretimeout events.
The series consists of following changes:
- Patch 1 adds the definition for SBI watchdog extension ID,
function IDs, and various attributes that are supported by
the extension
- Patch 2 implements the kernel driver that utilizes standard
SBI calls to interact and configure the attributes.
This is based on the OpenSBI watchdog extension implementation
patch series available at:
Link: https://lore.kernel.org/opensbi/20261002083040.2533097-1-prajwal.n@oss.qualcomm.com
Steps to test the SBI watchdog extension
1) Compile the kernel along with watchdog kselftest for RISC-V.
2) Compile OpenSBI patch series mentioned earlier to generate fw_dynamic.bin
3) Launch QEMU virt machine with IMSIC support enabled.
Note: The following command requires a rootfs.cpio packed in Image. It can
be modified to use rootfs.ext2
$ qemu-system-riscv64 -M virt,aia=aplic-imsic -m 2G -smp 4 -nographic \
-bios fw_dynamic.bin -kernel Image -append "root=/dev/vda rw console=ttyS0"
4) On kernel boot-up, the /dev/watchdog entry should be available and the
kselftest binary (watchdog-test) can be used to test the functionality.
Following are some sample test cases,
- Dumps all the supported options.
./watchdog-test -h
- Starts the watchdog, configures the timeout to 8s, ping interval to 2s,
and disables the pretimeout.
./watchdog-test -t 8 -p 2 -n 0
- Starts the watchdog, configures the timeout to 8s, ping interval to 9s,
and disables the pretimeout.
./watchdog-test -t 8 -p 9 -n 0
- Starts the watchdog, configures the timeout to 8s, ping interval to 2s,
and configures the pretimeout to 6s before the timeout.
./watchdog-test -t 8 -p 3 -n 6
Changes in v1:
- Initial RFC submission
Prajwal N (2):
include: sbi_ecall_interface: Add defines for the RISC-V SBI watchdog
extension
drivers/watchdog: Add RISC-V SBI watchdog driver
arch/riscv/include/asm/sbi.h | 26 ++
drivers/watchdog/Kconfig | 9 +
drivers/watchdog/Makefile | 1 +
drivers/watchdog/riscv_sbi_wdt.c | 406 +++++++++++++++++++++++++++++++
4 files changed, 442 insertions(+)
create mode 100644 drivers/watchdog/riscv_sbi_wdt.c
--
2.43.0
More information about the linux-riscv
mailing list