disp: msm: sde: ignore HW recovery disable event

The current SDE driver logic during MDP hang cases is to send a capture
event to user-mode if recovery custom event is registered. Otherwise, it
will enforce a device panic for debugging purpose. This might have a race
condition during the display tear-down sequence as user-mode unregisters
the recovery event when the last frame is in progress. If the last frame
causes any MDP hang, it will result in a device reset. Support only the
event registration to avoid this case, since HW recovery is not expected
to be changed dynamically.

Change-Id: I8a11e1060b239ac6827f1d078e3e396cff4c1325
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
这个提交包含在:
Veera Sundaram Sankaran
2020-12-01 18:00:53 -08:00
父节点 a2a3c5e864
当前提交 98c9ba6153
修改 3 个文件,包含 8 行新增11 行删除

查看文件

@@ -2994,8 +2994,7 @@ error_free_conn:
return ERR_PTR(rc);
}
static int _sde_conn_hw_recovery_handler(
struct drm_connector *connector, bool val)
static int _sde_conn_enable_hw_recovery(struct drm_connector *connector)
{
struct sde_connector *c_conn;
@@ -3006,7 +3005,7 @@ static int _sde_conn_hw_recovery_handler(
c_conn = to_sde_connector(connector);
if (c_conn->encoder)
sde_encoder_recovery_events_handler(c_conn->encoder, val);
sde_encoder_enable_recovery_event(c_conn->encoder);
return 0;
}
@@ -3024,7 +3023,7 @@ int sde_connector_register_custom_event(struct sde_kms *kms,
ret = 0;
break;
case DRM_EVENT_SDE_HW_RECOVERY:
ret = _sde_conn_hw_recovery_handler(conn_drm, val);
ret = _sde_conn_enable_hw_recovery(conn_drm);
break;
default:
break;