From 8aa0d102d81fb2632ce988fcc8d816e7fed7b5b1 Mon Sep 17 00:00:00 2001 From: Cheng Zeng Date: Thu, 24 Mar 2022 16:09:28 +0800 Subject: [PATCH] msm: gsi: Fix the incorrect evt ring pointer The pointer should be event ring pointer, not transfer ring pointer, it has chance to get wrong upper 32 bits when smmu is disabled. Signed-off-by: Cheng Zeng --- drivers/platform/msm/gsi/gsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c index 7d75084783e0..2ae33a7bbb2a 100644 --- a/drivers/platform/msm/gsi/gsi.c +++ b/drivers/platform/msm/gsi/gsi.c @@ -4057,7 +4057,7 @@ int gsi_poll_n_channel(unsigned long chan_hdl, /* update rp to see of we have anything new to process */ rp = ctx->evtr->props.gsi_read_event_ring_rp( &ctx->evtr->props, ctx->evtr->id, ee); - rp |= ctx->ring.rp & 0xFFFFFFFF00000000ULL; + rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000ULL; ctx->evtr->ring.rp = rp; /* read gsi event ring rp again if last read is empty */ @@ -4069,7 +4069,7 @@ int gsi_poll_n_channel(unsigned long chan_hdl, __iowmb(); rp = ctx->evtr->props.gsi_read_event_ring_rp( &ctx->evtr->props, ctx->evtr->id, ee); - rp |= ctx->ring.rp & 0xFFFFFFFF00000000ULL; + rp |= ctx->evtr->ring.rp & 0xFFFFFFFF00000000ULL; ctx->evtr->ring.rp = rp; if (rp == ctx->evtr->ring.rp_local) { spin_unlock_irqrestore(