Merge "mm-drivers: hw_fence: move mem barrier before mem read"

This commit is contained in:
qctecmdr
2022-07-20 16:11:13 -07:00
committed by Gerrit - the friendly Code Review server

View File

@@ -166,13 +166,13 @@ int hw_fence_read_queue(struct msm_hw_fence_client *hw_fence_client,
return -EINVAL; return -EINVAL;
} }
/* Make sure data is ready before read */
mb();
/* Get read and write index */ /* Get read and write index */
read_idx = readl_relaxed(&hfi_header->read_index); read_idx = readl_relaxed(&hfi_header->read_index);
write_idx = readl_relaxed(&hfi_header->write_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", 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, hw_fence_client->client_id, &hfi_header->read_index, &hfi_header->write_index,
read_idx, write_idx, queue); 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 */ 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 */ /* Get read and write index */
read_idx = readl_relaxed(&hfi_header->read_index); read_idx = readl_relaxed(&hfi_header->read_index);
write_idx = readl_relaxed(&hfi_header->write_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", 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, hw_fence_client->client_id, &hfi_header->read_index, &hfi_header->write_index,
read_idx, write_idx, queue, queue_type); read_idx, write_idx, queue, queue_type);