Re: [PATCH 1/2] Revert "media: qcom: iris: use disable_irq() during power-off"

From: Birk Skyum

Date: Sat Oct 17 2026 - 11:27:09 EST


On Wed, 07 Oct 2026 17:01:05 +0530, Vishnu Reddy wrote:
> iris_vpu_power_off() is always called with core->lock held. The threaded
> IRQ handler also requires core->lock to proceed. If the handler is woken
> and queued around the same time power-off is entered, it cannot acquire
> core->lock because it is held by the power-off caller. disable_irq() waits
> for the handler to complete, resulting in a deadlock.

I hit this deadlock on a Lenovo Yoga Slim 7x (X1E80100) with 7.2.8, on
the second rmmod of qcom_iris shortly after an H.264 decode through
h264_v4l2m2m. rmmod never returned and the module stayed in
"Unloading" until a reboot:

INFO: task irq/229-iris:2028077 blocked for more than 122 seconds.
mutex_lock+0x8c/0xc0
iris_hfi_isr_handler+0x34/0x100 [qcom_iris]
INFO: task irq/229-iris:2028077 is blocked on a mutex likely owned by task rmmod:2030918.
INFO: task rmmod:2030918 blocked for more than 122 seconds.
__synchronize_irq+0xb8/0xf8
disable_irq+0x60/0x88
iris_vpu_power_off+0x6c/0xb0 [qcom_iris]
iris_core_deinit+0xa4/0x1c0 [qcom_iris]
iris_remove+0x2c/0x70 [qcom_iris]

With this patch on 7.2.8 (together with your iris_get_ts_metadata()
fix), 20 rounds of a decode, a pause of 0 to 20 seconds, rmmod and
insmod all unloaded in about half a second, with no hung task. Patch
2/2 does not apply to 7.2.8 or v7.3-rc7, so it was not part of this
test.

Tested-by: Birk Skyum <birk.skyum@xxxxx> # Lenovo Yoga Slim 7x (X1E80100)