From: Igor Paunovic <royalnet026@gmail.com>
To: Nicolas Dufresne <nicolas@ndufresne.ca>,
Tomeu Vizoso <tomeu@tomeuvizoso.net>
Cc: Igor Paunovic <royalnet026@gmail.com>,
Heiko Stuebner <heiko@sntech.de>,
Jiaxing Hu <gahing@gahingwoo.com>,
Oded Gabbay <ogabbay@kernel.org>,
dri-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org
Subject: Re: [RFC] accel/rocket: DVFS on RK3588 - a hardware constraint, and some numbers
Date: Tue, 18 Aug 2026 09:27:43 +0200 [thread overview]
Message-ID: <20260818072936.41844-1-royalnet026@gmail.com> (raw)
In-Reply-To: <c495dae1976dab842d77f4a4a142217eb77b6fb7.camel@ndufresne.ca>
Hi Nicolas,
> I'm only looking at the RK3588, I suppose all the issues below
> related to RK3576 ?
No - everything in the RFC is RK3588 (Orange Pi 5 Plus, all three
cores). RK3576 is Jiaxing's enablement series and has its own set of
problems; nothing I reported came from there.
I went through the four commits on rock5b-npu-poc-4 today. We
converged on the same shape independently, which is encouraging:
200 MHz kept as the suspend rate, a single devfreq instance modelled
on panfrost with busy time aggregated across the three cores, and a
cooling device on top. Your ~2.5x on the SSD pipeline also matches
the 2.58x I measured here with simple_ondemand against the 200 MHz
pin.
The TF-A pointer (rk3588_clk.c, PVTPLL vs normal path) is the most
valuable part for me - it names the mechanism behind the power-on
ack failure I could only demonstrate empirically. I will reference
it in the cover letter once I have checked the firmware source
myself.
Status here: after Tomeu's go-ahead I am preparing the series -
bindings, a full-range OPP table in the DT (300-1000 MHz plus the
200 MHz suspend point, so essentially the table you ended up with),
a safe-rate-on-suspend guard, the devfreq itself, and a hold-all
guard that resumes all cores around any rate change. The guard is
ordered before the devfreq patch so no bisect point has scaling
without it. The one hard dependency is my "request the core clocks
by name" v2, still waiting for pickup.
Agreed on OPP staying optional - the plan in my series is that the
driver keeps working with no OPP table in the DT, which I saw you
intend to fix on your side as well.
One path worth checking in your PoC, because it is the one that
made me write the hold-all guard: a sysfs min_freq/max_freq write
while all three cores are runtime-suspended goes straight to
clk_set_rate, which can select the PVTPLL path while the domain is
off - exactly the case your TF-A reference explains. With the guard
in place I measured that write waking the cores and completing
cleanly.
One difference in test conditions worth keeping in mind: my numbers
are with the vendor bl31 that EDK2 bundles, yours is upstream TF-A.
Comparing SCMI behaviour on both seems wise before either of us
claims anything firmware-specific.
Thank you for the "take whatever you like" - anything I lift will
carry credit, and I will Cc you on the series.
Regards,
Igor
WARNING: multiple messages have this Message-ID (diff)
From: Igor Paunovic <royalnet026@gmail.com>
To: Nicolas Dufresne <nicolas@ndufresne.ca>,
Tomeu Vizoso <tomeu@tomeuvizoso.net>
Cc: Igor Paunovic <royalnet026@gmail.com>,
Heiko Stuebner <heiko@sntech.de>,
Jiaxing Hu <gahing@gahingwoo.com>,
Oded Gabbay <ogabbay@kernel.org>,
dri-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org
Subject: Re: [RFC] accel/rocket: DVFS on RK3588 - a hardware constraint, and some numbers
Date: Tue, 18 Aug 2026 09:27:43 +0200 [thread overview]
Message-ID: <20260818072936.41844-1-royalnet026@gmail.com> (raw)
In-Reply-To: <c495dae1976dab842d77f4a4a142217eb77b6fb7.camel@ndufresne.ca>
Hi Nicolas,
> I'm only looking at the RK3588, I suppose all the issues below
> related to RK3576 ?
No - everything in the RFC is RK3588 (Orange Pi 5 Plus, all three
cores). RK3576 is Jiaxing's enablement series and has its own set of
problems; nothing I reported came from there.
I went through the four commits on rock5b-npu-poc-4 today. We
converged on the same shape independently, which is encouraging:
200 MHz kept as the suspend rate, a single devfreq instance modelled
on panfrost with busy time aggregated across the three cores, and a
cooling device on top. Your ~2.5x on the SSD pipeline also matches
the 2.58x I measured here with simple_ondemand against the 200 MHz
pin.
The TF-A pointer (rk3588_clk.c, PVTPLL vs normal path) is the most
valuable part for me - it names the mechanism behind the power-on
ack failure I could only demonstrate empirically. I will reference
it in the cover letter once I have checked the firmware source
myself.
Status here: after Tomeu's go-ahead I am preparing the series -
bindings, a full-range OPP table in the DT (300-1000 MHz plus the
200 MHz suspend point, so essentially the table you ended up with),
a safe-rate-on-suspend guard, the devfreq itself, and a hold-all
guard that resumes all cores around any rate change. The guard is
ordered before the devfreq patch so no bisect point has scaling
without it. The one hard dependency is my "request the core clocks
by name" v2, still waiting for pickup.
Agreed on OPP staying optional - the plan in my series is that the
driver keeps working with no OPP table in the DT, which I saw you
intend to fix on your side as well.
One path worth checking in your PoC, because it is the one that
made me write the hold-all guard: a sysfs min_freq/max_freq write
while all three cores are runtime-suspended goes straight to
clk_set_rate, which can select the PVTPLL path while the domain is
off - exactly the case your TF-A reference explains. With the guard
in place I measured that write waking the cores and completing
cleanly.
One difference in test conditions worth keeping in mind: my numbers
are with the vendor bl31 that EDK2 bundles, yours is upstream TF-A.
Comparing SCMI behaviour on both seems wise before either of us
claims anything firmware-specific.
Thank you for the "take whatever you like" - anything I lift will
carry credit, and I will Cc you on the series.
Regards,
Igor
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2026-08-18 7:29 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-01 13:16 [RFC] accel/rocket: DVFS on RK3588 - a hardware constraint, and some numbers Igor Paunovic
2026-08-01 13:16 ` Igor Paunovic
2026-08-01 19:32 ` Jiaxing Hu
2026-08-01 19:32 ` Jiaxing Hu
2026-08-02 12:04 ` Igor Paunovic
2026-08-02 12:04 ` Igor Paunovic
2026-08-15 18:24 ` Tomeu Vizoso
2026-08-15 18:24 ` Tomeu Vizoso
2026-08-17 18:22 ` Nicolas Dufresne
2026-08-17 18:22 ` Nicolas Dufresne
2026-08-18 7:27 ` Igor Paunovic [this message]
2026-08-18 7:27 ` Igor Paunovic
2026-08-18 12:12 ` Jonas Karlman
2026-08-18 12:12 ` Jonas Karlman
[not found] <DKDOBW9CJ2Y3.10EEIZDTXPYJZ@cknow-tech.com>
2026-08-01 14:40 ` Igor Paunovic
2026-08-01 14:40 ` Igor Paunovic
2026-08-01 16:29 ` Diederik de Haas
2026-08-01 16:29 ` Diederik de Haas
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=20260818072936.41844-1-royalnet026@gmail.com \
--to=royalnet026@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gahing@gahingwoo.com \
--cc=heiko@sntech.de \
--cc=linux-rockchip@lists.infradead.org \
--cc=nicolas@ndufresne.ca \
--cc=ogabbay@kernel.org \
--cc=tomeu@tomeuvizoso.net \
/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.