On Wed, Jun 10, 2026 at 03:10:45PM +0800, ZhaoJinming wrote: > - iommu_detach_group(NULL, iommu_group_get(core->dev)); > + iommu_detach_group(NULL, core->iommu_group);
Looks right. I agree with Igor that this should go on its own; for a standalone version: Reviewed-by: Sidong Yang <[email protected]> > device on the same IRQ line triggers an interrupt while the NPU is > suspended, register reads return 0xffffffff, spuriously triggering > WARN_ON macros and falsely returning IRQ_WAKE_THREAD. On RK3588 the line is shared with the core's own IOMMU, so the guard makes sense. But it's worse than a WARN: on a ROCK 5B+, reading INTERRUPT_RAW_STATUS through /dev/mem while the core was runtime suspended hung the board. Please mention both in the commit message. > + ret = pm_runtime_get_if_active(core->dev); > + if (ret == 0) > + return IRQ_NONE; This returns -EINVAL while runtime PM is disabled (e.g. during pm_runtime_force_suspend()), and then the registers are read anyway. Returning IRQ_NONE for ret <= 0, as rk_iommu_irq() does, covers that and drops the "if (ret > 0)" checks. With that, this part looks good to me too. Thanks, Sidong
