Thank you for your contribution! Sashiko AI review found 2 potential issue(s) 
to consider:
- [High] Unconditional call to `devm_pm_domain_attach_list()` breaks probe on 
single power-domain platforms (e.g., RK3588).
- [Medium] Devicetree binding schema violation: `power-domains` has multiple 
items.
--

--- Patch [9]: [RFC PATCH 9/9] arm64: dts: rockchip: rk3576-rock-4d: enable NPU 
---
commit b202e27a2b4bfe1725b5bf2c08f62041f816c518
Author: Jiaxing Hu <[email protected]>

arm64: dts: rockchip: rk3576-rock-4d: enable NPU

This commit enables rknn_core_0 and rknn_mmu_0 on the Radxa ROCK 4D. It
supplies the NPU rail and configures the power domains.

> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts 
> b/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts
> index 272af1012ab03..09d2fc98bb4c1 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-rock-4d.dts

[ ... ]

> +&rknn_core_0 {
> +     npu-supply = <&vdd_npu_s0>;
> +     /*
> +      * Power BOTH NPU domains (NPU0 + NPU1) like the vendor's single NPU 
> node,
> +      * even though rocket computes only on core 0: the CBUF->CMAC read path 
> is
> +      * only fully powered with NPU1 up. rocket attaches the multi-PD list.
> +      */
> +     power-domains = <&power RK3576_PD_NPU0>, <&power RK3576_PD_NPU1>;

[Severity: High]
Does the driver's handling of the multi-PD list break probe on single-PD
platforms like RK3588?

The comment here notes that rocket attaches the multi-PD list. When a device
has exactly one power-domains entry, the driver core automatically populates
dev->pm_domain before rocket_core_init() runs.

If the driver unconditionally calls devm_pm_domain_attach_list():

drivers/accel/rocket/rocket_core.c:rocket_core_init() {
    ...
                err = devm_pm_domain_attach_list(dev, NULL, &pd_list);
                if (err < 0)
                        return dev_err_probe(dev, err,
                                             "failed to attach NPU power 
domains\n");
    ...
}

In this scenario, devm_pm_domain_attach_list() returns -EEXIST because
dev->pm_domain is already set. Since -EEXIST is less than 0, won't this abort
the probe via dev_err_probe(), fatally failing initialization for platforms
with only one power domain?

[Severity: Medium]
Will this multiple power domain configuration cause dtbs_check validation
errors?

The schema currently restricts the power-domains property to a single item:

Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.yaml:
  power-domains:
    maxItems: 1

Since this adds both RK3576_PD_NPU0 and RK3576_PD_NPU1, could the schema
be updated to support maxItems: 2 before adding this configuration to avoid
build-time tooling errors?

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=9

Reply via email to