Skip to content
Snippets Groups Projects
Commit 8135d1d2 authored by Suman Anna's avatar Suman Anna Committed by Bjorn Andersson
Browse files

remoteproc/omap: Check for undefined mailbox messages


Add some checks in the mailbox callback function to limit
any processing in the mailbox callback function to only
certain currently valid messages, and drop all the remaining
messages. A debug message is added to print any such invalid
messages when the appropriate trace control is enabled.

Co-developed-by: default avatarSubramaniam Chanderashekarapuram <subramaniam.ca@ti.com>
Signed-off-by: default avatarSubramaniam Chanderashekarapuram <subramaniam.ca@ti.com>
Signed-off-by: default avatarSuman Anna <s-anna@ti.com>
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: default avatarAndrew F. Davis <afd@ti.com>
Acked-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20200324110035.29907-10-t-kristo@ti.com


Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent 1070f24d
No related branches found
No related tags found
No related merge requests found
...@@ -130,6 +130,12 @@ static void omap_rproc_mbox_callback(struct mbox_client *client, void *data) ...@@ -130,6 +130,12 @@ static void omap_rproc_mbox_callback(struct mbox_client *client, void *data)
dev_info(dev, "received echo reply from %s\n", name); dev_info(dev, "received echo reply from %s\n", name);
break; break;
default: default:
if (msg >= RP_MBOX_READY && msg < RP_MBOX_END_MSG)
return;
if (msg > oproc->rproc->max_notifyid) {
dev_dbg(dev, "dropping unknown message 0x%x", msg);
return;
}
/* msg contains the index of the triggered vring */ /* msg contains the index of the triggered vring */
if (rproc_vq_interrupt(oproc->rproc, msg) == IRQ_NONE) if (rproc_vq_interrupt(oproc->rproc, msg) == IRQ_NONE)
dev_dbg(dev, "no message was found in vqid %d\n", msg); dev_dbg(dev, "no message was found in vqid %d\n", msg);
......
...@@ -56,6 +56,12 @@ ...@@ -56,6 +56,12 @@
* *
* @RP_MBOX_ABORT_REQUEST: a "please crash" request, used for testing the * @RP_MBOX_ABORT_REQUEST: a "please crash" request, used for testing the
* recovery mechanism (to some extent). * recovery mechanism (to some extent).
*
* Introduce new message definitions if any here.
*
* @RP_MBOX_END_MSG: Indicates end of known/defined messages from remote core
* This should be the last definition.
*
*/ */
enum omap_rp_mbox_messages { enum omap_rp_mbox_messages {
RP_MBOX_READY = 0xFFFFFF00, RP_MBOX_READY = 0xFFFFFF00,
...@@ -64,6 +70,7 @@ enum omap_rp_mbox_messages { ...@@ -64,6 +70,7 @@ enum omap_rp_mbox_messages {
RP_MBOX_ECHO_REQUEST = 0xFFFFFF03, RP_MBOX_ECHO_REQUEST = 0xFFFFFF03,
RP_MBOX_ECHO_REPLY = 0xFFFFFF04, RP_MBOX_ECHO_REPLY = 0xFFFFFF04,
RP_MBOX_ABORT_REQUEST = 0xFFFFFF05, RP_MBOX_ABORT_REQUEST = 0xFFFFFF05,
RP_MBOX_END_MSG = 0xFFFFFF06,
}; };
#endif /* _OMAP_RPMSG_H */ #endif /* _OMAP_RPMSG_H */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment