[Intel-gfx] [PATCH 2/6] drm/i915: retrieve current fb config into new plane_config structure at init

Daniel Vetter daniel at ffwll.ch
Tue Dec 17 09:38:36 CET 2013


On Mon, Dec 16, 2013 at 04:01:41PM -0800, Jesse Barnes wrote:
> On Sat, 14 Dec 2013 12:01:47 +0100
> Daniel Vetter <daniel at ffwll.ch> wrote:
> > But I still think the fb lifetime management is a bit broken here and we
> > need a few small changes:
> > 
> > 1. Right here in this loop we need to assign the fb from the plane_config
> > ot the crtc->fb pointer and grab an fb reference for that.
> > 
> > If we don't do that we'll fall over for CONFIG_FB=n
> > 
> > A side-effect of that is that plane_config is now fairly redundant and we
> > have the problem of cleaning up the fb referenced in there somehow
> > (especially for CONFIG_FB=n). That's kinda the reason why I don't like it
> > very much ...
> > 
> > The below points are for the next patch, just noting them here for the
> > full picture. I haven't read carefully through that patch yet, so might
> > all be correct already.
> > 
> > 2. We need to clean up fb reference in the plane config. Iirc your current
> > patch 3 fails that for CONFIG_FB=n
> 
> Hm yeah the ownership is less clear in the CONFIG_FB=n case.  I think
> the driver will own the buffer, and it'll get dropped on the first mode
> set with a new buffer.  But even then there will be no process to deref
> the object finally, so it'll stick around.  Hm... maybe just disable it
> if CONFIG_FB=n is the right answer for now.

If you switch the fbdev code to look at crtc->fb instead of
crtc->plane_config.fb and just drop the plane_config.fb pointer (and it's
reference) it should pan out. Then the only reference+pointers we have are
the ones in crtc->fb, and the drm core will take care of those.

fbdev then needs to grab an additional reference for ifbdev->fb, but it
needs to do that anyway. Your current code seems to just steal the initial
reference from creating the framebuffer in ->get_plane_config.

Cheers, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list