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
