From: Etienne CARRIERE - foss <etienne.carriere@foss.st.com>
To: Sudeep Holla <sudeep.holla@arm.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Cristian Marussi" <cristian.marussi@arm.com>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>,
"arm-scmi@vger.kernel.org" <arm-scmi@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Subject: Re: [PATCH v2 2/2] firmware: arm_scmi: round rate bisecting in discrete rates
Date: Mon, 9 Dec 2024 12:59:58 +0000 [thread overview]
Message-ID: <ed164b6704ab4086b2fb22ae51658f31@foss.st.com> (raw)
In-Reply-To: <Z1bKlOeHJFHpe9ZU@bogus>
Hello Sudeep,
On Monday, December 9, 2024 11:46 AM, Sudeep Holla wrote:
> On Tue, Dec 03, 2024 at 06:39:08PM +0100, Etienne Carriere wrote:
> > Implement clock round_rate operation for SCMI clocks that describe a
> > discrete rates list. Bisect into the supported rates when using SCMI
> > message CLOCK_DESCRIBE_RATES to optimize SCMI communication transfers.
>
> Let me stop here and try to understand the requirement here. So you do
> communicate with the firmware to arrive at this round_rate ? Does the
> list of discreet clock rates changes at the run-time that enables the
> need for it. Or will the initial list just include max and min ?
I don't expect the list to change at run-time. The initial list is
expected to describe all supported rates. But because this list may
be big, I don't think arm_scmi/clock.c driver should store the full list
of all supported rates for each of the SCMI clocks. It would cost to
much memory. Therefore I propose to query it at runtime, when
needed, and bisect to lower the number of required transactions
between the agent and the firmware.
>
> > Parse the rate list array when the target rate fit in the bounds
> > of the command response for simplicity.
> >
>
> I don't understand what you mean by this.
I meant here that we bisect into supported rates when communicating
with the firmware but once the firmware response provides list portion
when target rate fits into, we just scan into that array instead of bisecting
into. We could also bisect into that array but it is likely quite small
(<128 byte in existing SCMI transport drivers) and that would add a bit
more code for no much gain IMHO.
>
> > If so some reason the sequence fails or if the SCMI driver has no
> > round_rate SCMI clock handler, then fallback to the legacy strategy that
> > returned the target rate value.
> >
>
> Hmm, so we perform some extra dance but we are okay to fallback to default.
> I am more confused.
Here, I propose to preserve the exiting sequence in clk/clk-scmi.c in case
arm_scmi/clock.c does not implement this new round_rate SCMI clock
operation (it can be the case if these 2 drivers are .ko modules, not
well known built-in drivers).
>
> > Operation handle scmi_clk_determine_rate() is change to get the effective
> > supported rounded rate when there is no clock re-parenting operation
> > supported. Otherwise, preserve the implementation that assumed any
> > clock rate could be obtained.
> >
>
> OK, no I think I am getting some idea. Is this case where the parent has
> changed and the describe rates can give a different result at run-time.
This does not deal with whether parent has changed or not. I would expect
the same request sent multiple times to provide the very same result. But
as I said above, I don't think arm_scmi/clock.c should consume a possibly
large array of memory to store all supported rate each of the SCMI clocks
(that describe discrete rates).
An alternate way could be to add an SCMI Clock protocol command in the
spec allowing agent to query a closest supported rate, in 1 shot. Maybe
this new command could return both rounded rate and the SCMI parent
clock needed to reach that rounded rate, better fitting clk_determine_rate()
expectations.
>
> I need to re-read the part of the spec, but we may need some clarity so
> that this implementation is not vendor specific. I am yet to understand this
> fully. I just need to make sure spec covers this aspect and anything we
> add here is generic solution.
>
> I would like to avoid this extra query if not required which you seem to
> have made an attempt but I just want to be thorough and make sure that's
> what we need w.r.t the specification.
Sure, I indeed prefer clear and robust implementation in the long term,
being the one I propose here or another one.
Regards,
Etienne
>
> --
> Regards,
> Sudeep
>
next prev parent reply other threads:[~2024-12-09 13:21 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-03 17:39 [PATCH v2 0/2] firmware: arm_scmi: unbound discrete rates, support round rate Etienne Carriere
2024-12-03 17:39 ` [PATCH v2 1/2] firmware: arm_scmi: get only min/max clock rates Etienne Carriere
2024-12-09 10:33 ` Sudeep Holla
2024-12-09 13:48 ` Etienne CARRIERE - foss
2024-12-09 18:01 ` Cristian Marussi
2024-12-10 10:58 ` Etienne CARRIERE - foss
2024-12-03 17:39 ` [PATCH v2 2/2] firmware: arm_scmi: round rate bisecting in discrete rates Etienne Carriere
2024-12-06 20:28 ` Dan Carpenter
2024-12-09 8:16 ` Etienne CARRIERE - foss
2024-12-09 9:12 ` Dan Carpenter
2024-12-09 10:46 ` Sudeep Holla
2024-12-09 12:59 ` Etienne CARRIERE - foss [this message]
2024-12-09 17:12 ` Sudeep Holla
2024-12-10 10:52 ` Etienne CARRIERE - foss
2024-12-13 11:24 ` Etienne CARRIERE - foss
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=ed164b6704ab4086b2fb22ae51658f31@foss.st.com \
--to=etienne.carriere@foss.st.com \
--cc=arm-scmi@vger.kernel.org \
--cc=cristian.marussi@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mturquette@baylibre.com \
--cc=sboyd@kernel.org \
--cc=sudeep.holla@arm.com \
/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;
as well as URLs for NNTP newsgroup(s).