Messages in this thread |  | | From | Pavankumar Kondeti <> | | Subject | [PATCH RESEND v8 0/2] Add support for Gunyah Watchdog | | Date | Wed, 11 Mar 2026 11:16:29 +0530 |
| |
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.
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> Signed-off-by: Pavankumar Kondeti <pavan.kondeti@oss.qualcomm.com> --- Changes in v8 (RESEND): - Since Hrishabh has left Qualcomm, I am resending it after rebase. - Link to v8: https://lore.kernel.org/r/20251118-gunyah_watchdog-v8-0-e5de12e2eef5@oss.qualcomm.com
Changes in v8: - Fix error handling in gunyah_wdt_probe() to fail silently with -ENODEV if WDT_STATUS call returns -EOPNOTSUPP, indicating support for Gunyah watchdog is not present. Fail with logs for other errors. - Link to v7: https://lore.kernel.org/r/20251114-gunyah_watchdog-v7-0-f5c155b941d5@oss.qualcomm.com
Changes in v7: - Convert local `const` arrays to `static const` to optimize initialization and stack allocation. - Link to v6: https://lore.kernel.org/r/20251112-gunyah_watchdog-v6-0-38ad01f8dac0@oss.qualcomm.com
Changes in v6: - Fix build issues reported by the kernel test robot on PowerPC and RISC-V architectures by adding IS_ENABLED(CONFIG_HAVE_ARM_SMCCC_DISCOVERY) check before calling arm_smccc_hypervisor_has_uuid(). - Link to v5: https://lore.kernel.org/r/20251107-gunyah_watchdog-v5-0-4c6e3fb6eb17@oss.qualcomm.com
Changes in v5: - Move the gunyah_wdt device registration from the SMEM driver to the SCM driver. Add additional logic to check if we're running under the Gunyah Hypervisor. - Implement .remove() for gunyah_wdt driver to make it not persistent. - Link to v4: https://lore.kernel.org/r/20251031-gunyah_watchdog-v4-0-7abb1ee11315@oss.qualcomm.com
Changes in v4: - Move the contents of gunyah_wdt_init() to qcom_smem_probe() to make sure we're registering the watchdog only on the Qualcomm devices. - Link to v3: https://lore.kernel.org/r/20251028-gunyah_watchdog-v3-1-e6d1ea438b1d@oss.qualcomm.com
Changes in v3: - Move back to platform driver model. In module init, determine if we're running on a Qualcomm device and there is no supported memory-mapped watchdog present. Then proceed to register platform device and driver for SMC-based Gunyah watchdog. - To determine if we're running on a Qualcomm device we're checking the presence of "qcom,smem" compatible devicetree node. As an alternative, we also tried using socinfo for the same purpose. When both gunyah_wdt and socinfo drivers were made built-in, it couldn't be ensured that the socinfo driver probed successfully before gunyah_wdt init was called. Hence, we resorted to the devicetree node approach. - Limit the errors listed in gunyah_error to the ones that can be produced by the driver. - Link to v2: https://lore.kernel.org/r/20251006-gunyah_watchdog-v2-1-b99d41d45450@oss.qualcomm.com
Changes in v2: - Move away from platform driver model since the devicetree overlay does not happen by default. See https://lore.kernel.org/all/91002189-9d9e-48a2-8424-c42705fed3f8@quicinc.com/ - Only when MMIO-based watchdog device is absent in the devicetree, proceed to detect SMC-based watchdog using GUNYAH_WDT_STATUS SMC and initialize if SMC returns success. - Implement pm notifiers as gunyah_wdt is no longer a platform driver so dev_pm_ops cannot be used. - Pretimeout IRQ is no longer supported. - Remove struct gunyah_wdt since it is not required. - Move the contents of gunyah_errno.h to gunyah_wdt.c. - Link to v1: https://lore.kernel.org/r/20250903-gunyah_watchdog-v1-0-3ae690530e4b@oss.qualcomm.com
--- Hrishabh Rajput (2): firmware: qcom: scm: Register gunyah watchdog device watchdog: Add driver for Gunyah Watchdog
MAINTAINERS | 1 + drivers/firmware/qcom/qcom_scm.c | 53 ++++++++ drivers/watchdog/Kconfig | 13 ++ drivers/watchdog/Makefile | 1 + drivers/watchdog/gunyah_wdt.c | 261 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 329 insertions(+) --- base-commit: 1f318b96cc84d7c2ab792fcc0bfd42a7ca890681 change-id: 20250903-gunyah_watchdog-2d2649438e29
Best regards, -- Pavankumar Kondeti <pavan.kondeti@oss.qualcomm.com>
|  |