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

Jesse Barnes jbarnes at virtuousgeek.org
Tue Dec 17 01:01:41 CET 2013


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.

> 3. fbdev needs to grab one more reference (if it decides to steal the bios
> framebuffer) to make sure the fbdev survives. But besides that I don't
> think we need anything else - any subsequent modeset will update
> references correctly. And for the fbdev config we can rely on the fastboot
> modeset paths to ellide any real updates when fbcon sets its desired
> config (which hopefully matches what the bios has set up already).

I thought this was correct already... I'll post with the CONFIG_FB
changes and you can check again.  But I take a ref in the fbdev layer
on both the GEM object and the fb that we end up using, so it should
have the appropriate ref in that case.

> > -
> > -	drm_modeset_lock_all(dev);
> > -	drm_mode_config_reset(dev);
> > -	intel_modeset_setup_hw_state(dev, false);
> > -	drm_modeset_unlock_all(dev);
> 
> As mention in the dpio fixup patch I'd like this code block move to be
> split out in a small prep patch.

Ok will do.

Thanks,
-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list