IPC: Initialize procId variables in interrupt send functions
authorSuman Anna <s-anna@ti.com>
Thu, 21 Jun 2012 15:52:56 +0000 (10:52 -0500)
committerSuman Anna <s-anna@ti.com>
Thu, 28 Jun 2012 04:49:00 +0000 (23:49 -0500)
commit850c0df5f25d1d811c07097ab4c6a1ed69da4c4b
tree308cb382768cf66727467b0434c326e9d7ecf50c
parentc530559d45dde838a4387a2c5d7e7ee4307ee438
IPC: Initialize procId variables in interrupt send functions

The procId variables are static on a particular base image and
are used in the InterruptXXX_intSend functions to eliminate the
need to do a function lookup for the id every time a message
needs to be sent. The variables are currently initialized in the
InterruptXXX_intRegister function. The xxx_intRegister function
is used for enabling a Rx interrupt to process received messages,
and should be orthogonal to the xxx_intSend function, which is
solely used for sending a message.

The procId initialization has therefore been moved to the
xxx_intSend function itself to break the above dependency. This
ensures that the variables are always initialized, and would
avoid any exceptions when sending a message even before a Rx
interrupt has been registered.

This behavior has been observed in the case of an early crash.
The VirtQueue_postCrashToMailbox tries to notify MPU in case
of an exception during the initial boot and this can lead to
another secondary crash due to uninitialized procId variables.
This nested-exception behavior masks the register and stack
dump of the very first crash.

Signed-off-by: Artur Troian <x0164361@ti.com>
Signed-off-by: Juan Gutierrez <jgutierrez@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
src/ti/ipc/rpmsg/InterruptDsp.c
src/ti/ipc/rpmsg/InterruptIpu.c