[Intel-gfx] [PATCH] drm/i915: untangle page flip completion
Jesse Barnes
jbarnes at virtuousgeek.org
Thu Feb 4 22:06:57 CET 2010
On Thu, 4 Feb 2010 16:00:53 -0500
Kristian Høgsberg <krh at bitplanet.net> wrote:
> On Tue, Jan 26, 2010 at 5:40 PM, Jesse Barnes
> <jbarnes at virtuousgeek.org> wrote:
> > When a new page flip is requested, we need to both queue an unpin
> > for the current framebuffer, and also increment the flip pending
> > count on the newly submitted buffer.
> >
> > At flip finish time, we need to unpin the old fb and decrement the
> > flip pending count on the new buffer.
> >
> > The old code was conflating the two, and led to hangs when new
> > direct rendered apps were started, replacing the existing frame
> > buffer. This patch splits out the buffers and prevents the hangs.
> >
> > Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>
>
> Yeah, I see what's going on, nice catch. I think we need to reference
> the pending_flip_obj to keep it alive between intel_crtc_page_flip()
> and intel_finish_page_flip(), right? It gets pinned and fenced, but
> that doesn't prevent userspace from destroying the object in the
> meantime. In which case we're in trouble when we try to access the
> object in intel_finish_page_flip().
Oh good point, that's a separate bug I didn't address here. I'll send
an incremental patch on top to keep refs on these objects across the
flip.
Thanks,
--
Jesse Barnes, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list