msm: eva: Added required register dump in case of sys error

Waiting for SYS_ERROR from FW.

Change-Id: I3e25e2bdbe2d1464ef70e29298ea69567f07f340
Signed-off-by: Palak Joshi <quic_palakash@quicinc.com>
This commit is contained in:
Palak Joshi
2023-10-20 10:11:12 +05:30
parent a4a235fb6a
commit f18cfb94f1
2 changed files with 1 additions and 20 deletions

View File

@@ -3496,29 +3496,11 @@ static int __response_handler(struct iris_hfi_device *device)
} }
if (device->intr_status & CVP_FATAL_INTR_BMSK) { if (device->intr_status & CVP_FATAL_INTR_BMSK) {
struct cvp_hfi_sfr_struct *vsfr = (struct cvp_hfi_sfr_struct *)
device->sfr.align_virtual_addr;
struct msm_cvp_cb_info info = {
.response_type = HAL_SYS_WATCHDOG_TIMEOUT,
.response.cmd = {
.device_id = 0,
}
};
if (vsfr)
dprintk(CVP_ERR, "SFR Message from FW: %s\n",
vsfr->rg_data);
if (device->intr_status & CVP_WRAPPER_INTR_MASK_CPU_NOC_BMSK) if (device->intr_status & CVP_WRAPPER_INTR_MASK_CPU_NOC_BMSK)
dprintk(CVP_ERR, "Received Xtensa NOC error\n"); dprintk(CVP_ERR, "Received Xtensa NOC error\n");
if (device->intr_status & CVP_WRAPPER_INTR_MASK_CORE_NOC_BMSK) if (device->intr_status & CVP_WRAPPER_INTR_MASK_CORE_NOC_BMSK)
dprintk(CVP_ERR, "Received CVP core NOC error\n"); dprintk(CVP_ERR, "Received CVP core NOC error\n");
if (device->intr_status & CVP_WRAPPER_INTR_MASK_A2HWD_BMSK)
dprintk(CVP_ERR, "Received CVP watchdog timeout\n");
packets[packet_count++] = info;
goto exit;
} }
/* Bleed the msg queue dry of packets */ /* Bleed the msg queue dry of packets */
@@ -3594,7 +3576,6 @@ static int __response_handler(struct iris_hfi_device *device)
} }
} }
exit:
__flush_debug_queue(device, raw_packet); __flush_debug_queue(device, raw_packet);
return packet_count; return packet_count;
} }

View File

@@ -600,11 +600,11 @@ void handle_sys_error(enum hal_command_response cmd, void *data)
core, cmd, core->ssr_count); core, cmd, core->ssr_count);
mutex_lock(&core->clk_lock); mutex_lock(&core->clk_lock);
hfi_device = ops_tbl->hfi_device_data; hfi_device = ops_tbl->hfi_device_data;
call_hfi_op(ops_tbl, flush_debug_queue, ops_tbl->hfi_device_data);
if (hfi_device->error == CVP_ERR_NOC_ERROR) { if (hfi_device->error == CVP_ERR_NOC_ERROR) {
dprintk(CVP_WARN, "Got NOC error"); dprintk(CVP_WARN, "Got NOC error");
msm_cvp_noc_error_info(core); msm_cvp_noc_error_info(core);
} }
call_hfi_op(ops_tbl, flush_debug_queue, ops_tbl->hfi_device_data);
list_for_each_entry(inst, &core->instances, list) { list_for_each_entry(inst, &core->instances, list) {
cvp_print_inst(CVP_WARN, inst); cvp_print_inst(CVP_WARN, inst);
if (inst->state != MSM_CVP_CORE_INVALID) { if (inst->state != MSM_CVP_CORE_INVALID) {