[Intel-gfx] [PATCH 01/23] drm/i915: Set crtc backpointer when duplicating crtc state

Daniel Vetter daniel at ffwll.ch
Wed Mar 4 07:24:20 PST 2015


On Tue, Mar 03, 2015 at 03:21:55PM +0200, Ander Conselvan de Oliveira wrote:
> In the path were there is no state to duplicate, the allocated crtc
> state wouldn't have the crtc backpointer initialized.
> 
> Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_atomic.c | 12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_atomic.c b/drivers/gpu/drm/i915/intel_atomic.c
> index 011b896..3903b90 100644
> --- a/drivers/gpu/drm/i915/intel_atomic.c
> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> @@ -214,12 +214,18 @@ struct drm_crtc_state *
>  intel_crtc_duplicate_state(struct drm_crtc *crtc)
>  {
>  	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
> +	struct intel_crtc_state *crtc_state;
>  
>  	if (WARN_ON(!intel_crtc->config))
> -		return kzalloc(sizeof(*intel_crtc->config), GFP_KERNEL);
> +		crtc_state = kzalloc(sizeof(*crtc_state), GFP_KERNEL);
> +	else
> +		crtc_state = kmemdup(intel_crtc->config,
> +				     sizeof(*intel_crtc->config), GFP_KERNEL);
>  
> -	return kmemdup(intel_crtc->config, sizeof(*intel_crtc->config),
> -		       GFP_KERNEL);
> +	if (crtc_state)
> +		crtc_state->base.crtc = crtc;
> +
> +	return &crtc_state->base;

I think we should eventually extract another set of helpers to share the
core initialization code common with all drivers and the atomic helpers.
We've already screwed up this a few times when additions to the helper
state tracking haven't propagated to all drivers.

Last time I've tried this I got stuck on a good name for this function
though.
-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