On Wed, Feb 25, 2026 at 11:40:54AM +0200, Jani Nikula wrote:
> On Wed, 18 Feb 2026, Ville Syrjala <[email protected]> wrote:
> > From: Ville Syrjälä <[email protected]>
> >
> > Extract the BO lookup and tiling check into a new
> > helper called i915_overlay_obj_lookup(). This will have to
> > move to the i915 side of the parent vs. display driver split.
> >
> > There is a slight change here in that we now do the tiling
> > check before taking the modeset locks, but those locks don't
> > protect the BO tiling stuff in any way, so nothing is really
> > different here.
> >
> > Note that the hardware should support X-tiled scanout also
> > for the overlay, but I guess no one ever bothered to hook
> > it up and test it. So the check should stay at least for now.
> >
> > Signed-off-by: Ville Syrjälä <[email protected]>
> > ---
> >  drivers/gpu/drm/i915/display/intel_overlay.c | 31 ++++++++++++++------
> >  1 file changed, 22 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c 
> > b/drivers/gpu/drm/i915/display/intel_overlay.c
> > index e1707a678acb..5c4f8bf8ac44 100644
> > --- a/drivers/gpu/drm/i915/display/intel_overlay.c
> > +++ b/drivers/gpu/drm/i915/display/intel_overlay.c
> > @@ -1125,6 +1125,26 @@ static int check_overlay_src(struct intel_display 
> > *display,
> >     return 0;
> >  }
> >  
> > +static struct drm_i915_gem_object *
> > +i915_overlay_obj_lookup(struct drm_device *drm,
> > +                   struct drm_file *file_priv,
> > +                   u32 handle)
> > +{
> > +   struct drm_i915_gem_object *bo;
> > +
> > +   bo = i915_gem_object_lookup(file_priv, handle);
> > +   if (!bo)
> > +           return ERR_PTR(-ENOENT);
> > +
> > +   if (i915_gem_object_is_tiled(bo)) {
> > +           drm_dbg(drm, "buffer used for overlay image can not be 
> > tiled\n");
> > +           i915_gem_object_put(bo);
> > +           return ERR_PTR(-EINVAL);
> > +   }
> > +
> > +   return bo;
> > +}
> > +
> >  int intel_overlay_put_image_ioctl(struct drm_device *dev, void *data,
> >                               struct drm_file *file_priv)
> >  {
> > @@ -1155,19 +1175,12 @@ int intel_overlay_put_image_ioctl(struct drm_device 
> > *dev, void *data,
> >             return -ENOENT;
> >     crtc = to_intel_crtc(drmmode_crtc);
> >  
> > -   new_bo = i915_gem_object_lookup(file_priv, params->bo_handle);
> > +   new_bo = i915_overlay_obj_lookup(dev, file_priv, params->bo_handle);
> >     if (!new_bo)
> 
> i915_overlay_obj_lookup() returns error pointers.

Ack. Good catch.

> 
> > -           return -ENOENT;
> > +           return PTR_ERR(new_bo);
> >  
> >     drm_modeset_lock_all(dev);
> >  
> > -   if (i915_gem_object_is_tiled(new_bo)) {
> > -           drm_dbg_kms(display->drm,
> > -                       "buffer used for overlay image can not be tiled\n");
> > -           ret = -EINVAL;
> > -           goto out_unlock;
> > -   }
> > -
> >     ret = intel_overlay_recover_from_interrupt(overlay);
> >     if (ret != 0)
> >             goto out_unlock;
> 
> -- 
> Jani Nikula, Intel

-- 
Ville Syrjälä
Intel

Reply via email to