All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephan Gerhold <stephan@gerhold.net>
To: Konrad Dybcio <konrad.dybcio@linaro.org>
Cc: Andy Gross <agross@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Georgi Djakov <djakov@kernel.org>, Leo Yan <leo.yan@linaro.org>,
	Evan Green <evgreen@chromium.org>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-clk@vger.kernel.org, linux-pm@vger.kernel.org,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Subject: Re: [PATCH v2 19/22] interconnect: qcom: icc-rpm: Fix bucket number
Date: Sat, 10 Jun 2023 19:46:25 +0200	[thread overview]
Message-ID: <ZIS28eN1JEuXV2AT@gerhold.net> (raw)
In-Reply-To: <20230526-topic-smd_icc-v2-19-e5934b07d813@linaro.org>

On Fri, Jun 09, 2023 at 10:19:24PM +0200, Konrad Dybcio wrote:
> SMD RPM only provides two buckets, one each for the active-only and
> active-sleep RPM contexts. Use the correct constant to allocate and
> operate on them.
> 
> Fixes: dcbce7b0a79c ("interconnect: qcom: icc-rpm: Support multiple buckets")
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  drivers/interconnect/qcom/icc-rpm.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c
> index 6d40815c5401..3ac47b818afe 100644
> --- a/drivers/interconnect/qcom/icc-rpm.c
> +++ b/drivers/interconnect/qcom/icc-rpm.c
> [...]
> @@ -275,7 +275,7 @@ static int qcom_icc_bw_aggregate(struct icc_node *node, u32 tag, u32 avg_bw,
>  	if (!tag)
>  		tag = QCOM_ICC_TAG_ALWAYS;
>  
> -	for (i = 0; i < QCOM_ICC_NUM_BUCKETS; i++) {
> +	for (i = 0; i < QCOM_SMD_RPM_STATE_NUM; i++) {
>  		if (tag & BIT(i)) {

Hm, I think QCOM_ICC_NUM_BUCKETS is actually intentional here. There is
a hint about this in the description of the commit in your Fixes line:

> This patch studies the implementation from interconnect rpmh driver to
> support multiple buckets.  The rpmh driver provides three buckets for
> AMC, WAKE, and SLEEP; this driver only needs to use WAKE and SLEEP
> buckets, but we keep the same way with rpmh driver, this can allow us
> to reuse the DT binding and avoid to define duplicated data structures.

As far as I understand, the idea was to reuse the definitions in
qcom,icc.h and just ignore the AMC bucket for now. AFAIU AMC (or rather
the lack thereof) is basically caching: Sending requests without AMC bit
set is delayed until the next rpmh_flush() call that happens when
entering a deep idle state. It requires some work but I guess
theoretically one could implement exactly the same for RPM.

What you're actually doing here is not fixing the commit but changing
the bindings. On MSM8909 I defined the ICC path for CPU<->RAM like this:

	interconnects = <&bimc MAS_APPS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
			 &bimc SLV_EBI QCOM_ICC_TAG_ACTIVE_ONLY>;

Per definition in qcom,icc.h:

	QCOM_ICC_TAG_ACTIVE_ONLY = (AMC | WAKE) = (BIT(0) | BIT(1))

Without your patch series this behaves correctly. It results in an
active-only vote.

The change of behavior is in PATCH 17/22 "interconnect: qcom: icc-rpm:
Control bus rpmcc from icc". It silently switches from
QCOM_ICC_BUCKET_WAKE (1) and QCOM_ICC_BUCKET_SLEEP (2) to
QCOM_SMD_RPM_ACTIVE_STATE (0) and QCOM_SMD_RPM_SLEEP_STATE (1).

In other words, QCOM_ICC_TAG_ACTIVE_ONLY (BIT(0) | BIT(1)) now results
in an active+sleep vote, not an active-only one. :)

There doesn't seem to be an upstream user of the ICC tags/buckets for
icc-rpm yet so personally I would be fine with changing it. However,
then qcom,icc.h should get a clear comment that it's rpmh-only and we
should define a new qcom,icc-rpm.h.

Or perhaps we should just drop this patch and continue using
QCOM_ICC_BUCKET_WAKE and QCOM_ICC_BUCKET_SLEEP as before?

Thanks,
Stephan

  reply	other threads:[~2023-06-10 17:46 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-09 20:19 [PATCH v2 00/22] Restructure RPM SMD ICC Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 01/22] soc: qcom: smd-rpm: Add QCOM_SMD_RPM_STATE_NUM Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 02/22] soc: qcom: smd-rpm: Use tabs for defines Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 03/22] clk: qcom: smd-rpm: Move some RPM resources to the common header Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 04/22] clk: qcom: smd-rpm: Export clock scaling availability Konrad Dybcio
2023-06-10 11:35   ` Stephan Gerhold
2023-06-10 12:15     ` Konrad Dybcio
2023-06-10 18:53       ` Konrad Dybcio
2023-06-10 19:25         ` Stephan Gerhold
2023-06-10 19:39           ` Konrad Dybcio
2023-06-11  9:20             ` Stephan Gerhold
2023-06-12 12:51               ` Konrad Dybcio
2023-06-12 17:03                 ` Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 05/22] interconnect: qcom: icc-rpm: Introduce keep_alive Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 06/22] interconnect: qcom: icc-rpm: Allow negative QoS offset Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 07/22] interconnect: qcom: Fold smd-rpm.h into icc-rpm.h Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 08/22] interconnect: qcom: smd-rpm: Add rpmcc handling skeleton code Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 09/22] interconnect: qcom: Add missing headers in icc-rpm.h Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 10/22] interconnect: qcom: Define RPM bus clocks Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 11/22] interconnect: qcom: sdm660: Hook up RPM bus clk definitions Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 12/22] interconnect: qcom: msm8996: " Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 13/22] interconnect: qcom: qcs404: " Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 14/22] interconnect: qcom: msm8939: " Konrad Dybcio
2023-06-10 12:02   ` Stephan Gerhold
2023-06-09 20:19 ` [PATCH v2 15/22] interconnect: qcom: msm8916: " Konrad Dybcio
2023-06-10 12:02   ` Stephan Gerhold
2023-06-09 20:19 ` [PATCH v2 16/22] interconnect: qcom: qcm2290: " Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 17/22] interconnect: qcom: icc-rpm: Control bus rpmcc from icc Konrad Dybcio
2023-06-10 11:58   ` Stephan Gerhold
2023-06-10 12:14     ` Konrad Dybcio
2023-06-10 16:20       ` Stephan Gerhold
2023-06-10 17:54         ` Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 18/22] clk: qcom: smd-rpm: Separate out interconnect bus clocks Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 19/22] interconnect: qcom: icc-rpm: Fix bucket number Konrad Dybcio
2023-06-10 17:46   ` Stephan Gerhold [this message]
2023-06-10 17:53     ` Konrad Dybcio
2023-06-09 20:19 ` [PATCH v2 20/22] interconnect: qcom: icc-rpm: Set bandwidth on both contexts Konrad Dybcio
2023-06-10 18:00   ` Stephan Gerhold
2023-06-10 18:28     ` Konrad Dybcio
2023-06-10 18:43       ` Stephan Gerhold
2023-06-09 20:19 ` [PATCH v2 21/22] interconnect: qcom: icc-rpm: Set correct bandwidth through RPM bw req Konrad Dybcio
2023-06-10 18:46   ` Stephan Gerhold
2023-06-09 20:19 ` [PATCH v2 22/22] interconnect: qcom: icc-rpm: Fix bandwidth calculations Konrad Dybcio
2023-06-10 19:06   ` Stephan Gerhold
2023-06-10 19:09     ` Konrad Dybcio

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=ZIS28eN1JEuXV2AT@gerhold.net \
    --to=stephan@gerhold.net \
    --cc=agross@kernel.org \
    --cc=andersson@kernel.org \
    --cc=djakov@kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=evgreen@chromium.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=marijn.suijten@somainline.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.