From 7fef9d4e2d507ee493059290d7ec5ebba5a9c3b7 Mon Sep 17 00:00:00 2001 From: Maheshwar Ajja Date: Fri, 17 Nov 2017 15:04:28 +0530 Subject: [PATCH] msm: vidc: Add memory barrier after queue header update Add memory barrier after updating queue header variables to ensure main memory is updated so that video hardware reads the updated header values. CRs-Fixed: 2135048 Change-Id: I1a2778bee16c9093284c4d33980e6985c279f499 Signed-off-by: Vikash Garodia Signed-off-by: Sanjay Singh --- drivers/media/platform/msm/vidc/venus_hfi.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/platform/msm/vidc/venus_hfi.c b/drivers/media/platform/msm/vidc/venus_hfi.c index 20f02ce46029..d43fd8ef514b 100644 --- a/drivers/media/platform/msm/vidc/venus_hfi.c +++ b/drivers/media/platform/msm/vidc/venus_hfi.c @@ -501,6 +501,11 @@ static int __read_queue(struct vidc_iface_q_info *qinfo, u8 *packet, if (queue->qhdr_read_idx == queue->qhdr_write_idx) { queue->qhdr_rx_req = receive_request; + /* + * mb() to ensure qhdr is updated in main memory + * so that venus reads the updated header values + */ + mb(); *pb_tx_req_is_set = 0; dprintk(VIDC_DBG, "%s queue is empty, rx_req = %u, tx_req = %u, read_idx = %u\n", @@ -548,6 +553,11 @@ static int __read_queue(struct vidc_iface_q_info *qinfo, u8 *packet, queue->qhdr_rx_req = 0; else queue->qhdr_rx_req = receive_request; + /* + * mb() to ensure qhdr is updated in main memory + * so that venus reads the updated header values + */ + mb(); *pb_tx_req_is_set = (1 == queue->qhdr_tx_req) ? 1 : 0;