On Wed, 29 Oct 2014 16:31:56 +0200 Ander Conselvan de Oliveira <conselvan2@xxxxxxxxx> wrote: > On 10/23/2014 09:50 PM, Jesse Barnes wrote: > > This will allow us to consult more info before deciding whether to > > flip or do a full mode set. > > > > Signed-off-by: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/intel_display.c | 36 > > ++++++++++++++++++++++++++++++------ 1 file changed, 30 > > insertions(+), 6 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c > > b/drivers/gpu/drm/i915/intel_display.c index d5f95e4..e031ee8 100644 > > --- a/drivers/gpu/drm/i915/intel_display.c > > +++ b/drivers/gpu/drm/i915/intel_display.c > > @@ -11427,6 +11427,7 @@ static int intel_crtc_set_config(struct > > drm_mode_set *set) struct drm_device *dev; > > struct drm_mode_set save_set; > > struct intel_set_config *config; > > + unsigned modeset_pipes, prepare_pipes, disable_pipes; > > int ret; > > > > BUG_ON(!set); > > @@ -11472,9 +11473,17 @@ static int intel_crtc_set_config(struct > > drm_mode_set *set) if (ret) > > goto fail; > > If this fails ... > > > > > + ret = intel_modeset_compute_config(set->crtc, set->mode, > > set->fb, > > + &modeset_pipes, > > &prepare_pipes, > > + &disable_pipes); > > + if (ret) > > + goto fail; > > + > > if (config->mode_changed) { > > - ret = intel_set_mode(set->crtc, set->mode, > > - set->x, set->y, set->fb); > > + ret = intel_set_mode_pipes(set->crtc, set->mode, > > + set->x, set->y, set->fb, > > + modeset_pipes, > > prepare_pipes, > > + disable_pipes); > > } else if (config->fb_changed) { > > struct intel_crtc *intel_crtc = > > to_intel_crtc(set->crtc); > > > > @@ -11521,8 +11530,10 @@ fail: > > > > /* Try to restore the config */ > > if (config->mode_changed && > > - intel_set_mode(save_set.crtc, save_set.mode, > > - save_set.x, save_set.y, > > save_set.fb)) > > + intel_set_mode_pipes(save_set.crtc, > > save_set.mode, > > + save_set.x, save_set.y, > > save_set.fb, > > + modeset_pipes, > > prepare_pipes, > > + disable_pipes)) > > ... we end up here, with *_pipes uninitialized. And in any case, they > were computed for the new mode, not the saved one. Yeah I should just be using the old intel_set_mode() here on the failure path. That should calculate a new set of pipes and the appropriate config and apply it. Fixed. Thanks, Jesse _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx