[RFC PATCH v3 6/9] iommu/rockchip: Clear AUTO_GATING bit 1 on the RK356x v1 IOMMU

Midgy Balon midgy971 at gmail.com
Wed Jul 8 17:15:34 PDT 2026


Hi Chaoyi,

Sorry for the slow follow-up — and thanks again for the pointers, that closes
this out cleanly.

I read the two rockchip-linux commits (7f8158fb, 6a355e5f) and the merged
patch you mentioned: "iommu/rockchip: disable fetch dte time limit"
(Sven Püschel, From: Simon Xue,
20260428-spu-iommudtefix-v2-1-f592f579e508 at pengutronix.de), which Joerg
applied on 2026-06-02. It adds DISABLE_FETCH_DTE_TIME_LIMIT (BIT(31)) and
does exactly the auto_gate |= BIT(31) read-modify-write you suggested, in
rk_iommu_enable() before paging is enabled, for every Rockchip IOMMU. So bit
31 disables the DTE-fetch time limit (without it the newer revision blocks
after four consecutive master DTE fetches racing the CPU's IOTLB zaps); the
RK3568/RK3588 erratum is the same one as RV1126/RV1109. That's the accurate
description I was missing — thank you.

Since that fix is already upstream, I'll drop the AUTO_GATING change
from my series entirely rather than carry a
duplicate: v4 will rebase on top of it and the NPU MMU picks up BIT(31) for
free. For the record, on the ROCK 3B the NPU IOMMU services the NPU's reads
with zero faults both with BIT(31) and on the reset value (0x3), so this is a
no-op on my hardware/workload — but rebasing past the merged patch is the
right thing regardless.

So my v4 IOMMU dependency list becomes: your per-device-ops series, plus the
merged "disable fetch dte time limit" patch. My series no longer touches the
IOMMU driver itself.

(The convolution output is still uniform zero-point / the job times out —
that's the separate NPU compute-completion issue, unrelated to this.)

Thanks again, and kinds regards
Midgy


Le lun. 8 juin 2026 à 05:40, Chaoyi Chen <chaoyi.chen at rock-chips.com> a écrit :
>
> On 6/8/2026 9:45 AM, Chaoyi Chen wrote:
> > Hi Midgy,
> >
> > On 6/8/2026 5:05 AM, Midgy Balon wrote:
> >> Hi Chaoyi,
> >>
> >>> As I said, it is v2. Could you please try using the code below instead and
> >>> see if it works?
> >>> [ auto_gate = read(RK_MMU_AUTO_GATING); auto_gate |= BIT(31); write(...) ]
> >>
> >> Thanks -- that's clearly the right shape (read-modify-write, before paging is
> >> enabled, keeping the reset value instead of my clobbering 0x2).
> >>
> >> I rebuilt v7.1-rc6 (with the rocket RK3568 series + your per-device-ops work)
> >> using your bit-31 version and tested it on a ROCK 3B: the NPU IOMMU comes up and
> >> services the NPU's DMA cleanly -- the NPU probes, attaches its domain, and runs
> >> repeated conv submissions with no DMA_READ_ERROR and no page-walk stall. No
> >> regression from the write.
> >>
> >> To be precise about what I can and can't show: I tested both ways on v7.1-rc6 --
> >> with your bit-31 write, and on the reset value (0x3) -- and the NPU
> >> IOMMU services
> >> the NPU's reads with zero faults in both cases (no DMA_READ_ERROR, no page-walk
> >> stall). So I don't have a failing baseline here that bit-31 visibly
> >> fixes. Is the
> >> AUTO_GATING write needed on current mainline, or only under conditions I'm not
> >> reproducing (a particular traffic pattern / silicon rev)? I'll keep the patch in
> >> your form unless you'd prefer to drop it.
> >>
> >> One question so I document it correctly: what does bit 31 of RK_MMU_AUTO_GATING
> >> control on the v2 block -- is it a master "disable internal auto clock-gating"
> >> for the page-table walker (i.e. so a TLB-miss walk's AXI master keeps its clock
> >> to completion)? The RK3568 TRM I have doesn't cover the IOMMU registers, so a
> >> one-line description would let me write an accurate comment.
> >>
> >
> > Glad to hear this works. Please refer to the commit below.
> >
> > [0]: https://github.com/rockchip-linux/kernel/commit/7f8158fb41b5cc8e738aaeebc3637c50ebd74cae
> > [1]: https://github.com/rockchip-linux/kernel/commit/6a355e5f9a2069a2309e240791bc3aad63b7324e
> >
>
> It looks like RGA needs this patch too, and it has already been merged :).
>
> https://lore.kernel.org/all/20260428-spu-iommudtefix-v2-1-f592f579e508@pengutronix.de/
>
> --
> Best,
> Chaoyi



More information about the Linux-rockchip mailing list