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.olive...@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
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to