Use threaded IRQ to handle incoming IPC messages. IPC consumers can now provide optional callback that will be executed once message is received. This allows to handle multiple message types in a generic manner. Removing kthread also simplifies synchronization as disable_irq() will block until all pending messages are handled. v2: - Don't do bit operations on enum irqreturn v1: https://lore.kernel.org/all/20231107123514.2218850-1-jacek.lawrynowicz@xxxxxxxxxxxxxxx Jacek Lawrynowicz (1): accel/ivpu: Use threaded IRQ to handle JOB done messages Stanislaw Gruszka (4): accel/ivpu: Rename cons->rx_msg_lock accel/ivpu: Do not use irqsave in ivpu_ipc_dispatch accel/ivpu: Do not use cons->aborted for job_done_thread accel/ivpu: Use dedicated work for job timeout detection drivers/accel/ivpu/ivpu_drv.c | 30 ++-- drivers/accel/ivpu/ivpu_drv.h | 3 +- drivers/accel/ivpu/ivpu_hw_37xx.c | 29 ++-- drivers/accel/ivpu/ivpu_hw_40xx.c | 30 ++-- drivers/accel/ivpu/ivpu_ipc.c | 223 +++++++++++++++++------------- drivers/accel/ivpu/ivpu_ipc.h | 24 +++- drivers/accel/ivpu/ivpu_job.c | 99 +++---------- drivers/accel/ivpu/ivpu_job.h | 6 +- drivers/accel/ivpu/ivpu_pm.c | 31 +++++ drivers/accel/ivpu/ivpu_pm.h | 3 + 10 files changed, 251 insertions(+), 227 deletions(-) -- 2.42.0