[Why] When switching from vt to desktop with EDID emulation we can receive an atomic commit such that we have a crtc where mode_changed = true. During the dm_update_crtc_state disable pass we remove the stream from the context and free it on the dm_new_crtc_state. During the enable pass we compare the new provisional stream to the dm_old_crtc_state->stream and determine that the stream is unchanged and no scaling has been changed. Following this, new_crtc_state->mode_changed is then set to false. The connectors haven't changed and the CRTC active state hasn't changed so drm_atomic_crtc_needs_modeset returns false, so we jump to skip_modeset and we hit: BUG_ON(dm_new_crtc_state->stream == NULL); ...since the old stream is gone from the context and the new stream is also still NULL. [How] Ensure that we still a stream to reuse before checking if we can reuse the old stream without a full modeset. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
||
---|---|---|
.. | ||
amdgpu_dm_color.c | ||
amdgpu_dm_crc.c | ||
amdgpu_dm_debugfs.c | ||
amdgpu_dm_debugfs.h | ||
amdgpu_dm_helpers.c | ||
amdgpu_dm_irq.c | ||
amdgpu_dm_irq.h | ||
amdgpu_dm_mst_types.c | ||
amdgpu_dm_mst_types.h | ||
amdgpu_dm_pp_smu.c | ||
amdgpu_dm_services.c | ||
amdgpu_dm_trace.h | ||
amdgpu_dm.c | ||
amdgpu_dm.h | ||
Makefile |