From: Robin Murphy <robin.murphy@arm.com>
To: Diederik de Haas <diederik@cknow-tech.com>,
Jiaxing Hu <gahing@gahingwoo.com>,
tomeu@tomeuvizoso.net, heiko@sntech.de, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org,
will@kernel.org, ulfh@kernel.org, p.zabel@pengutronix.de,
ogabbay@kernel.org, zhangqing@rock-chips.com
Cc: royalnet026@gmail.com, alchark@flipper.net,
chaoyi.chen@rock-chips.com, dri-devel@lists.freedesktop.org,
linux-rockchip@lists.infradead.org, iommu@lists.linux.dev,
linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH v6 7/9] accel/rocket: add RK3576 NPU (RKNN) support
Date: Fri, 7 Aug 2026 15:24:33 +0100 [thread overview]
Message-ID: <a89f7d1e-6996-4956-b4be-a7bb9eb1dd8a@arm.com> (raw)
In-Reply-To: <DKIR028TZNJ3.3BGQJYSWX2BMN@cknow-tech.com>
On 07/08/2026 2:32 pm, Diederik de Haas wrote:
> On Fri Aug 7, 2026 at 2:55 PM CEST, Robin Murphy wrote:
>> On 07/08/2026 9:48 am, Diederik de Haas wrote:
>>> On Thu Aug 6, 2026 at 8:34 AM CEST, Jiaxing Hu wrote:
>>>> The RK3576 has two cores of the same RKNN block and a few platform
>>>> differences:
>>>>
>>>> - the CBUF (convolution buffer) has its own clock domain, so the core
>>>> needs six clocks rather than four;
>>>> - the BIU reset moved into the power domain, leaving one reset here;
>>>> - the NPU spans two power domains, and a device with more than one is
>>>> skipped by the driver-core single-domain auto-attach, so the list has
>>>> to be attached explicitly;
>>>> - the DPU completion interrupt is armed exactly as on RK3588 but never
>>>> reaches the GIC. The completion is visible in INTERRUPT_RAW_STATUS,
>>>
>>> I don't know if it's relevant, so just a data point:
>>> - RK3588 has Cortex A-76 + A-55, which have an External GICv4
>>> - RK3576 has Cortex A-72 + A-53, which have an External GICv3
>>
>> Nope, RK3588 has GIC-600, which is very much v3 still. I guess RK3576
>> probably has GIC-500 like RK3399 given the CPUs, but that shouldn't make
>> any meaningful difference here.
>
> Unsurprisingly, you're (almost) correct :)
> I looked at this document when I wrote that:
> https://www.arm.com/-/media/Arm%20Developer%20Community/PDF/Cortex-A%20R%20M%20datasheets/Arm%20Cortex-A%20Comparison%20Table_v4.pdf
Ah, that list is effectively describing the *maximum* capabilities of
the v8 cores' respective GIC-CPU interface implementations. It's really
just saying that cores which predate GICv4 don't implement the
additional system registers relevant to direct injection (and of course
the v7 cores which predate GICv3 don't have a system register interface
at all).
> But the RK3588 TRM Part 1 Chapter 11 'GIC600' says:
> "The GIC600 supports the GICv3 architecture ..."
> "The version of GIC600 is r1p6-00rel0."
>
> The RK3576 TRM Part 1 Chapter 13 'Generic Interrupt Controller (GIC)' says:
> "There is a generic interrupt controller (GIC400) in RK3576 which generates
> physical interrupts to Cortex-A53/Cortex-A72."
Oh wow, indeed perhaps I should have just looked at the upstream DT :)
Going back to GICv2 seems like a mildly surprising choice at this point
in time, but fair enough, sometimes power/area costs beat performance.
My point still remains valid that the GIC implementation itself should
have no impact on the behaviour of SPIs that are correctly described in
the DT.
Cheers,
Robin.
> And RK3399 TRM Part 1 Chapter 11 'Generic Interrupt Controller (GIC)' says:
> "The GIC-500 in RK3399 provides registers for managing interrupt sources,
> interrupt behavior, and interrupt routing to one or more cores."
>
> Cheers,
> Diederik
>
>> If the interrupt never fires at all then possibly the signal depends on
>> some additional clock or power domain in order to propagate, or it's
>> just described incorrectly; or if other interrupt sources within the
>> NPU/IOMMU do still work then maybe there's some additional masking
>> control that's been overlooked, or perhaps it it just terminally broken.
>>
>> (And FWIW I'm also inclined to agree with the other comments that
>> refactoring existing code to make room for new stuff, then actually
>> adding the new stuff, should probably be two separate steps if it's not
>> completely trivial)
>>
>> Thanks,
>> Robin.
next prev parent reply other threads:[~2026-08-07 14:24 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-06 6:34 [RFC PATCH v6 0/9] accel/rocket: RK3576 NPU (RKNN) enablement Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 1/9] dt-bindings: npu: rockchip: add rockchip,rk3576-rknn-core Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 2/9] dt-bindings: power: rockchip: allow resets in a power domain node Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 3/9] dt-bindings: iommu: rockchip: allow the RK3576 NPU MMU clock set Jiaxing Hu
2026-08-06 9:23 ` Diederik de Haas
2026-08-06 9:55 ` Jiaxing Hu
2026-08-06 11:29 ` Diederik de Haas
2026-08-06 6:34 ` [RFC PATCH v6 4/9] pmdomain/rockchip: add optional per-domain power-on settle delay Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 5/9] pmdomain/rockchip: cycle optional power-domain resets on power-on Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 6/9] accel/rocket: select the per-core clock and reset counts from match data Jiaxing Hu
2026-08-07 8:10 ` Diederik de Haas
2026-08-06 6:34 ` [RFC PATCH v6 7/9] accel/rocket: add RK3576 NPU (RKNN) support Jiaxing Hu
2026-08-07 8:48 ` Diederik de Haas
2026-08-07 12:55 ` Robin Murphy
2026-08-07 13:32 ` Diederik de Haas
2026-08-07 14:24 ` Robin Murphy [this message]
2026-08-07 21:16 ` Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 8/9] arm64: dts: rockchip: rk3576: add NPU (RKNN) nodes Jiaxing Hu
2026-08-06 6:34 ` [RFC PATCH v6 9/9] arm64: dts: rockchip: rk3576-rock-4d: enable NPU Jiaxing Hu
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=a89f7d1e-6996-4956-b4be-a7bb9eb1dd8a@arm.com \
--to=robin.murphy@arm.com \
--cc=alchark@flipper.net \
--cc=chaoyi.chen@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=diederik@cknow-tech.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gahing@gahingwoo.com \
--cc=heiko@sntech.de \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=ogabbay@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=royalnet026@gmail.com \
--cc=tomeu@tomeuvizoso.net \
--cc=ulfh@kernel.org \
--cc=will@kernel.org \
--cc=zhangqing@rock-chips.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