diff --git a/drivers/bus/mhi/core/mhi_main.c b/drivers/bus/mhi/core/mhi_main.c index 59808866aab7..3c30cf40625e 100644 --- a/drivers/bus/mhi/core/mhi_main.c +++ b/drivers/bus/mhi/core/mhi_main.c @@ -1613,16 +1613,19 @@ irqreturn_t mhi_intvec_threaded_handlr(int irq_number, void *dev) MHI_VERB("Enter\n"); write_lock_irq(&mhi_cntrl->pm_lock); - if (MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) { - state = mhi_get_mhi_state(mhi_cntrl); - ee = mhi_cntrl->ee; - mhi_cntrl->ee = mhi_get_exec_env(mhi_cntrl); - MHI_LOG("local ee: %s device ee:%s dev_state:%s\n", - TO_MHI_EXEC_STR(ee), - TO_MHI_EXEC_STR(mhi_cntrl->ee), - TO_MHI_STATE_STR(state)); + if (!MHI_REG_ACCESS_VALID(mhi_cntrl->pm_state)) { + write_unlock_irq(&mhi_cntrl->pm_lock); + goto exit_intvec; } + state = mhi_get_mhi_state(mhi_cntrl); + ee = mhi_cntrl->ee; + mhi_cntrl->ee = mhi_get_exec_env(mhi_cntrl); + MHI_LOG("local ee: %s device ee:%s dev_state:%s\n", + TO_MHI_EXEC_STR(ee), + TO_MHI_EXEC_STR(mhi_cntrl->ee), + TO_MHI_STATE_STR(state)); + if (state == MHI_STATE_SYS_ERR) { MHI_ERR("MHI system error detected\n"); pm_state = mhi_tryset_pm_state(mhi_cntrl,