On 9/4/2025 5:40 AM, Rob Herring wrote:
On Wed, Sep 03, 2025 at 07:33:58PM +0000, Hrishabh Rajput wrote:
Gunyah is a Type-I hypervisor which was introduced in the patch series
[1]. It is an open source hypervisor. The source repo is available at
[2].
The Gunyah Hypervisor doesn't allow its Virtual Machines to directly
access the MMIO watchdog. It either provides the fully emulated MMIO
based watchdog interface or the SMC-based watchdog interface depending
on the hypervisor configuration.
EFI provides a standard watchdog interface. Why can't you use that?
I need to explore about EFI watchdog. But Gunyah Hypervisor does provide
various interfaces for watchdog including fully emulated watchdog.
There are Qualcomm SoCs in the market that ship with SMC-based watchdog
interface configuration of the Gunyah Hypervisor. The purpose of this
patch to add support for that configuration.
The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC)
version 1.1 and uses Vendor Specific Hypervisor Service Calls space.
Is a watchdog really a hypervisor service? Couldn't a non-virtualized
OS want to call a watchdog (in secure mode) as well? But I don't know
how the SMCCC call space is divided up...
Sure, a non-virtualized OS could directly access the watchdog.
Hypervisor needs to interfere when there are multiple virtual machines
running simultaneously and we only have a single watchdog device.
This patch series adds support for the SMC-based watchdog interface
provided by the Gunyah Hypervisor. The driver supports start/stop
operations, timeout and pretimeout configuration, pretimeout interrupt
handling and system restart via watchdog.
Shouldn't system restart be handled by PSCI?
By "system restart via watchdog" I meant the restart routine in the
watchdog_ops struct. And I've kept the watchdog restart priority to the
lowest i.e., 0, so it will be used a last resort.
Why can't you probe by trying to see if watchdog smc call succeeds to
see if there is a watchdog? Then you don't need DT for it.
Rob
We could do that for checking if SMC-based watchdog interface is
supported, but DT provides an additional information about the
pretimeout IRQ.
And there is no way to get that information apart from the DT.
Thanks,
Hrishabh