qcacmn: Avoid invalid access to umac register when runtime suspend
When txrx_stats 28 is issued we post messages to reo command ring to receive reo queue stats on the reo status ring. This leads to acces accessing reo_cmd_ring head pointer shadow register when runtime pm is suspended. Perform a hif_pm_runtime_get to resume the apps before accessing the shadow register. Change-Id: Ie6df817fc114bd4c8ba7783df1fe3bd770deec40 CRs-Fixed: 2544174
Šī revīzija ir iekļauta:

revīziju iesūtīja
nshrivas

vecāks
75ccbd439c
revīzija
b9cafe22c0
@@ -436,7 +436,14 @@ inline int hal_reo_cmd_queue_stats(hal_ring_handle_t hal_ring_hdl,
|
||||
HAL_DESC_SET_FIELD(reo_desc, REO_GET_QUEUE_STATS_2, CLEAR_STATS,
|
||||
cmd->u.stats_params.clear);
|
||||
|
||||
hal_srng_access_end(hal_soc, hal_ring_hdl);
|
||||
if (hif_pm_runtime_get(hal_soc->hif_handle) == 0) {
|
||||
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl);
|
||||
hif_pm_runtime_put(hal_soc->hif_handle);
|
||||
} else {
|
||||
hal_srng_access_end_reap(hal_soc_hdl, hal_ring_hdl);
|
||||
hal_srng_set_event(hal_ring_hdl, HAL_SRNG_FLUSH_EVENT);
|
||||
hal_srng_inc_flush_cnt(hal_ring_hdl);
|
||||
}
|
||||
|
||||
val = reo_desc[CMD_HEADER_DW_OFFSET];
|
||||
return HAL_GET_FIELD(UNIFORM_REO_CMD_HEADER_0, REO_CMD_NUMBER,
|
||||
@@ -567,7 +574,15 @@ inline int hal_reo_cmd_flush_cache(hal_ring_handle_t hal_ring_hdl,
|
||||
HAL_DESC_SET_FIELD(reo_desc, REO_FLUSH_CACHE_2, FLUSH_ENTIRE_CACHE,
|
||||
cp->flush_all);
|
||||
|
||||
hal_srng_access_end(hal_soc, hal_ring_hdl);
|
||||
if (hif_pm_runtime_get(hal_soc->hif_handle) == 0) {
|
||||
hal_srng_access_end(hal_soc_hdl, hal_ring_hdl);
|
||||
hif_pm_runtime_put(hal_soc->hif_handle);
|
||||
} else {
|
||||
hal_srng_access_end_reap(hal_soc_hdl, hal_ring_hdl);
|
||||
hal_srng_set_event(hal_ring_hdl, HAL_SRNG_FLUSH_EVENT);
|
||||
hal_srng_inc_flush_cnt(hal_ring_hdl);
|
||||
}
|
||||
|
||||
val = reo_desc[CMD_HEADER_DW_OFFSET];
|
||||
return HAL_GET_FIELD(UNIFORM_REO_CMD_HEADER_0, REO_CMD_NUMBER,
|
||||
val);
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user