From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Adam Ford" <aford173@gmail.com>,
linux-mediatek@lists.infradead.org,
"Michael Turquette" <mturquette@baylibre.com>,
"Stephen Boyd" <sboyd@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"Liam Girdwood" <lgirdwood@gmail.com>,
"Mark Brown" <broonie@kernel.org>,
"Laura Nao" <laura.nao@collabora.com>,
"Nícolas F. R. A. Prado" <nfraprado@collabora.com>,
linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH 1/5] pmdomain: mediatek: Fix power domain count
Date: Thu, 12 Mar 2026 13:46:40 +0100 [thread overview]
Message-ID: <108e6fad-401c-427a-bc30-8ddd00bd93a5@collabora.com> (raw)
In-Reply-To: <CAPDyKFqbS+PUkLXkjoHjbiVFCYM4FxQeHdJk_LVVfLA5nGEZ-A@mail.gmail.com>
Il 11/03/26 18:29, Ulf Hansson ha scritto:
> On Fri, 6 Mar 2026 at 10:50, AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Il 12/02/26 12:34, Ulf Hansson ha scritto:
>>> On Tue, 10 Feb 2026 at 06:40, Adam Ford <aford173@gmail.com> wrote:
>>>>
>>>> The wrong value of the number of domains is wrong which leads to
>>>> failures when trying to enumerate nested power domains.
>>>>
>>>> PM: genpd_xlate_onecell: invalid domain index 0
>>>> PM: genpd_xlate_onecell: invalid domain index 1
>>>> PM: genpd_xlate_onecell: invalid domain index 3
>>>> PM: genpd_xlate_onecell: invalid domain index 4
>>>> PM: genpd_xlate_onecell: invalid domain index 5
>>>> PM: genpd_xlate_onecell: invalid domain index 13
>>>> PM: genpd_xlate_onecell: invalid domain index 14
>>>>
>>>> Attempts to use these power domains fail, so fix this by
>>>> using the correct value of calculated power domains.
>>>>
>>>> Signed-off-by: Adam Ford <aford173@gmail.com>
>>>
>>> We should have a fixes tag for this too I think:
>>>
>>> Fixes: 88914db077b6 ("pmdomain: mediatek: Add support for Hardware
>>> Voter power domains")
>>>
>>>
>>>> ---
>>>> drivers/pmdomain/mediatek/mtk-pm-domains.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/pmdomain/mediatek/mtk-pm-domains.c b/drivers/pmdomain/mediatek/mtk-pm-domains.c
>>>> index 58648f4f689b..d2b8d0332951 100644
>>>> --- a/drivers/pmdomain/mediatek/mtk-pm-domains.c
>>>> +++ b/drivers/pmdomain/mediatek/mtk-pm-domains.c
>>>> @@ -1228,7 +1228,7 @@ static int scpsys_probe(struct platform_device *pdev)
>>>> scpsys->soc_data = soc;
>>>>
>>>> scpsys->pd_data.domains = scpsys->domains;
>>>> - scpsys->pd_data.num_domains = soc->num_domains;
>>>> + scpsys->pd_data.num_domains = num_domains;
>>>
>>> Not sure this is the complete fix, as scpsys_add_one_domain() seems to
>>> be using the wrong value of "num_domains" too, no?
>>>
>>
>> No, scpsys_add_one_domain() uses num_domains from the soc_data for DIRECT_CTL,
>> which is expected. Maybe that can be improved, but it's how it is supposed to work.
>>
>> So yeah, this patch is resolving an issue, and it is a complete fix.
>
> I had a closer look and unfortunately, it still looks weird to me.
>
> More precisely, we are allocating and registering a number of genpds,
> that corresponds to the sum of "soc->num_domains +
> soc->num_hwv_domains". The index each genpd gets in the array (struct
> genpd_onecell_data) must correspond to the index specified in DT, for
> both a consumer-node and a child-domain-node, right?
>
> It seems like adding them dynamically changes the index. In other
> words, the index specified using the "reg" property in a
> child-domain-node, may not match what a consumer-node should specify
> in its "power-domains" property. Isn't that a problem? Perhaps not,
> because we never have both "scpsys_domain_data" and
> "scpsys_hwv_domain_data", but then why are we adding them in ->probe()
> with "soc->num_domains + soc->num_hwv_domains"?
>
As you understood, having both is not really supported right now, and the
intention there was to have the flexibility to do so without restructuring
the entire thing in the future.
Though, from what I understand, the confusion comes from a single line (and
reading it again, I do agree, because I got confused myself for a moment as
well, and I'm the one who wrote this, so that's bad bad bad):
num_domains = soc->num_domains + soc->num_hwv_domains;
where, to avoid confusion, this should've been:
num_domains = soc->num_domains ?
soc->num_domains : soc->num_hwv_domains;
(perhaps with a check `if (num_domains && num_hwv_domains) dev_err(only one
supported)` but being this taken from hardcoded data, I'm not really for it)
...and still, like the proposed fix does:
scpsys->pd_data.num_domains = num_domains;
While I agree, again, in that the code could be improved (and it shall be),
how the logic behaves, right now, with the proposed fix, still looks good to me.
I can eventually just send a patch that clarifies the `num_domains` if you prefer.
Cheers,
Angelo
> [...]
>
> Kind regards
> Uffe
next prev parent reply other threads:[~2026-03-12 12:46 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-10 5:37 [PATCH 1/5] pmdomain: mediatek: Fix power domain count Adam Ford
2026-02-10 5:37 ` [PATCH 2/5] clk: mediatek: Fix MT8196 topckgen2 orphan clocks Adam Ford
2026-02-10 16:10 ` Laura Nao
2026-02-10 5:37 ` [PATCH 3/5] clk: mediatek: Fix MT8196 topckgen orphan clock Adam Ford
2026-02-10 16:12 ` Laura Nao
2026-02-10 5:37 ` [PATCH 4/5] regulator: mt6363: Fix interrmittent timeout Adam Ford
2026-02-10 13:46 ` Mark Brown
2026-02-10 5:37 ` [PATCH 5/5] drivers: clk: mediatek: Fix error finding regmap Adam Ford
2026-02-10 16:14 ` Laura Nao
2026-02-10 16:19 ` (subset) [PATCH 1/5] pmdomain: mediatek: Fix power domain count Mark Brown
2026-02-12 11:34 ` Ulf Hansson
2026-03-06 9:50 ` AngeloGioacchino Del Regno
2026-03-11 17:29 ` Ulf Hansson
2026-03-12 12:46 ` AngeloGioacchino Del Regno [this message]
2026-03-12 14:42 ` Ulf Hansson
2026-03-12 15:07 ` AngeloGioacchino Del Regno
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=108e6fad-401c-427a-bc30-8ddd00bd93a5@collabora.com \
--to=angelogioacchino.delregno@collabora.com \
--cc=aford173@gmail.com \
--cc=broonie@kernel.org \
--cc=laura.nao@collabora.com \
--cc=lgirdwood@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=mturquette@baylibre.com \
--cc=nfraprado@collabora.com \
--cc=sboyd@kernel.org \
--cc=ulf.hansson@linaro.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