From: Aaron Kling <webgeek1234@gmail.com>
To: Jon Hunter <jonathanh@nvidia.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
Rob Herring <robh@kernel.org>, Conor Dooley <conor+dt@kernel.org>,
Thierry Reding <thierry.reding@gmail.com>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH v4 3/5] memory: tegra186-emc: Support non-bpmp icc scaling
Date: Tue, 11 Nov 2025 17:17:40 -0600 [thread overview]
Message-ID: <CALHNRZ8uPaKqSpFWkmYZn==Xw=rxh95Xm0_6LPN1HDj20zofqw@mail.gmail.com> (raw)
In-Reply-To: <249bbe7e-e2da-4493-bdd5-8f4b17aff8fe@nvidia.com>
On Tue, Nov 11, 2025 at 3:29 PM Jon Hunter <jonathanh@nvidia.com> wrote:
>
>
> On 11/11/2025 17:04, Aaron Kling wrote:
>
> ...
>
> > My setup uses the boot stack from L4T r32.7.6, though cboot is source
> > built and has had changes over time to support newer Android versions.
> > There shouldn't be anything there that would affect emc clock, though.
> >
> > I'm seeing the emc clock stay at the boot value, namely 1600MHz. Per
> > both debugfs clk/emc/clk_rate and bpmp/debug/clk/emc/rate. I don't
> > even see 250MHz as an option. Debugfs emc/available_rates lists 204MHz
> > as the closest entry.
> >
> > I'm trying to think what could cause a drop in the selected clock
> > rate. This patch should only dynamically change the rate if the opp
> > tables exist, enabling the cpufreq based scaling via icc. But those
> > tables don't exist on linux-next right now. My test ramdisk does
> > nothing except set up sysfs/procfs/etc just enough to run a busybox
> > shell for debugging. Do the Nvidia regression testing boot scripts do
> > anything to sysfs or debugfs that would affect emc?
>
> So this is definitely coming from ICC. On boot I see a request for
> 250MHz coming from the PCIe driver ...
>
> [ 13.861227] tegra186_emc_icc_set_bw-356: rate 250000000
> [ 13.861350] CPU: 1 UID: 0 PID: 68 Comm: kworker/u32:1 Not tainted 6.18.0-rc4-next-20251110-00001-gfc12493c80fb-dirty #9 PREEMPT
> [ 13.861362] Hardware name: NVIDIA Jetson AGX Xavier Developer Kit (DT)
> [ 13.861370] Workqueue: events_unbound deferred_probe_work_func
> [ 13.861388] Call trace:
> [ 13.861393] show_stack+0x18/0x24 (C)
> [ 13.861407] dump_stack_lvl+0x74/0x8c
> [ 13.861419] dump_stack+0x18/0x24
> [ 13.861426] tegra186_emc_icc_set_bw+0xc8/0x14c
> [ 13.861438] apply_constraints+0x70/0xb0
> [ 13.861451] icc_set_bw+0x88/0x128
> [ 13.861461] tegra_pcie_icc_set+0x7c/0x10c [pcie_tegra194]
> [ 13.861499] tegra_pcie_dw_start_link+0x178/0x2b0 [pcie_tegra194]
> [ 13.861510] dw_pcie_host_init+0x664/0x6e0
> [ 13.861523] tegra_pcie_dw_probe+0x6d4/0xbfc [pcie_tegra194]
> [ 13.861534] platform_probe+0x5c/0x98
> [ 13.861547] really_probe+0xbc/0x2a8
> [ 13.861555] __driver_probe_device+0x78/0x12c
> [ 13.861563] driver_probe_device+0x3c/0x15c
> [ 13.861572] __device_attach_driver+0xb8/0x134
> [ 13.861580] bus_for_each_drv+0x84/0xe0
> [ 13.861588] __device_attach+0x9c/0x188
> [ 13.861596] device_initial_probe+0x14/0x20
> [ 13.861610] bus_probe_device+0xac/0xb0
> [ 13.861619] deferred_probe_work_func+0x88/0xc0
> [ 13.861627] process_one_work+0x148/0x28c
> [ 13.861640] worker_thread+0x2d0/0x3d8
> [ 13.861648] kthread+0x128/0x200
> [ 13.861659] ret_from_fork+0x10/0x20
>
> The actual rate that is set is 408MHz if I read the rate after
> it is set ...
>
> [ 13.912099] tegra186_emc_icc_set_bw-362: rate 408000000
>
> This is a simple boot test and so nothing we are doing via
> debugfs/sysfs to influence this.
Alright, I think I've got the picture of what's going on now. The
standard arm64 defconfig enables the t194 pcie driver as a module. And
my simple busybox ramdisk that I use for mainline regression testing
isn't loading any modules. If I set the pcie driver to built-in, I
replicate the issue. And I don't see the issue on my normal use case,
because I have the dt changes as well.
So it appears that the pcie driver submits icc bandwidth. And without
cpufreq submitting bandwidth as well, the emc driver gets a very low
number and thus sets a very low emc freq. The question becomes... what
to do about it? If the related dt changes were submitted to
linux-next, everything should fall into place. And I'm not sure where
this falls on the severity scale since it doesn't full out break boot
or prevent operation.
Aaron
next prev parent reply other threads:[~2025-11-11 23:17 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-27 18:55 [PATCH v4 0/5] memory: tegra: Support EMC dfs on Tegra186/Tegra194 Aaron Kling via B4 Relay
2025-10-27 18:55 ` [PATCH v4 1/5] dt-bindings: memory: tegra186-mc: Add dummy client IDs for Tegra186 Aaron Kling via B4 Relay
2025-10-27 18:55 ` [PATCH v4 2/5] dt-bindings: memory: tegra194-mc: Add dummy client IDs for Tegra194 Aaron Kling via B4 Relay
2025-10-27 18:55 ` [PATCH v4 3/5] memory: tegra186-emc: Support non-bpmp icc scaling Aaron Kling via B4 Relay
2025-11-10 21:25 ` Jon Hunter
2025-11-10 21:55 ` Aaron Kling
2025-11-11 1:39 ` Aaron Kling
2025-11-11 11:13 ` Jon Hunter
2025-11-11 11:16 ` Krzysztof Kozlowski
2025-11-11 12:05 ` Jon Hunter
2025-11-11 14:35 ` Jon Hunter
2025-11-11 17:04 ` Aaron Kling
2025-11-11 21:29 ` Jon Hunter
2025-11-11 23:17 ` Aaron Kling [this message]
2025-11-12 6:18 ` Jon Hunter
2025-11-12 7:21 ` Aaron Kling
2025-11-12 7:31 ` Krzysztof Kozlowski
2025-11-21 11:21 ` Jon Hunter
2025-11-21 18:17 ` Aaron Kling
2025-11-22 12:01 ` Krzysztof Kozlowski
2025-11-12 7:26 ` Krzysztof Kozlowski
2025-11-12 10:59 ` Jon Hunter
2025-11-12 11:42 ` Krzysztof Kozlowski
2025-11-12 12:29 ` Jon Hunter
2025-11-12 7:26 ` Krzysztof Kozlowski
2025-10-27 18:55 ` [PATCH v4 4/5] memory: tegra186: Support " Aaron Kling via B4 Relay
2025-10-27 18:55 ` [PATCH v4 5/5] memory: tegra194: " Aaron Kling via B4 Relay
2025-10-31 13:21 ` [PATCH v4 0/5] memory: tegra: Support EMC dfs on Tegra186/Tegra194 Krzysztof Kozlowski
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='CALHNRZ8uPaKqSpFWkmYZn==Xw=rxh95Xm0_6LPN1HDj20zofqw@mail.gmail.com' \
--to=webgeek1234@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=krzk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=robh@kernel.org \
--cc=thierry.reding@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;
as well as URLs for NNTP newsgroup(s).