[PATCH v3 1/2] mailbox: Use per-thread completion to fix wrong completion order

Jassi Brar jassisinghbrar at gmail.com
Thu Apr 2 10:59:32 PDT 2026


On Thu, Apr 2, 2026 at 12:07 PM Joonwon Kang <joonwonkang at google.com> wrote:
>
> Previously, a sender thread in mbox_send_message() could be woken up at
> a wrong time in blocking mode. It is because there was only a single
> completion for a channel whereas messages from multiple threads could be
> sent in any order; since the shared completion could be signalled in any
> order, it could wake up a wrong sender thread.
>
> This commit resolves the false wake-up issue with the following changes:
> - Completions are created just as many as the number of concurrent sender
>   threads
> - A completion is created on a sender thread's stack
> - Each slot of the message queue, i.e. `msg_data`, contains a pointer to
>   its target completion
> - tx_tick() signals the completion of the currently active slot of the
>   message queue
>
I think I reviewed it already or is this happening on
one-channel-one-client usage? Because mailbox api does not support
channels shared among multiple clients.

Thanks
Jassi



More information about the linux-arm-kernel mailing list