|
@@ -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);
|