Re: [RFC PATCH v2 6/8] accel/rocket: add RK3576 NPU (RKNN) support

Jiaxing Hu <[email protected]>
Newsgroups org.infradead.lists.linux-rockchip,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Correcting myself before anyone builds on it.

I wrote yesterday:

> The per-op reset is not a workaround, to be clear -- after 90 of them the
> NPU power domain can't reach idle at power-off and that times out the
> shared regulator path (-110) and takes the box down.

That mechanism is wrong. There is no power-domain problem. What I was
looking at was a serial console printk flood: my test script ran
'dmesg -n 8', the debug kernel emits several hundred register-dump lines
per op, and at 115200 baud that blocks interrupts long enough to time out
the PMIC I2C. The symptoms I misread --

  dwmmc_rockchip: Unexpected interrupt latency
  cpu4: _set_opp_voltage: failed to set voltage: -110
  rcu: INFO: rcu_preempt detected stalls on CPUs/tasks
  rockchip-pm-domain: failed to set idle on domain 'nputop', val=0

-- are that signature, not the NPU's. It reproduces with zero resets, a
single-op model and the whole probe disabled, and 'dmesg -n 4' makes it
go away entirely. So please disregard that paragraph; if you were about
to look at RK3576 genpd on account of it, don't.

The conclusion it was attached to still stands, for a different and duller
reason: the per-op reset is not a workaround because it does not make the
MAC produce anything, not because it breaks power-down.

Two other numbers from that mail need tightening, both re-measured on a
quiet console:

- The wall itself is unchanged and is not a console artifact. op0 fetches
  and computes (top dt_rd=9408 wt_rd=96, core dt_wr=25088, output
  distinct=238); every later op reads exactly nothing and writes a
  degenerate surface.

- "90 resets, 87 interrupts" was one run and I implied a 1:1. It isn't:
  90 resets now give 63 interrupts. What holds is the qualitative part --
  dozens of completion interrupts in a single power session against
  exactly one without resets, and the per-layer input and weight fetch
  returning in full.

The part of that mail I'd still stand behind is the first half: the vendor
is interrupt-driven on the same GIC lines, INTERRUPT_MASK 0x300 is writable
and the line does fire, bit 31 is hardware-set and no register write clears
it, and the v3 fixes I listed.

Sorry for the noise.

Jiaxing

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.