[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <283e7a7d-c69b-4931-8e54-d473f0209abe@quicinc.com>
Date: Tue, 18 Nov 2025 12:16:10 +0530
From: Udit Tiwari <quic_utiwari@...cinc.com>
To: Konrad Dybcio <konrad.dybcio@....qualcomm.com>,
<herbert@...dor.apana.org.au>, <thara.gopinath@...il.com>,
<davem@...emloft.net>
CC: <linux-crypto@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <quic_neersoni@...cinc.com>,
"kernel test
robot" <lkp@...el.com>
Subject: Re: [PATCH v4] crypto: qce - Add runtime PM and interconnect
bandwidth scaling support
Hi Konrad,
Thanks for the review, please find my response inline.
On 11/17/2025 5:55 PM, Konrad Dybcio wrote:
> On 11/17/25 7:27 AM, quic_utiwari@...cinc.com wrote:
>> From: Udit Tiwari <quic_utiwari@...cinc.com>
>>
>> The Qualcomm Crypto Engine (QCE) driver currently lacks support for
>> runtime power management (PM) and interconnect bandwidth control.
>> As a result, the hardware remains fully powered and clocks stay
>> enabled even when the device is idle. Additionally, static
>> interconnect bandwidth votes are held indefinitely, preventing the
>> system from reclaiming unused bandwidth.
>>
>> Address this by enabling runtime PM and dynamic interconnect
>> bandwidth scaling to allow the system to suspend the device when idle
>> and scale interconnect usage based on actual demand. Improve overall
>> system efficiency by reducing power usage and optimizing interconnect
>> resource allocation.
>>
>> Make the following changes as part of this integration:
>>
>> - Add support for pm_runtime APIs to manage device power state
>> transitions.
>> - Implement runtime_suspend() and runtime_resume() callbacks to gate
>> clocks and vote for interconnect bandwidth only when needed.
>> - Replace devm_clk_get_optional_enabled() with devm_pm_clk_create() +
>> pm_clk_add() and let the PM core manage device clocks during runtime
>> PM and system sleep.
>> - Register dev_pm_ops with the platform driver to hook into the PM
>> framework.
>>
>> Tested:
>>
>> - Verify that ICC votes drop to zero after probe and upon request
>> completion.
>> - Confirm that runtime PM usage count increments during active
>> requests and decrements afterward.
>> - Observe that the device correctly enters the suspended state when
>> idle.
>>
>> Signed-off-by: Udit Tiwari <quic_utiwari@...cinc.com>
>> Reported-by: kernel test robot <lkp@...el.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202511160711.Q6ytYvlG-lkp@intel.com/
>> ---
>> Changes in v4:
>> - Annotate runtime PM callbacks with __maybe_unused to silence W=1 warnings.
>> - Add Reported-by and Closes tags for kernel test robot warning.
>
> The tags are now saying
>
> "The kernel test robot reported that the QCE driver does not have PM
> operations and this patch fixes that."
>
> Which doesn't have a reflection in reality.
>
> [...]
>
I may be misunderstanding this comment but the bot flagged W=1
unused-function warnings under !CONFIG_PM. In v4 I added __maybe_unused
and Reported-by/Closes for that exact warning; I didn’t mean to imply
the driver lacks PM ops.
>> +/* PM clock helpers: register device clocks */
>
> Missing \t
>
sure will fix it in v5 with other suggestions after my responses.
>> + ret = devm_pm_clk_create(dev);
>> + if (ret)
>> + return ret;
>>
>> - qce->iface = devm_clk_get_optional_enabled(qce->dev, "iface");
>> - if (IS_ERR(qce->iface))
>> - return PTR_ERR(qce->iface);
>> + ret = pm_clk_add(dev, "core");
>> + if (ret)
>> + return ret;
>>
>> - qce->bus = devm_clk_get_optional_enabled(qce->dev, "bus");
>> - if (IS_ERR(qce->bus))
>> - return PTR_ERR(qce->bus);
>> + ret = pm_clk_add(dev, "iface");
>> + if (ret)
>> + return ret;
>>
>> - qce->mem_path = devm_of_icc_get(qce->dev, "memory");
>> + ret = pm_clk_add(dev, "bus");
>> + if (ret)
>> + return ret;
>
> Not all SoC have a pair of clocks. This is going to break those who don't
>
> Konrad
On the concern that not all SoCs have "core/iface/bus" clocks and that
this could break those platforms: i believe the PM clock helpers are
tolerant of missing clock entries. If a clock is not described in DT,
pm_clk_add will not cause the probe to fail, also on such platforms,
runtime/system PM will simply not toggle that clock.
I’ve tested this on sc7280 where the QCE node has no clock entries, and
the driver probes and operates correctly; runtime PM and interconnect
behavior are as expected.
If you’d like this handled in a specific way, please let me know—I’m
happy to implement that approach.
Udit
Powered by blists - more mailing lists