diff --git a/msm/eva/cvp_hfi.c b/msm/eva/cvp_hfi.c index 6481b70a67..6b040c34f2 100644 --- a/msm/eva/cvp_hfi.c +++ b/msm/eva/cvp_hfi.c @@ -1177,10 +1177,6 @@ static void cvp_dump_csr(struct iris_hfi_device *dev) dprintk(CVP_ERR, "CVP_WRAPPER_CPU_STATUS: %x\n", reg); reg = __read_register(dev, CVP_CPU_CS_SCIACMDARG0); dprintk(CVP_ERR, "CVP_CPU_CS_SCIACMDARG0: %x\n", reg); - reg = __read_register(dev, CVP_WRAPPER_CPU_CLOCK_CONFIG); - dprintk(CVP_ERR, "CVP_WRAPPER_CPU_CLOCK_CONFIG: %x\n", reg); - reg = __read_register(dev, CVP_WRAPPER_CORE_CLOCK_CONFIG); - dprintk(CVP_ERR, "CVP_WRAPPER_CORE_CLOCK_CONFIG: %x\n", reg); reg = __read_register(dev, CVP_WRAPPER_INTR_STATUS); dprintk(CVP_ERR, "CVP_WRAPPER_INTR_STATUS: %x\n", reg); reg = __read_register(dev, CVP_CPU_CS_H2ASOFTINT); @@ -1191,6 +1187,10 @@ static void cvp_dump_csr(struct iris_hfi_device *dev) dprintk(CVP_ERR, "CVP_CC_MVS1C_GDSCR: %x\n", reg); reg = __read_register(dev, CVP_CC_MVS1C_CBCR); dprintk(CVP_ERR, "CVP_CC_MVS1C_CBCR: %x\n", reg); + reg = __read_register(dev, CVP_WRAPPER_CPU_CLOCK_CONFIG); + dprintk(CVP_ERR, "CVP_WRAPPER_CPU_CLOCK_CONFIG: %x\n", reg); + reg = __read_register(dev, CVP_WRAPPER_CORE_CLOCK_CONFIG); + dprintk(CVP_ERR, "CVP_WRAPPER_CORE_CLOCK_CONFIG: %x\n", reg); dev->reg_dumped = true; } diff --git a/msm/eva/cvp_hfi_api.h b/msm/eva/cvp_hfi_api.h index e69d057345..beaadd5ec7 100644 --- a/msm/eva/cvp_hfi_api.h +++ b/msm/eva/cvp_hfi_api.h @@ -311,5 +311,5 @@ unsigned int get_msg_errorcode(void *msg); int get_msg_opconfigs(void *msg, unsigned int *session_id, unsigned int *error_type, unsigned int *config_id); extern const struct msm_cvp_hfi_defs cvp_hfi_defs[MAX_PKT_IDX]; - +void print_hfi_queue_info(struct cvp_hfi_device *hdev); #endif /*__CVP_HFI_API_H__ */ diff --git a/msm/eva/msm_cvp.c b/msm/eva/msm_cvp.c index c899b399b3..d6c17ba007 100644 --- a/msm/eva/msm_cvp.c +++ b/msm/eva/msm_cvp.c @@ -9,7 +9,7 @@ #include "msm_cvp_buf.h" #include "cvp_comm_def.h" #include "cvp_power.h" - +#include "cvp_hfi_api.h" static int cvp_enqueue_pkt(struct msm_cvp_inst* inst, struct eva_kmd_hfi_packet *in_pkt, unsigned int in_offset, @@ -94,6 +94,9 @@ static int cvp_wait_process_message(struct msm_cvp_inst *inst, if (wait_event_timeout(sq->wq, cvp_msg_pending(sq, &msg, ktid), timeout) == 0) { dprintk(CVP_WARN, "session queue wait timeout\n"); + if(inst && inst->core && inst->core->device){ + print_hfi_queue_info(inst->core->device); + } rc = -ETIMEDOUT; goto exit; } diff --git a/msm/eva/msm_cvp_common.c b/msm/eva/msm_cvp_common.c index 61e24755cf..a3438d89c1 100644 --- a/msm/eva/msm_cvp_common.c +++ b/msm/eva/msm_cvp_common.c @@ -58,16 +58,26 @@ static void dump_hfi_queue(struct iris_hfi_device *device) read_ptr = (u32 *)((qinfo->q_array.align_virtual_addr) + (read_idx << 2)); dprintk(CVP_ERR, - "queue payload: %x %x %x %x %x %x %x %x\n", + "queue payload: %x %x %x %x %x %x %x %x %x\n", read_ptr[0], read_ptr[1], read_ptr[2], read_ptr[3], read_ptr[4], read_ptr[5], - read_ptr[6], read_ptr[7]); + read_ptr[6], read_ptr[7], read_ptr[8]); } } mutex_unlock(&device->lock); } +void print_hfi_queue_info(struct cvp_hfi_device *hdev) +{ + if(hdev && hdev->hfi_device_data){ + call_hfi_op(hdev, flush_debug_queue, hdev->hfi_device_data); + dump_hfi_queue(hdev->hfi_device_data); + } +} + + + struct msm_cvp_core *get_cvp_core(int core_id) { struct msm_cvp_core *core; @@ -378,8 +388,7 @@ int wait_for_sess_signal_receipt(struct msm_cvp_inst *inst, if (!rc) { dprintk(CVP_WARN, "Wait interrupted or timed out: %d\n", SESSION_MSG_INDEX(cmd)); - call_hfi_op(hdev, flush_debug_queue, hdev->hfi_device_data); - dump_hfi_queue(hdev->hfi_device_data); + print_hfi_queue_info(hdev); rc = -ETIMEDOUT; } else if (inst->state == MSM_CVP_CORE_INVALID) { rc = -ECONNRESET; @@ -862,8 +871,7 @@ static int msm_comm_session_abort(struct msm_cvp_inst *inst) if (!rc) { dprintk(CVP_ERR, "%s: inst %pK session %x abort timed out\n", __func__, inst, hash32_ptr(inst->session)); - call_hfi_op(hdev, flush_debug_queue, hdev->hfi_device_data); - dump_hfi_queue(hdev->hfi_device_data); + print_hfi_queue_info(hdev); msm_cvp_comm_generate_sys_error(inst); rc = -EBUSY; } else { @@ -947,8 +955,7 @@ int msm_cvp_comm_check_core_init(struct msm_cvp_core *core) dprintk(CVP_ERR, "%s: Wait interrupted or timed out: %d\n", __func__, SYS_MSG_INDEX(HAL_SYS_INIT_DONE)); hdev = core->device; - call_hfi_op(hdev, flush_debug_queue, hdev->hfi_device_data); - dump_hfi_queue(hdev->hfi_device_data); + print_hfi_queue_info(hdev); rc = -EIO; goto exit; } else { @@ -1336,10 +1343,7 @@ void msm_cvp_ssr_handler(struct work_struct *work) s = cvp_get_inst_validate(inst->core, inst); if (!s) return; - - call_hfi_op(hdev, flush_debug_queue, - hdev->hfi_device_data); - dump_hfi_queue(hdev->hfi_device_data); + print_hfi_queue_info(hdev); msm_cvp_comm_kill_session(inst); cvp_put_inst(s); } else {