diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c index 74075038f708..d831379ea229 100644 --- a/drivers/platform/msm/gsi/gsi.c +++ b/drivers/platform/msm/gsi/gsi.c @@ -595,6 +595,11 @@ static void gsi_process_evt_re(struct gsi_evt_ctx *ctx, struct gsi_xfer_compl_evt *evt; struct gsi_chan_ctx *ch_ctx; + /* RMB before reading event ring shared b/w IPA h/w & driver + * ordering between IPA h/w store and CPU load + */ + if (callback) + dma_rmb(); evt = (struct gsi_xfer_compl_evt *)(ctx->ring.base_va + ctx->ring.rp_local - ctx->ring.base); gsi_process_chan(evt, notify, callback);