[RFC PATCH v3 0/9] accel: rocket: Add RK3568 NPU support
Chaoyi Chen
chaoyi.chen at rock-chips.com
Mon Jun 8 02:38:32 PDT 2026
Hi Midgy,
On 6/8/2026 5:14 PM, Midgy Balon wrote:
> Hello Chaoyi,
>
> Following up on the need_regulator suggestion -- I implemented and
> tested it on the
> board, and unfortunately it doesn't avoid the deadlock on RK3568; it
> moves it from
> boot to the NPU job submit.
>
> What I did: gave the RK3568 NPU power domain a regulator (a DOMAIN_M_R
> variant with
> need_regulator = true), wired domain-supply = <&vdd_npu>, and dropped the
> regulator-always-on workaround.
>
> Boot is now clean and the NPU probes, but there is a warning during boot:
>
> rockchip-pm-domain ...: Failed to create device link (0x180) with supplier
> 0-0020 for .../power-domain at 6
>
> (0-0020 is the rk809 PMIC that supplies vdd_npu.) Then on the first NPU job
> submit the board hard-hangs with an RCU stall:
>
> rcu: INFO: rcu_preempt detected stalls on CPUs/tasks:
> rcu: 3-...!: (1 GPs behind) ...
> rcu: rcu_preempt kthread starved for 5115 jiffies! ... RCU_GP_WAIT_FQS(5)
> rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected
>
> My reading: vdd_npu is on the rk809 *I2C* PMIC, so when genpd
> enables/disables the
> regulator during the NPU's runtime-PM power transition, the I2C
> transfer runs in a
> context that starves RCU and the box freezes. (I suspect
> need_regulator is fine on
> the RK3588 NPU because its supply isn't behind an I2C PMIC.) The always-on
> workaround avoids this precisely because genpd never touches the I2C
> regulator in
> that path.
>
No, they are all controlled by RK809.
And This looks werid. Is your rocket driver compiled as a module?
Please try compiling it as a module. When is the above error printed?
Please provide the complete boot log.
> So: for an NPU domain whose supply is an I2C PMIC, is there a
> supported way to let
> genpd own the regulator without performing the I2C op in the
> power-transition path
> (a deferred/async regulator enable, or a flag), or should RK3568 keep vdd_npu as
> regulator-always-on? For v4 I'll keep always-on unless there's a cleaner path.
>
--
Best,
Chaoyi
More information about the linux-arm-kernel
mailing list