.../bindings/watchdog/qcom,gh-watchdog.yaml | 76 ++++++ MAINTAINERS | 3 + drivers/watchdog/Kconfig | 13 + drivers/watchdog/Makefile | 1 + drivers/watchdog/gunyah_wdt.c | 268 +++++++++++++++++++++ include/linux/gunyah_errno.h | 77 ++++++ 6 files changed, 438 insertions(+)
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. The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC) version 1.1 and uses Vendor Specific Hypervisor Service Calls space. 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. This series is tested on SM8750 platform. [1] https://lore.kernel.org/all/20240222-gunyah-v17-0-1e9da6763d38@quicinc.com/ [2] https://github.com/quic/gunyah-hypervisor Signed-off-by: Hrishabh Rajput <hrishabh.rajput@oss.qualcomm.com> --- Hrishabh Rajput (2): dt-bindings: Add binding for gunyah watchdog watchdog: Add driver for Gunyah Watchdog .../bindings/watchdog/qcom,gh-watchdog.yaml | 76 ++++++ MAINTAINERS | 3 + drivers/watchdog/Kconfig | 13 + drivers/watchdog/Makefile | 1 + drivers/watchdog/gunyah_wdt.c | 268 +++++++++++++++++++++ include/linux/gunyah_errno.h | 77 ++++++ 6 files changed, 438 insertions(+) --- base-commit: 038d61fd642278bab63ee8ef722c50d10ab01e8f change-id: 20250903-gunyah_watchdog-2d2649438e29 Best regards, -- Hrishabh Rajput <hrishabh.rajput@oss.qualcomm.com>
On 03/09/2025 21:33, Hrishabh Rajput via B4 Relay 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. > The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC) > version 1.1 and uses Vendor Specific Hypervisor Service Calls space. > > 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. > > This series is tested on SM8750 platform. Would this driver work on older platforms like SM8550 & SM8650 ? Thanks, Neil > > [1] > https://lore.kernel.org/all/20240222-gunyah-v17-0-1e9da6763d38@quicinc.com/ > > [2] > https://github.com/quic/gunyah-hypervisor > > Signed-off-by: Hrishabh Rajput <hrishabh.rajput@oss.qualcomm.com> > --- > Hrishabh Rajput (2): > dt-bindings: Add binding for gunyah watchdog > watchdog: Add driver for Gunyah Watchdog > > .../bindings/watchdog/qcom,gh-watchdog.yaml | 76 ++++++ > MAINTAINERS | 3 + > drivers/watchdog/Kconfig | 13 + > drivers/watchdog/Makefile | 1 + > drivers/watchdog/gunyah_wdt.c | 268 +++++++++++++++++++++ > include/linux/gunyah_errno.h | 77 ++++++ > 6 files changed, 438 insertions(+) > --- > base-commit: 038d61fd642278bab63ee8ef722c50d10ab01e8f > change-id: 20250903-gunyah_watchdog-2d2649438e29 > > Best regards,
On Thu, Sep 04, 2025 at 09:13:23AM +0200, Neil Armstrong wrote: > On 03/09/2025 21:33, Hrishabh Rajput via B4 Relay 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. > > The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC) > > version 1.1 and uses Vendor Specific Hypervisor Service Calls space. > > > > 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. > > > > This series is tested on SM8750 platform. > > Would this driver work on older platforms like SM8550 & SM8650 ? > This driver should work on 8550 and 8650 too as long as the hypervisor overlay is applied to the device tree which happens in the bootloader. I remember porting some hypercalls to 8550 upstream kernel to induce the watchdog bite in panic to collect the dumps. one of the biggest benefit w/ this driver is that we can collect dumps upon kernel panic. since we won't be able to pet the watchdog upon panic, the bite would eventually happens and device enters dump collection mode. Thanks, Pavan
On Thu, Sep 04, 2025 at 02:48:03PM +0530, Pavan Kondeti wrote: > On Thu, Sep 04, 2025 at 09:13:23AM +0200, Neil Armstrong wrote: > > On 03/09/2025 21:33, Hrishabh Rajput via B4 Relay 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. > > > The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC) > > > version 1.1 and uses Vendor Specific Hypervisor Service Calls space. > > > > > > 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. > > > > > > This series is tested on SM8750 platform. > > > > Would this driver work on older platforms like SM8550 & SM8650 ? > > > > This driver should work on 8550 and 8650 too as long as the hypervisor > overlay is applied to the device tree which happens in the bootloader. > You have easy access to 8550 and 8650 MTP/QRD devices, please give us a definitive answer. Regards, Bjorn > I remember porting some hypercalls to 8550 upstream kernel to induce the > watchdog bite in panic to collect the dumps. one of the biggest benefit > w/ this driver is that we can collect dumps upon kernel panic. since we > won't be able to pet the watchdog upon panic, the bite would eventually > happens and device enters dump collection mode. > > Thanks, > Pavan
On Thu, Sep 04, 2025 at 08:53:14AM -0500, Bjorn Andersson wrote: > On Thu, Sep 04, 2025 at 02:48:03PM +0530, Pavan Kondeti wrote: > > On Thu, Sep 04, 2025 at 09:13:23AM +0200, Neil Armstrong wrote: > > > On 03/09/2025 21:33, Hrishabh Rajput via B4 Relay 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. > > > > The SMC-based watchdog follows ARM's SMC Calling Convention (SMCCC) > > > > version 1.1 and uses Vendor Specific Hypervisor Service Calls space. > > > > > > > > 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. > > > > > > > > This series is tested on SM8750 platform. > > > > > > Would this driver work on older platforms like SM8550 & SM8650 ? > > > > > > > This driver should work on 8550 and 8650 too as long as the hypervisor > > overlay is applied to the device tree which happens in the bootloader. > > > > You have easy access to 8550 and 8650 MTP/QRD devices, please give us a > definitive answer. > Thanks for asking this question. I believe the overlay part needs some discussion here. I have tried this series on 8550 MTP. The overlay failed, so watchdog device did not probe. same is the case with 8750 too. It works only after applying this patch. I will test and report my observation on 8650 later. diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 140b0b2abfb5..b200e8faa6df 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -1,4 +1,5 @@ # SPDX-License-Identifier: GPL-2.0 +DTC_FLAGS := -@ dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc.dtb apq8016-sbc-usb-host-dtbs := apq8016-sbc.dtb apq8016-sbc-usb-host.dtbo diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index eac8de4005d8..7536b1a4ec97 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -328,7 +328,7 @@ cluster_sleep_1: cluster-sleep-1 { }; firmware { - scm: scm { + scm: qcom_scm { compatible = "qcom,scm-sm8550", "qcom,scm"; qcom,dload-mode = <&tcsr 0x19000>; interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>; @@ -4855,6 +4855,9 @@ compute-cb@8 { }; }; }; + + qcom_tzlog: tz-log { + }; }; thermal-zones { @@ -5913,7 +5916,7 @@ trip-point2 { }; }; - timer { + arch_timer: timer { compatible = "arm,armv8-timer"; interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>, Thanks, Pavan
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? > 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... > 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? 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
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
On 9/4/25 2:10 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? The use of UEFI at Qualcomm is not exactly what you would expect.. > >> 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... Gunyah traps SMC calls and acts on a subset of them, passing others to TZ >> 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? I believe the author is trying to say that the watchdog is not configurable from Linux at present, and if the platform hangs, there are some indeterminate default settings in place > > 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. There apparently isn't a good way to tell from a running system whether Gunyah is present, unless you make a smc call (which could in theory be parsed by something else, say a different hypervisor..), but then this patch only introduces the watchdog interface, without all the cruft that would actually let us identify the hypervisor, get its version ID and perform sanity checks.. I would expect that Gunyah has the necessary provisions to inject its nodes as necessary, at least I recall there was some talk of it in early revisions of Elliot's aforementioned patches: https://lore.kernel.org/all/20220811214107.1074343-4-quic_eberman@quicinc.com/ Konrad
On Thu, Sep 4, 2025 at 6:31 AM Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote: > > On 9/4/25 2:10 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? > > The use of UEFI at Qualcomm is not exactly what you would expect.. > > > > >> 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... > > Gunyah traps SMC calls and acts on a subset of them, passing others > to TZ My question was just whether it's the right call space to use. I would think hypervisor calls would be things like "vm start" or "vm stop", not something which in theory could be implemented without a hypervisor in the middle. > >> 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? > > I believe the author is trying to say that the watchdog is not > configurable from Linux at present, and if the platform hangs, there > are some indeterminate default settings in place > > > > > 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. > > There apparently isn't a good way to tell from a running system whether > Gunyah is present, unless you make a smc call (which could in theory be > parsed by something else, say a different hypervisor..), but then this > patch only introduces the watchdog interface, without all the cruft that > would actually let us identify the hypervisor, get its version ID and > perform sanity checks.. IIRC, last time we got just a gunyah node. Now it's that plus a watchdog. What's next? I'm not really a fan of $soc_vendor hypervisor interfaces. I doubt anyone else is either. We have all sorts of standard interfaces already between virtio, vfio, EFI, SCMI, PSCI, etc. Can we please not abuse DT with $soc_vendor hypervisor devices. Rob
On Thu, Sep 04, 2025 at 05:51:24PM -0500, Rob Herring wrote: > > > > > > 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. > > > > There apparently isn't a good way to tell from a running system whether > > Gunyah is present, unless you make a smc call (which could in theory be > > parsed by something else, say a different hypervisor..), but then this > > patch only introduces the watchdog interface, without all the cruft that > > would actually let us identify the hypervisor, get its version ID and > > perform sanity checks.. > > IIRC, last time we got just a gunyah node. Now it's that plus a > watchdog. What's next? I'm not really a fan of $soc_vendor hypervisor > interfaces. I doubt anyone else is either. We have all sorts of > standard interfaces already between virtio, vfio, EFI, SCMI, PSCI, > etc. Can we please not abuse DT with $soc_vendor hypervisor devices. > We are trying to make the watchdog work with existing SoCs, so we are sticking with the existing interfaces. The newer devices will not necessarily need DT to probe hypervisor interfaces. To answer your question on why can't you probe watchdog smc call to see if there is a watchdog. Yes, we can do that. It is just that we won't be able to support pre-timeout IRQ. This IRQ is optional for watchdog functionality, so this is something we can explore. Thanks for the feedbck. Thanks, Pavan
On 9/5/25 2:00 AM, Pavan Kondeti wrote: > On Thu, Sep 04, 2025 at 05:51:24PM -0500, Rob Herring wrote: >>>> >>>> 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. >>> >>> There apparently isn't a good way to tell from a running system whether >>> Gunyah is present, unless you make a smc call (which could in theory be >>> parsed by something else, say a different hypervisor..), but then this >>> patch only introduces the watchdog interface, without all the cruft that >>> would actually let us identify the hypervisor, get its version ID and >>> perform sanity checks.. >> >> IIRC, last time we got just a gunyah node. Now it's that plus a >> watchdog. What's next? I'm not really a fan of $soc_vendor hypervisor >> interfaces. I doubt anyone else is either. We have all sorts of >> standard interfaces already between virtio, vfio, EFI, SCMI, PSCI, >> etc. Can we please not abuse DT with $soc_vendor hypervisor devices. >> > > We are trying to make the watchdog work with existing SoCs, so we are > sticking with the existing interfaces. The newer devices will not > necessarily need DT to probe hypervisor interfaces. > > To answer your question on why can't you probe watchdog smc call to see > if there is a watchdog. Yes, we can do that. It is just that we won't be > able to support pre-timeout IRQ. This IRQ is optional for watchdog > functionality, so this is something we can explore. FWIW Rob, we moved on to SBSA watchdog on newer Gunyah releases.. Which is not ideal as it's still over MMIO, but there's some progress I'm not a fan of including the hypervisor in the picture, but as Pavan said above, we're trying to squeeze the least amount of hacks necessary to get the most out of existing platforms (i.e. ones which will not get newer Gunyah). Perhaps we could extend the MSM KPSS watchdog driver (which pokes at the physical watchdog on the SoC and whose DT node represents "reality") and have it attempt to make the SMC call early during probe, making way for both physical and virt configurations without additional dt alterations.. Konrad
On Fri, Sep 05, 2025 at 12:18:06PM +0200, Konrad Dybcio wrote: > On 9/5/25 2:00 AM, Pavan Kondeti wrote: > > On Thu, Sep 04, 2025 at 05:51:24PM -0500, Rob Herring wrote: > >>>> > >>>> 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. > >>> > >>> There apparently isn't a good way to tell from a running system whether > >>> Gunyah is present, unless you make a smc call (which could in theory be > >>> parsed by something else, say a different hypervisor..), but then this > >>> patch only introduces the watchdog interface, without all the cruft that > >>> would actually let us identify the hypervisor, get its version ID and > >>> perform sanity checks.. > >> > >> IIRC, last time we got just a gunyah node. Now it's that plus a > >> watchdog. What's next? I'm not really a fan of $soc_vendor hypervisor > >> interfaces. I doubt anyone else is either. We have all sorts of > >> standard interfaces already between virtio, vfio, EFI, SCMI, PSCI, > >> etc. Can we please not abuse DT with $soc_vendor hypervisor devices. > >> > > > > We are trying to make the watchdog work with existing SoCs, so we are > > sticking with the existing interfaces. The newer devices will not > > necessarily need DT to probe hypervisor interfaces. > > > > To answer your question on why can't you probe watchdog smc call to see > > if there is a watchdog. Yes, we can do that. It is just that we won't be > > able to support pre-timeout IRQ. This IRQ is optional for watchdog > > functionality, so this is something we can explore. > > FWIW Rob, we moved on to SBSA watchdog on newer Gunyah releases.. > Which is not ideal as it's still over MMIO, but there's some > progress Gunyah running in Latest SoCs do support SoC watchdog emulation, so Linux does not need to worry about if it is running under Gunyah or bare metal. > > I'm not a fan of including the hypervisor in the picture, but as > Pavan said above, we're trying to squeeze the least amount of hacks > necessary to get the most out of existing platforms (i.e. ones which > will not get newer Gunyah). Thanks for enumerating our goal here. we plan to support watchdog (hence collecting dumps) on existing platform where Linux has only access to this SMCC interface. > > Perhaps we could extend the MSM KPSS watchdog driver (which pokes at > the physical watchdog on the SoC and whose DT node represents > "reality") and have it attempt to make the SMC call early during probe, > making way for both physical and virt configurations without additional > dt alterations.. > We have to be careful here. I am told that SMCC interface might not fail even when Gunyah is emulating SoC watchdog. We can do something like this. If we don't find "qcom,kpss-wdt" compatible device, then we can add a fallback to Gunyah based SMCC. Thanks, Pavan
On 9/8/25 7:49 AM, Pavan Kondeti wrote: > On Fri, Sep 05, 2025 at 12:18:06PM +0200, Konrad Dybcio wrote: >> On 9/5/25 2:00 AM, Pavan Kondeti wrote: >>> On Thu, Sep 04, 2025 at 05:51:24PM -0500, Rob Herring wrote: >>>>>> >>>>>> 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. >>>>> >>>>> There apparently isn't a good way to tell from a running system whether >>>>> Gunyah is present, unless you make a smc call (which could in theory be >>>>> parsed by something else, say a different hypervisor..), but then this >>>>> patch only introduces the watchdog interface, without all the cruft that >>>>> would actually let us identify the hypervisor, get its version ID and >>>>> perform sanity checks.. >>>> >>>> IIRC, last time we got just a gunyah node. Now it's that plus a >>>> watchdog. What's next? I'm not really a fan of $soc_vendor hypervisor >>>> interfaces. I doubt anyone else is either. We have all sorts of >>>> standard interfaces already between virtio, vfio, EFI, SCMI, PSCI, >>>> etc. Can we please not abuse DT with $soc_vendor hypervisor devices. >>>> >>> >>> We are trying to make the watchdog work with existing SoCs, so we are >>> sticking with the existing interfaces. The newer devices will not >>> necessarily need DT to probe hypervisor interfaces. >>> >>> To answer your question on why can't you probe watchdog smc call to see >>> if there is a watchdog. Yes, we can do that. It is just that we won't be >>> able to support pre-timeout IRQ. This IRQ is optional for watchdog >>> functionality, so this is something we can explore. >> >> FWIW Rob, we moved on to SBSA watchdog on newer Gunyah releases.. >> Which is not ideal as it's still over MMIO, but there's some >> progress > > Gunyah running in Latest SoCs do support SoC watchdog emulation, so > Linux does not need to worry about if it is running under Gunyah or bare > metal. > >> >> I'm not a fan of including the hypervisor in the picture, but as >> Pavan said above, we're trying to squeeze the least amount of hacks >> necessary to get the most out of existing platforms (i.e. ones which >> will not get newer Gunyah). > > Thanks for enumerating our goal here. we plan to support watchdog (hence > collecting dumps) on existing platform where Linux has only access to > this SMCC interface. I think you didn't explain it clearly - do we need the wdog to bite to enter crashdump at all on these platforms? > >> >> Perhaps we could extend the MSM KPSS watchdog driver (which pokes at >> the physical watchdog on the SoC and whose DT node represents >> "reality") and have it attempt to make the SMC call early during probe, >> making way for both physical and virt configurations without additional >> dt alterations.. >> > > We have to be careful here. I am told that SMCC interface might not fail > even when Gunyah is emulating SoC watchdog. We can do something like > this. "not failling when gunyah is emulating the watchdog" is sort of what we want, no? Unless you meant that if MMIO access is allowed, the SMC interface may still report no errors, even though the calls don't actually end up doing anything useful > > If we don't find "qcom,kpss-wdt" compatible device, then we can add a > fallback to Gunyah based SMCC. Matching on "not compatible" is tricky, especially since the arm64 kernel builds must support all platforms at once Konrad
© 2016 - 2025 Red Hat, Inc.