From: Sudeep Holla <sudeep.holla@arm.com>
To: Cristian Marussi <cristian.marussi@arm.com>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>,
Stephen Boyd <sboyd@kernel.org>,
Sudeep Holla <sudeep.holla@arm.com>,
Nikunj Kela <nkela@quicinc.com>,
Prasad Sodagudi <psodagud@quicinc.com>,
Alexandre Torgue <alexandre.torgue@foss.st.com>,
linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 10/11] firmware: arm_scmi: Add the SCMI performance domain
Date: Wed, 19 Jul 2023 16:59:20 +0100 [thread overview]
Message-ID: <20230719155920.iuu2ue2co535dfkx@bogus> (raw)
In-Reply-To: <ZLf4c7ejFBJLH7iN@e120937-lin>
On Wed, Jul 19, 2023 at 03:51:45PM +0100, Cristian Marussi wrote:
> On Thu, Jul 13, 2023 at 04:17:37PM +0200, Ulf Hansson wrote:
[...]
> > + scmi_pd_data = devm_kzalloc(dev, sizeof(*scmi_pd_data), GFP_KERNEL);
> > + if (!scmi_pd_data)
> > + return -ENOMEM;
> > +
> > + domains = devm_kcalloc(dev, num_domains, sizeof(*domains), GFP_KERNEL);
> > + if (!domains)
> > + return -ENOMEM;
> > +
> > + for (i = 0; i < num_domains; i++, scmi_pd++) {
> > + scmi_pd->info = perf_ops->domain_info_get(ph, i);
>
> So here you are grabbing all the performance domains exposed by the
> platform via PERF protocol and then a few lines down below you are
> registering them with pm_genpd_init(), but the list of domains obtained
> from the platform will contain NOT only devices but also CPUs possibly,
> already managed by the SCMI CPUFreq driver.
>
Agreed, I pointed out briefly in the previous patch I think. I am not sure
how will that work if the performance and power domains are not 1-1 mapping
or if they are CPUs then this might confusing ? Not sure but looks like
we might be creating a spaghetti here :(.
> In fact the SCMI CPUFreq driver, on his side, takes care to pick only
> domains that are bound in the DT to a CPU (via scmi_cpu_domain_id DT
> parsing) but here you are registering all domains with GenPD upfront.
>
+1
> Is it not possible that, once registered, GenPD can decide, at some point
> in the future, to try act on some of these domains associated with a CPU ?
IIRC, all unused genpd are turned off right. It may not impact here but still
super confusing as we will be creating power domains for the set of domains
actually advertised as power domains by the firmware. This will add another
set.
> (like Clock framework does at the end of boot trying to disable unused
> clocks...not familiar with internals of GenPD, though)
>
Ah, I am reading too much serialised. Just agreed and wrote the same above.
> > + scmi_pd->domain_id = i;
> > + scmi_pd->perf_ops = perf_ops;
> > + scmi_pd->ph = ph;
> > + scmi_pd->genpd.name = scmi_pd->info->name;
> > + scmi_pd->genpd.flags = GENPD_FLAG_OPP_TABLE_FW;
> > + scmi_pd->genpd.set_performance_state = scmi_pd_set_perf_state;
> > +
> > + ret = perf_ops->level_get(ph, i, &perf_level, false);
> > + if (ret) {
> > + dev_dbg(dev, "Failed to get perf level for %s",
> > + scmi_pd->genpd.name);
> > + perf_level = 0;
> > + }
> > +
> > + /* Let the perf level indicate the power-state too. */
> > + ret = pm_genpd_init(&scmi_pd->genpd, NULL, perf_level == 0);
>
> In SCMI world PERF levels should have nothing to do with the Power
> state of a domain: you have the POWER protocol for that, so you should
> not assume that perf level 0 means OFF, but you can use the POWER protocol
> operation .state_get() to lookup the power state. (and you can grab both
> perf and power ops from the same driver)
>
> The tricky part would be to match the PERF domain at hand with the
> related POWER domain to query the state for, I suppose.
>
I wanted to ask the same. E.g. on juno, GPU has perf domain 2 and power domain
9. It would be good if we can how it would work there ? What is expected
from the gpu driver in terms of managing perf and power ? Does it need
to specify 2 power domains now and specify which is perf and which power in
its bindings ?
> Indeed, recently, while looking at SCMI v3.2 PERF evolutions, I was
> tempted to just start rejecting any level_set() or set_freq() request
> for ZERO since they really can be abused to power off a domain. (if the
> platform complies...)
>
Good point I need to dig the spec before I can comment on this.
--
Regards,
Sudeep
next prev parent reply other threads:[~2023-07-19 15:59 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-13 14:17 [PATCH v2 00/11] arm_scmi/cpufreq: Add generic performance scaling support Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 01/11] firmware: arm_scmi: Extend perf protocol ops to get number of domains Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 02/11] firmware: arm_scmi: Extend perf protocol ops to get information of a domain Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 03/11] cpufreq: scmi: Prepare to move OF parsing of domain-id to cpufreq Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 04/11] firmware: arm_scmi: Align perf ops to use domain-id as in-parameter Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 05/11] firmware: arm_scmi: Drop redundant ->device_domain_id() from perf ops Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 06/11] cpufreq: scmi: Avoid one OF parsing in scmi_get_sharing_cpus() Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 07/11] PM: domains: Allow genpd providers to manage OPP tables directly by its FW Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 08/11] dt-bindings: firmware: arm,scmi: Extend bindings for protocol@13 Ulf Hansson
2023-07-19 15:17 ` Sudeep Holla
2023-07-21 11:42 ` Ulf Hansson
2023-07-21 11:55 ` Sudeep Holla
2023-07-21 14:33 ` Rob Herring
2023-07-21 18:38 ` Sudeep Holla
2023-07-26 11:12 ` Ulf Hansson
2023-08-21 14:32 ` Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 09/11] cpufreq: scmi: Add support to parse domain-id using #power-domain-cells Ulf Hansson
2023-07-19 15:24 ` Sudeep Holla
2023-07-21 11:52 ` Ulf Hansson
2023-07-21 11:59 ` Sudeep Holla
2023-07-26 11:31 ` Ulf Hansson
2023-07-21 14:37 ` Rob Herring
2023-07-26 11:20 ` Ulf Hansson
2023-08-21 14:23 ` Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 10/11] firmware: arm_scmi: Add the SCMI performance domain Ulf Hansson
2023-07-19 14:51 ` Cristian Marussi
2023-07-19 15:59 ` Sudeep Holla [this message]
2023-07-26 12:01 ` Ulf Hansson
2023-07-21 15:19 ` Ulf Hansson
2023-07-26 15:13 ` Cristian Marussi
2023-07-27 11:37 ` Ulf Hansson
2023-07-13 14:17 ` [PATCH v2 11/11] cpufreq: scmi: Drop redundant ifdef in scmi_cpufreq_probe() Ulf Hansson
2023-07-19 15:32 ` Sudeep Holla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230719155920.iuu2ue2co535dfkx@bogus \
--to=sudeep.holla@arm.com \
--cc=alexandre.torgue@foss.st.com \
--cc=cristian.marussi@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=nkela@quicinc.com \
--cc=nm@ti.com \
--cc=psodagud@quicinc.com \
--cc=sboyd@kernel.org \
--cc=ulf.hansson@linaro.org \
--cc=vireshk@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox