Message ID | 20191028124238.19224-12-t-kristo@ti.com |
---|---|
State | Superseded |
Headers | show |
Series | None | expand |
On 12/11/2019 01:39, Bjorn Andersson wrote: > On Mon 28 Oct 05:42 PDT 2019, Tero Kristo wrote: > >> From: Suman Anna <s-anna@ti.com> >> >> 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. >> >> Signed-off-by: Subramaniam Chanderashekarapuram <subramaniam.ca@ti.com> >> Signed-off-by: Suman Anna <s-anna@ti.com> > > This should either have a "Co-developed-by" or Suman should be the first > one. Let me swap that. -Tero > >> Signed-off-by: Tero Kristo <t-kristo@ti.com> > > Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> > > Regards, > Bjorn > >> --- >> drivers/remoteproc/omap_remoteproc.c | 6 ++++++ >> drivers/remoteproc/omap_remoteproc.h | 7 +++++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c >> index e46bb4c790d7..016d5beda195 100644 >> --- a/drivers/remoteproc/omap_remoteproc.c >> +++ b/drivers/remoteproc/omap_remoteproc.c >> @@ -124,6 +124,12 @@ static void omap_rproc_mbox_callback(struct mbox_client *client, void *data) >> dev_info(dev, "received echo reply from %s\n", name); >> break; >> 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 */ >> if (rproc_vq_interrupt(oproc->rproc, msg) == IRQ_NONE) >> dev_dbg(dev, "no message was found in vqid %d\n", msg); >> diff --git a/drivers/remoteproc/omap_remoteproc.h b/drivers/remoteproc/omap_remoteproc.h >> index 1e6fef753c4f..18f522617683 100644 >> --- a/drivers/remoteproc/omap_remoteproc.h >> +++ b/drivers/remoteproc/omap_remoteproc.h >> @@ -31,6 +31,12 @@ >> * >> * @RP_MBOX_ABORT_REQUEST: a "please crash" request, used for testing the >> * 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 { >> RP_MBOX_READY = 0xFFFFFF00, >> @@ -39,6 +45,7 @@ enum omap_rp_mbox_messages { >> RP_MBOX_ECHO_REQUEST = 0xFFFFFF03, >> RP_MBOX_ECHO_REPLY = 0xFFFFFF04, >> RP_MBOX_ABORT_REQUEST = 0xFFFFFF05, >> + RP_MBOX_END_MSG = 0xFFFFFF06, >> }; >> >> #endif /* _OMAP_RPMSG_H */ >> -- >> 2.17.1 >> >> -- -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c index e46bb4c790d7..016d5beda195 100644 --- a/drivers/remoteproc/omap_remoteproc.c +++ b/drivers/remoteproc/omap_remoteproc.c @@ -124,6 +124,12 @@ static void omap_rproc_mbox_callback(struct mbox_client *client, void *data) dev_info(dev, "received echo reply from %s\n", name); break; 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 */ if (rproc_vq_interrupt(oproc->rproc, msg) == IRQ_NONE) dev_dbg(dev, "no message was found in vqid %d\n", msg); diff --git a/drivers/remoteproc/omap_remoteproc.h b/drivers/remoteproc/omap_remoteproc.h index 1e6fef753c4f..18f522617683 100644 --- a/drivers/remoteproc/omap_remoteproc.h +++ b/drivers/remoteproc/omap_remoteproc.h @@ -31,6 +31,12 @@ * * @RP_MBOX_ABORT_REQUEST: a "please crash" request, used for testing the * 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 { RP_MBOX_READY = 0xFFFFFF00, @@ -39,6 +45,7 @@ enum omap_rp_mbox_messages { RP_MBOX_ECHO_REQUEST = 0xFFFFFF03, RP_MBOX_ECHO_REPLY = 0xFFFFFF04, RP_MBOX_ABORT_REQUEST = 0xFFFFFF05, + RP_MBOX_END_MSG = 0xFFFFFF06, }; #endif /* _OMAP_RPMSG_H */