From 93afde537dddfaab1a96eacf1e515a3396754930 Mon Sep 17 00:00:00 2001 From: Ingrid Gallardo Date: Tue, 21 Jun 2022 09:45:18 -0700 Subject: [PATCH] mm-drivers: hw_fence: move mem barrier before mem read Move memory barriers to ensure data is available before the read of indexes from the queues. Change-Id: I3b5a7903f038cc62b461fbfc9cbeb143b862a1f1 Signed-off-by: Ingrid Gallardo --- hw_fence/src/hw_fence_drv_priv.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw_fence/src/hw_fence_drv_priv.c b/hw_fence/src/hw_fence_drv_priv.c index cdfe9a81c2..a980fb6bfa 100644 --- a/hw_fence/src/hw_fence_drv_priv.c +++ b/hw_fence/src/hw_fence_drv_priv.c @@ -166,13 +166,13 @@ int hw_fence_read_queue(struct msm_hw_fence_client *hw_fence_client, return -EINVAL; } + /* Make sure data is ready before read */ + mb(); + /* Get read and write index */ read_idx = readl_relaxed(&hfi_header->read_index); write_idx = readl_relaxed(&hfi_header->write_index); - /* Make sure we read the values */ - rmb(); - HWFNC_DBG_Q("read client:%d rd_ptr:0x%pK wr_ptr:0x%pK rd_idx:%d wr_idx:%d queue:0x%pK\n", hw_fence_client->client_id, &hfi_header->read_index, &hfi_header->write_index, read_idx, write_idx, queue); @@ -274,13 +274,13 @@ int hw_fence_update_queue(struct hw_fence_driver_data *drv_data, GLOBAL_ATOMIC_STORE(&drv_data->client_lock_tbl[lock_idx], 1); /* lock */ } + /* Make sure data is ready before read */ + mb(); + /* Get read and write index */ read_idx = readl_relaxed(&hfi_header->read_index); write_idx = readl_relaxed(&hfi_header->write_index); - /* Make sure we read the values */ - rmb(); - HWFNC_DBG_Q("wr client:%d rd_ptr:0x%pK wr_ptr:0x%pK rd_idx:%d wr_idx:%d q:0x%pK type:%d\n", hw_fence_client->client_id, &hfi_header->read_index, &hfi_header->write_index, read_idx, write_idx, queue, queue_type);