Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dpu: don't use active in atomic_check()

The driver isn't supposed to consult crtc_state->active/active_check for
resource allocation. Instead all resources should be allocated if
crtc_state->enabled is set. Stop consulting active / active_changed in
order to determine whether the hardware resources should be
(re)allocated.

Fixes: ccc862b957c6 ("drm/msm/dpu: Fix reservation failures in modeset")
Reported-by: Simona Vetter <simona.vetter@ffwll.ch>
Closes: https://lore.kernel.org/dri-devel/ZtW_S0j5AEr4g0QW@phenom.ffwll.local/
Reviewed-by: Simona Vetter <simona.vetter@ffwll.ch>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/633393/
Link: https://lore.kernel.org/r/20250123-drm-dirty-modeset-v2-1-bbfd3a6cd1a4@linaro.org

+1 -6
-4
drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
··· 1262 1262 1263 1263 DRM_DEBUG_ATOMIC("%s: check\n", dpu_crtc->name); 1264 1264 1265 - /* force a full mode set if active state changed */ 1266 - if (crtc_state->active_changed) 1267 - crtc_state->mode_changed = true; 1268 - 1269 1265 if (cstate->num_mixers) { 1270 1266 rc = _dpu_crtc_check_and_setup_lm_bounds(crtc, crtc_state); 1271 1267 if (rc)
+1 -2
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
··· 799 799 crtc_state->mode_changed = true; 800 800 /* 801 801 * Release and Allocate resources on every modeset 802 - * Dont allocate when active is false. 803 802 */ 804 803 if (drm_atomic_crtc_needs_modeset(crtc_state)) { 805 804 dpu_rm_release(global_state, drm_enc); 806 805 807 - if (!crtc_state->active_changed || crtc_state->enable) 806 + if (crtc_state->enable) 808 807 ret = dpu_rm_reserve(&dpu_kms->rm, global_state, 809 808 drm_enc, crtc_state, &topology); 810 809 if (!ret)