drivers: mailbox: retry on -EAGAIN
Mailbox framework makes requests to the underlying drivers by holding a
spinlock that prevents interrupts from happening at the same time. If
they both happen to occur on the same CPU, then the interrupt handler
would never get a chance to run. In cases where the request is pending
because the interrupt handler never got a chance to run and clear the
status of the controller, the msg_submit() call would fail and the
request would go back to the mailbox's queue. Additionally, in such a
case, if there are no following requests on the same mailbox client, the
request will remain pending forever in the mailbox queue. This would
hang the thread that is waiting on the completion of the request.
Change-Id: Ia66031dc33650c5f392fc9ec538fc882678810f2
Signed-off-by:
Lina Iyer <ilina@codeaurora.org>
Loading
Please register or sign in to comment