VAYU QNX: Prevent race condition when ARM is slow to handle mailbox interrupts
authorvwan@ti.com <vwan@ti.com>
Thu, 6 Feb 2014 22:09:43 +0000 (14:09 -0800)
committerChris Ring <cring@ti.com>
Thu, 6 Feb 2014 22:29:50 +0000 (14:29 -0800)
commitfeb7a8486ed537033c5aed5b170f52f758bddabe
tree0cf67f4ef914226f3bb349bacbe60011c828fa9f
parent7751220c988198d82c33ec6ea02622df789b9269
VAYU QNX: Prevent race condition when ARM is slow to handle mailbox interrupts

This patch fixes a race condition where the host side in QNX is slow to clear a
mailbox interrupt. If the slave were to try to send another interrupt before
the ARM has cleared the first one, the code in InterruptDsp_intSend()
will simply drop it. This is bad because on QNX, the code in VirtQueue_ISR
interprets the received arg as the VirtQueue id. Hence if consecutive
messages were sent with different ids, the second message would be missed.

The fix is to poll whenever the mailbox is occupied, and send the message
only when the mailbox is free. (SDOCM00106278)

Signed-off-by: VW <vwan@ti.com>
packages/ti/sdo/ipc/family/vayu/InterruptDsp.c