On 1/14/19 11:05 AM, Jerry (Fangzhi) Zuo wrote: > Need to check if crtc state is changed so that mode set is > required before trying to create new stream. > > It deals with the MST hotplug use case when plug back to the > same connector where the failure to create new stream for the > inactive crtc state. Simply skip the check for the old connector > and go through the new one. > > Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@xxxxxxx> > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 987095ccd2c5..68739d0c600c 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -5593,6 +5593,9 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm, > goto fail; > } > > + if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) > + return 0; I had thought this was okay at first, but this will skip stream updates when needs_modeset = false. Changing this line to just goto skip_modeset isn't sufficient either, we need drm_new_conn_state and drm_old_conn_state I believe below. This check should probably be placed within the if (aconnector && enable) block directly before the new_stream = create_stream_for_sink(aconnector, line. This should give you the behavior you're looking for. Nicholas Kazlauskas > + > aconnector = amdgpu_dm_find_first_crtc_matching_connector(state, crtc); > > /* TODO This hack should go away */ > @@ -5640,6 +5643,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm, > } > } > > + /* mode_changed flag may get updated above, need to check again */ > if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) > goto skip_modeset; > > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx