lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5e1bbb3a-547a-40a0-975b-81802ac036b5@linaro.org>
Date: Wed, 20 Dec 2023 14:13:12 +0100
From: Konrad Dybcio <konrad.dybcio@...aro.org>
To: Johan Hovold <johan@...nel.org>
Cc: Bjorn Andersson <andersson@...nel.org>, Andy Gross <agross@...nel.org>,
 Michael Turquette <mturquette@...libre.com>, Stephen Boyd
 <sboyd@...nel.org>, Rob Herring <robh+dt@...nel.org>,
 Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
 Conor Dooley <conor+dt@...nel.org>,
 Marijn Suijten <marijn.suijten@...ainline.org>,
 linux-arm-msm@...r.kernel.org, linux-clk@...r.kernel.org,
 linux-kernel@...r.kernel.org, devicetree@...r.kernel.org
Subject: Re: [PATCH v3 04/15] clk: qcom: gcc-sm6375: Add runtime PM

On 20.12.2023 13:48, Johan Hovold wrote:
> On Wed, Dec 20, 2023 at 01:26:55PM +0100, Konrad Dybcio wrote:
>> On 20.12.2023 10:26, Johan Hovold wrote:
>>> On Wed, Dec 20, 2023 at 01:30:45AM +0100, Konrad Dybcio wrote:
>>>> The GCC block on SM6375 is powered by the VDD_CX rail. We need to ensure
>>>> that CX is enabled to prevent unwanted power collapse 
>>>
>>> As I pointed out earlier, this bit of the commit message is incorrect
>>> and misleading as the power domain will never be disabled until you
>>> enable runtime PM as part of this very patch:
>>>
>>> 	https://lore.kernel.org/all/ZLaSpFFBzP_Yz5yY@hovoldconsulting.com/
>>>
>>> Specifically, genpd will not power off CX (at runtime) while the driver
>>> is bound when runtime PM is left disabled.
> 
>> OK I only now see what you really meant.
>>
>> What this bit says is true, but it may be confusing within the context
>> of this patch.
> 
> I'd say it's misleading since it suggests that something can currently
> cause an "unwanted power collapse" which is not the case.
> 
>> The CX domain must be turned on [for the SoC to function], however this
>> patch does not solve the issue of it being powered down [like you've said
>> just binding the PD will keep it always-active for RPM-disabled devices].
>> It complements this process, by allowing it to shut down when unnecessary.
> 
> Right, so just skip the misleading bits about "unwanted power collapse".
> 
>>>> and that the
>>>> reference is dropped when unused so that the system can enter a
>>>> firmware-managed lower power state.
>>>>
>>>> Enable runtime PM to keep the power flowing only when necessary.
>>>
>>> The rest is correct.
> 
>> Let me try to reword this and see if you like it:
>>
>>
>> The GCC block on SM6375 is powered by the VDD_CX rail. The Device Tree
>> description of this dependency lets Linux keep the rail online to prevent
>> power outages. It is however undesirable to keep it enabled at all times,
>> as that consumes additional power.
> 
> I'd skip or rephrase the second sentence myself.
>  
>> Moreover, failing to drop the "enabled" vote prevents firmware-managed,
>> SoC-wide power collapse in suspend, which leads to even more wasted power.
> 
> However if this is what you meant by "firmware-managed lower power
> state" then this is not correct either. genpd will still power off the
> power domain during system suspend, regardless of whether a driver
> implements runtime PM.
Hm, right, I'm confusing runtime and system suspend in this message..

> 
>> Enable runtime PM to keep the power flowing only when necessary.
> 
> So I'm starting to question whether we need this at all. AFAIK CX is
> never going to be disabled at runtime and this patch is not needed to
> disable CX during system suspend.
After a bit of reconsideration, I think it would still be useful in
rare circumstances, i.e. when all of the peripherals are runtime
suspended, but at least one consumer that doesn't depend on GCC isn't
(some remote procs, venus on some platforms).

Remoteprocs actually directly tap into RPM/RPMh themselves, so that
may not be necessary, but with Venus I'm not sure.. Then again, running
Venus without e.g. GCC-dependent storage seems counter-intuitive.

Then I suppose adding RPM to GCC may not be necessary after all (at
least on platforms that don't use any different collapsible power
domains).. As opposed to disp/gpu/whatever_cc which usually come with
either a different domain, or a hefty required-opp and aren't required
to be on 24/7


One last concern I have is, AFAICU currently CX is assumed by Linux
to be the parent domain of all GDSCs within GCC (which is not true,
but that's a separate topic). Can the PM core cope with properly
dropping CX votes that are propagated up the chain?

i.e. take this excerpt from sc8280xp.dtsi:

// usb_0: usb@...8800
power-domains = <&gcc USB30_PRIM_GDSC>;
required-opps = <&rpmhpd_opp_nom>;

will runtime suspending USB drop the NOM (val = 256) vote from CX
if runtime PM is disabled for GCC? I may be totally mixing up
genpd, OPP and RPM, but to my defense it's not particularly hard
to do so :D

Konrad

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ