Răsfoiți Sursa

video: driver: do core_deinit for venus_hfi_core_init failure

Currently core->state is not moved to deinit for venus_hfi_core_init
failure, so it stays remains at init_wait state and rejecting all
subsequent open requests. Since core->state is in init_wait, all
subsequent requests goes for polling to move state to init, which
will never happen and all session opens will fail always.

Change-Id: Ia7e30bd8559be00022c68f907341fd0f7fdad422
Signed-off-by: Govindaraj Rajagopal <[email protected]>
Govindaraj Rajagopal 4 ani în urmă
părinte
comite
728d12fac8
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      driver/vidc/src/msm_vidc_driver.c

+ 2 - 1
driver/vidc/src/msm_vidc_driver.c

@@ -4108,7 +4108,6 @@ int msm_vidc_core_init(struct msm_vidc_core *core)
 	core_lock(core, __func__);
 	if (!rc) {
 		d_vpr_e("%s: core init timed out\n", __func__);
-		msm_vidc_core_deinit_locked(core, true);
 		rc = -ETIMEDOUT;
 	} else {
 		msm_vidc_change_core_state(core, MSM_VIDC_CORE_INIT, __func__);
@@ -4117,6 +4116,8 @@ int msm_vidc_core_init(struct msm_vidc_core *core)
 	}
 
 unlock:
+	if (rc)
+		msm_vidc_core_deinit_locked(core, true);
 	core_unlock(core, __func__);
 	return rc;
 }