From: Mikko Perttunen <mperttunen@nvidia.com>
To: webgeek1234@gmail.com, Aaron Kling <webgeek1234@gmail.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
Thierry Reding <thierry.reding@gmail.com>,
Jonathan Hunter <jonathanh@nvidia.com>,
linux-pm@vger.kernel.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpufreq: tegra186: Default divider to 35 if register read fails
Date: Tue, 26 Aug 2025 13:48:01 +0900 [thread overview]
Message-ID: <2325429.iZASKD2KPV@senjougahara> (raw)
In-Reply-To: <CALHNRZ8oaGaAhMVVzfeNf+M+-OvMnCnMd-fRdffmOSTBZiEXCQ@mail.gmail.com>
On Monday, August 25, 2025 2:08 PM Aaron Kling wrote:
> On Mon, Aug 25, 2025 at 12:03 AM Aaron Kling via B4 Relay
>
> <devnull+webgeek1234.gmail.com@kernel.org> wrote:
> > From: Aaron Kling <webgeek1234@gmail.com>
> >
> > Several of the cores fail to read any registers and thus fail to
> > initialize cpufreq. With shared policies, this only affects the Denver
By failing to read any registers, do you just mean that they read as 0?
I suspect the issue may be that the EDVD_COREx_VOLT_FREQ registers are just
used to request VF transitions. If no one has requested anything, the register
will be at its reset value, zero.
AIUI, in downstream, the driver retrieves the CPU clock rate by measuring it
instead of calculating it from an NDIV value, hence it would not run into this
issue. I think the conclusion would be that if the register reads as zero, we
cannot assume any clock rate. Is it possible to tell the cpufreq framework
that we don't know the rate and it should ask us to set the rate to something?
Or otherwise at probe time do this by ourselves.
Thanks,
Mikko
> > cluster, but one of the A57 cores also exhibits this behaviour. If the
> > value is initialized to match what is read by the downstream vendor
> > kernel, scaling works as expected. I have never seen this value be
> > anything other than 35, so it should be a relatively safe assumption.
> >
> > Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
> > ---
> >
> > drivers/cpufreq/tegra186-cpufreq.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/cpufreq/tegra186-cpufreq.c
> > b/drivers/cpufreq/tegra186-cpufreq.c index
> > cbabb726c6645d2e5f1857a47e5643c8552d1933..f017f903c6843f1881e8311753f6269
> > 637c6bc69 100644 --- a/drivers/cpufreq/tegra186-cpufreq.c
> > +++ b/drivers/cpufreq/tegra186-cpufreq.c
> > @@ -115,6 +115,11 @@ static unsigned int tegra186_cpufreq_get(unsigned int
> > cpu)>
> > edvd_offset = data->cpus[policy->cpu].edvd_offset;
> > ndiv = readl(data->regs + edvd_offset) &
> > EDVD_CORE_VOLT_FREQ_F_MASK;
> >
> > + if (ndiv == 0) {
> > + dev_warn_once(get_cpu_device(policy->cpu),
> > + "Scaling registers invalid, using expected
> > values"); + ndiv = 35;
> > + }
> >
> > cluster_id = data->cpus[policy->cpu].bpmp_cluster_id;
> > cluster = &data->clusters[cluster_id];
> > cpufreq_cpu_put(policy);
> >
> > ---
> > base-commit: 1b237f190eb3d36f52dffe07a40b5eb210280e00
> > change-id: 20250824-tegra186-cpufreq-ndiv-bc97a22814a9
> >
> > Best regards,
> > --
> > Aaron Kling <webgeek1234@gmail.com>
>
> I tried to open a discussion about this issue on the mailing list [0],
> but well over two months later, no responses have been given. I know
> this isn't an ideal solution, but in lieu of better knowledge of
> what's happening, this is the best I have. And this unblocks scaling
> the denver cores on tegra186.
>
> Aaron
>
> [0]
> https://lore.kernel.org/linux-tegra/CALHNRZ98_gh5dKw_GoayG4ieU3TWYAFFt29=49
> 5g4+dNLzwjbg@mail.gmail.com/
next prev parent reply other threads:[~2025-08-26 4:48 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-25 5:03 [PATCH] cpufreq: tegra186: Default divider to 35 if register read fails Aaron Kling via B4 Relay
2025-08-25 5:08 ` Aaron Kling
2025-08-26 4:48 ` Mikko Perttunen [this message]
2025-08-26 7:17 ` Aaron Kling
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=2325429.iZASKD2KPV@senjougahara \
--to=mperttunen@nvidia.com \
--cc=jonathanh@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=viresh.kumar@linaro.org \
--cc=webgeek1234@gmail.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