[PATCH v8 02/12] accel/rocket: wait for a running IRQ handler before resetting a core
Jiaxing Hu
gahing at gahingwoo.com
Wed Aug 19 00:24:20 PDT 2026
Hi Igor,
You were right, and it is one line.
Three runs in one boot on a ROCK 4D, one variable between them. Each
forces a timeout and then runs the same convolution.
put after the timeout the next inference
put_noidle runtime-active, rail up 0 of 128, MMU_DTE_ADDR
put_autosuspend suspended, rail down 128 of 128, no message
put_noidle again runtime-active, rail up 0 of 128, MMU_DTE_ADDR
The domain never drops, the bus reset it cycles on power-on never fires,
and the MMU stops answering. Your third bullet. The third run is there so
the failure is deterministic rather than intermittent, which two arms
could not have shown.
The fourth run in that round is void and I am saying so rather than
letting it read as evidence. It meant to force a suspend by hand and
separate an armed timer from a cycle happening at all. I wrote "auto" to a
power/control that was already auto, so it did nothing. Five seconds later
the state line still reads runtime-active with the rail up and genpd
active_time still climbing. It failed the way the first run did, so it is
a second instance of the bare put and nothing about forcing.
pm_runtime_put_autosuspend() is patch 3 of 13 in v9, its own patch rather
than folded, with your Reported-by. The interrupt mask goes into the sync
patch, where it makes that patch's own sentence true, and the lockdep
point is in the message. Your Reviewed-by on the extraction is carried.
Twenty resets recovering on RK3588 with the domain dropping every time
does not contradict this, since the dropping is the step my failing runs
are missing. One difference between the two tests is worth stating now
rather than after we have both quoted it. Your induced resets come from
JOB_TIMEOUT_MS at 2 ms against healthy jobs of about 5 ms, so the block
being reset is working. Mine come from a job that hung. Whether that is
why your domain drops and mine does not, I cannot tell from here, and
RK3588 may simply have nothing behind the domain that needs cycling.
Both limits you drew are the right calls. Testing through a path you have
reported as broken would have told neither of us anything, and only the
differential earns the tag.
Jiaxing
More information about the Linux-rockchip
mailing list