Hi, On Thu, 11 Dec 2025 at 22:41, David Laight <[email protected]> wrote: > On Thu, 11 Dec 2025 21:40:32 +0100 > Nicolas Frattaroli <[email protected]> wrote: > > - if (dest->y1 + dsp_h > adjusted_mode->vdisplay) { > > - drm_dbg_kms(vop2->drm, > > - "vp%d %s dest->y1[%d] + dsp_h[%d] exceed mode > > vdisplay[%d]\n", > > - vp->id, win->data->name, dest->y1, dsp_h, > > adjusted_mode->vdisplay); > > - dsp_h = adjusted_mode->vdisplay - dest->y1; > > - if (dsp_h < 4) > > - dsp_h = 4; > > - src_h = dsp_h * src_h / drm_rect_height(dest); > > - } > > + /* drm_atomic_helper_check_plane_state calls drm_rect_clip_scaled for > > + * us, which keeps our planes bounded within the CRTC active area > > + */ > > + WARN_ON(dest->x1 + dsp_w > adjusted_mode->hdisplay); > > + WARN_ON(dest->y1 + dsp_h > adjusted_mode->vdisplay); > > + WARN_ON(dsp_w < 4); > > + WARN_ON(dsp_h < 4); > > + WARN_ON(src_w < 4); > > + WARN_ON(src_h < 4); > > You need to do something when the tests fail. > Carrying on regardless is never right.
When we arrive at this point, because the load-bearing assumption in the comment has not been met, our options would be: * display random incorrect content, and hope that we aren't reading out of bounds from a buffer that's too small * turn the display off * there is no third option Which are you suggesting? Cheers, Daniel
