mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 07:30:06 -04:00
drm/i915: Reject async flips if we need to change DDB/watermarks
DDB/watermarks are always double buffered on the vblank, so we can't safely change them during async flips. Currently this never happens, but we'll be making changing between sync and async flips a bit more flexible, in which case we can actually end up here. Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240430095639.26390-3-ville.syrjala@linux.intel.com
This commit is contained in:
@@ -2540,6 +2540,12 @@ skl_ddb_add_affected_planes(const struct intel_crtc_state *old_crtc_state,
|
||||
&new_crtc_state->wm.skl.plane_ddb_y[plane_id]))
|
||||
continue;
|
||||
|
||||
if (new_crtc_state->do_async_flip) {
|
||||
drm_dbg_kms(&i915->drm, "[PLANE:%d:%s] Can't change DDB during async flip\n",
|
||||
plane->base.base.id, plane->base.name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
plane_state = intel_atomic_get_plane_state(state, plane);
|
||||
if (IS_ERR(plane_state))
|
||||
return PTR_ERR(plane_state);
|
||||
@@ -2899,6 +2905,12 @@ static int skl_wm_add_affected_planes(struct intel_atomic_state *state,
|
||||
&new_crtc_state->wm.skl.optimal))
|
||||
continue;
|
||||
|
||||
if (new_crtc_state->do_async_flip) {
|
||||
drm_dbg_kms(&i915->drm, "[PLANE:%d:%s] Can't change watermarks during async flip\n",
|
||||
plane->base.base.id, plane->base.name);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
plane_state = intel_atomic_get_plane_state(state, plane);
|
||||
if (IS_ERR(plane_state))
|
||||
return PTR_ERR(plane_state);
|
||||
|
||||
Reference in New Issue
Block a user