From ccf452010ac38805cc5ff6427d547387bb11f694 Mon Sep 17 00:00:00 2001 From: suchawla Date: Fri, 27 Mar 2020 23:11:06 +0530 Subject: [PATCH] msm: cvp: avoid checking read_idx again checking new_read_idx with write_idx and rechecking the read and write idx after resetting request. Change-Id: I375837f8f4ad3d1445bcbdd89dc5c79e4cea0f9d Signed-off-by: suchawla --- drivers/media/platform/msm/cvp/cvp_hfi.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/msm/cvp/cvp_hfi.c b/drivers/media/platform/msm/cvp/cvp_hfi.c index 13bf85ad703b..a6f624585140 100644 --- a/drivers/media/platform/msm/cvp/cvp_hfi.c +++ b/drivers/media/platform/msm/cvp/cvp_hfi.c @@ -723,13 +723,17 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, */ mb(); *pb_tx_req_is_set = 0; - spin_unlock(&qinfo->hfi_lock); - dprintk(CVP_DBG, - "%s queue is empty, rx_req = %u, tx_req = %u, read_idx = %u\n", - receive_request ? "message" : "debug", - queue->qhdr_rx_req, queue->qhdr_tx_req, - queue->qhdr_read_idx); - return -ENODATA; + if (write_idx != queue->qhdr_write_idx) { + queue->qhdr_rx_req = 0; + } else { + spin_unlock(&qinfo->hfi_lock); + dprintk(CVP_DBG, + "%s queue is empty, rx_req = %u, tx_req = %u, read_idx = %u\n", + receive_request ? "message" : "debug", + queue->qhdr_rx_req, queue->qhdr_tx_req, + queue->qhdr_read_idx); + return -ENODATA; + } } read_ptr = (u32 *)((qinfo->q_array.align_virtual_addr) + @@ -773,7 +777,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, rc = -ENODATA; } - if (read_idx != write_idx) + if (new_read_idx != queue->qhdr_write_idx) queue->qhdr_rx_req = 0; else queue->qhdr_rx_req = receive_request;