Re: [PATCH 07/13] drm/i915: Mark the cursor and the overlay as being part of the display planes

Chris Wilson
2011-05-04T18:28:38Z

On Wed, 04 May 2011 10:09:53 -0700, Keith Packard <keithp@keithp.com> wrote:
> On Thu, 14 Apr 2011 10:03:41 +0100, Chris Wilson <chris@chris-wilson.co.uk> wrote:
>
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -5360,7 +5360,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
> > goto fail_locked;
> > }
> >
> > - ret = i915_gem_object_set_to_gtt_domain(obj, 0);
> > + ret = i915_gem_object_set_to_display_plane(obj, NULL);
> > if (ret) {
> > DRM_ERROR("failed to move cursor bo into the GTT\n");
> > goto fail_unpin;
> > diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
> > index a670c00..e0903c5 100644
> > --- a/drivers/gpu/drm/i915/intel_overlay.c
> > +++ b/drivers/gpu/drm/i915/intel_overlay.c
> > @@ -777,7 +777,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
> > if (ret != 0)
> > return ret;
> >
> > - ret = i915_gem_object_set_to_gtt_domain(new_bo, 0);
> > + ret = i915_gem_object_set_to_display_plane(new_bo, NULL);
>
> set_to_display_plane has a comment stating that it is always called from
> a non - interruptible context and uses a non-interruptible flush wait as
> a result.
>
> I think we would want these new code paths to allow for interrupting the
> operation?

The comment is very stale, I believe I remove it in one of the patches.
There were some fun bugs when rebinding the scanout under an
uninterruptible modeswitch that convinced me that we had a choice between
threading the interruptible flag through the entire unbind callchain, or
to simply mark the device as uninterruptible for the duration.

The code now does the latter.
-Chris

--
Chris Wilson, Intel Open Source Technology Centre