drm/amd/display: Fix refcount over dc_sink.
Retain a dc_sink pointer until a new physical pointer arrives in case of new display connected. Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Reviewed-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
f4c07f88cc
commit
922aa1e15e
@ -737,9 +737,17 @@ void amdgpu_dm_update_connector_after_detect(
|
|||||||
mutex_lock(&dev->mode_config.mutex);
|
mutex_lock(&dev->mode_config.mutex);
|
||||||
|
|
||||||
if (sink) {
|
if (sink) {
|
||||||
if (aconnector->dc_sink)
|
if (aconnector->dc_sink) {
|
||||||
amdgpu_dm_remove_sink_from_freesync_module(
|
amdgpu_dm_remove_sink_from_freesync_module(
|
||||||
connector);
|
connector);
|
||||||
|
/* retain and release bellow are used for
|
||||||
|
* bump up refcount for sink because the link don't point
|
||||||
|
* to it anymore after disconnect so on next crtc to connector
|
||||||
|
* reshuffle by UMD we will get into unwanted dc_sink release
|
||||||
|
*/
|
||||||
|
if (aconnector->dc_sink != aconnector->dc_em_sink)
|
||||||
|
dc_sink_release(aconnector->dc_sink);
|
||||||
|
}
|
||||||
aconnector->dc_sink = sink;
|
aconnector->dc_sink = sink;
|
||||||
amdgpu_dm_add_sink_to_freesync_module(
|
amdgpu_dm_add_sink_to_freesync_module(
|
||||||
connector, aconnector->edid);
|
connector, aconnector->edid);
|
||||||
@ -747,6 +755,8 @@ void amdgpu_dm_update_connector_after_detect(
|
|||||||
amdgpu_dm_remove_sink_from_freesync_module(connector);
|
amdgpu_dm_remove_sink_from_freesync_module(connector);
|
||||||
if (!aconnector->dc_sink)
|
if (!aconnector->dc_sink)
|
||||||
aconnector->dc_sink = aconnector->dc_em_sink;
|
aconnector->dc_sink = aconnector->dc_em_sink;
|
||||||
|
else if (aconnector->dc_sink != aconnector->dc_em_sink)
|
||||||
|
dc_sink_retain(aconnector->dc_sink);
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&dev->mode_config.mutex);
|
mutex_unlock(&dev->mode_config.mutex);
|
||||||
|
Loading…
Reference in New Issue
Block a user