[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <9a6499d1-c459-44d0-bace-338af9f119dc@oss.qualcomm.com>
Date: Wed, 8 Oct 2025 00:51:20 +0530
From: Hrishabh Rajput <hrishabh.rajput@....qualcomm.com>
To: Konrad Dybcio <konrad.dybcio@....qualcomm.com>,
Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konradybcio@...nel.org>,
Wim Van Sebroeck <wim@...ux-watchdog.org>,
Guenter Roeck
<linux@...ck-us.net>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
Cc: linux-arm-msm@...r.kernel.org, linux-watchdog@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
Pavan Kondeti <pavan.kondeti@....qualcomm.com>,
Neil Armstrong <neil.armstrong@...aro.org>
Subject: Re: [PATCH v2] watchdog: Add driver for Gunyah Watchdog
On 10/6/2025 7:17 PM, Konrad Dybcio wrote:
> On 10/6/25 9:37 AM, Hrishabh Rajput via B4 Relay wrote:
>> From: Hrishabh Rajput<hrishabh.rajput@....qualcomm.com>
>>
>> On Qualcomm SoCs running under the Gunyah hypervisor, access to watchdog
>> through MMIO is not available on all platforms. Depending on the
>> hypervisor configuration, the watchdog is either fully emulated or
>> exposed via ARM's SMC Calling Conventions (SMCCC) through the Vendor
>> Specific Hypervisor Service Calls space.
>>
>> When Gunyah is not present or Gunyah emulates MMIO-based watchdog, we
>> expect MMIO watchdog device to be present in the devicetree. If we
>> detect this device node, we don't proceed ahead. Otherwise, we go ahead
>> and invoke GUNYAH_WDT_STATUS SMC to initiate the discovery of the
>> SMC-based watchdog.
>>
>> Add driver to support the SMC-based watchdog provided by the Gunyah
>> Hypervisor. module_exit() is intentionally not implemented as this
>> driver is intended to be a persistent module.
>>
>> Signed-off-by: Hrishabh Rajput<hrishabh.rajput@....qualcomm.com>
>> ---
> [...]
>
>> +enum gunyah_error {
>> + GUNYAH_ERROR_OK = 0,
>> + GUNYAH_ERROR_UNIMPLEMENTED = -1,
>> + GUNYAH_ERROR_RETRY = -2,
>> +
>> + GUNYAH_ERROR_ARG_INVAL = 1,
>> + GUNYAH_ERROR_ARG_SIZE = 2,
>> + GUNYAH_ERROR_ARG_ALIGN = 3,
>> +
>> + GUNYAH_ERROR_NOMEM = 10,
>> +
>> + GUNYAH_ERROR_ADDR_OVFL = 20,
>> + GUNYAH_ERROR_ADDR_UNFL = 21,
>> + GUNYAH_ERROR_ADDR_INVAL = 22,
>> +
>> + GUNYAH_ERROR_DENIED = 30,
>> + GUNYAH_ERROR_BUSY = 31,
>> + GUNYAH_ERROR_IDLE = 32,
>> +
>> + GUNYAH_ERROR_IRQ_BOUND = 40,
>> + GUNYAH_ERROR_IRQ_UNBOUND = 41,
>> +
>> + GUNYAH_ERROR_CSPACE_CAP_NULL = 50,
>> + GUNYAH_ERROR_CSPACE_CAP_REVOKED = 51,
>> + GUNYAH_ERROR_CSPACE_WRONG_OBJ_TYPE = 52,
>> + GUNYAH_ERROR_CSPACE_INSUF_RIGHTS = 53,
>> + GUNYAH_ERROR_CSPACE_FULL = 54,
>> +
>> + GUNYAH_ERROR_MSGQUEUE_EMPTY = 60,
>> + GUNYAH_ERROR_MSGQUEUE_FULL = 61,
>> +};
> Can the calls we make in this driver produce all of these errors?
>
> I'm asking only because we want to minimize the footprint
Agreed. Thanks for pointing this out. It is better to not include the
errors which aren't produced here in this driver. The excluded errors
can be added later and the whole thing can be moved to gunyah_errno.h
when other drivers are introduced.
I just checked, in this driver only the following errors can be
produced: GUNYAH_ERROR_OK, GUNYAH_ERROR_ARG_INVAL and
GUNYAH_ERROR_UNIMPLEMENTED. I will remove the rest.
Thanks,
Hrishabh
Powered by blists - more mailing lists