[PATCH v1] i3c: master: allocate IBI workqueue with WQ_HIGHPRI

Mukesh Savaliya mukesh.savaliya at oss.qualcomm.com
Mon Aug 10 11:27:44 PDT 2026



On 8/10/2026 7:00 AM, Stanley Chu wrote:
> From: Stanley Chu <yschu at nuvoton.com>
> 
> The IBI (In-Band Interrupt) workqueue is allocated with only
> WQ_MEM_RECLAIM, which places IBI payload processing at normal
> worker priority. This is inadequate given the time-sensitive
> nature of IBI handling.
> 
> In the I3C protocol, when a target asserts an IBI, the SDA line
> is held low until the master acknowledges and completes the
> exchange. The IRQ handler (top half) ACKs the IBI, reads the
> payload, emits a STOP, and immediately queues the payload
> processing to the per-device ordered workqueue via
> i3c_master_queue_ibi() — effectively the bottom half of the
> IBI interrupt path.
> 
> If this workqueue worker is delayed by competing normal-priority
> tasks, the IBI notification reaches the client driver late. For
> latency-sensitive clients (e.g. sensors reporting alerts,
> hotplug events), this defeats the purpose of using IBI over
> polling. Furthermore, because the ordered workqueue serialises
> slots, a backlog of delayed slots can exhaust the pre-allocated
> IBI slot pool, causing subsequent IBIs to be dropped at the
> hardware level.
> 
> Add WQ_HIGHPRI to ensure IBI bottom-half work is scheduled
> promptly after the top-half IRQ handler enqueues it, keeping
> the IBI processing pipeline consistent with the interrupt-like
> semantics the protocol demands.
> 
> Signed-off-by: Stanley Chu <yschu at nuvoton.com>
> ---

Acked-by: Mukesh Kumar Savaliya <mukesh.savaliya at oss.qualcomm.com>



More information about the linux-i3c mailing list