On Mon, Jul 13, 2015 at 04:30:22PM +0200, Maarten Lankhorst wrote: > There is a small memory leak in intel_modeset_readout_hw_state, > plug it. This should be a separate patch I think since it seems unrelated to the other changes. And I think less mystery in the commit message helps, e.g. "We leak crtc state references in the hw state readout, fix this." instead of talking about an onimous small leak ;-) -Daniel > > intel_sanitize_crtc should set a null mode when disabling the crtc, > this updates crtc_state->enable too. > > intel_sanitize_crtc also needs to update the vblank timestamps before > enabling vblank to make it work right. > > Changes since v1: > - Moved after reworking primary plane and updating mode members. > - Force a modeset calculation by changing mode->type from what the > final mode will be. > Changes since v2: > - Do not fill out mode, this should only be done for supporting fastboot. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_display.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c > index d37f6a93b094..819a2b551f1f 100644 > --- a/drivers/gpu/drm/i915/intel_display.c > +++ b/drivers/gpu/drm/i915/intel_display.c > @@ -15248,6 +15248,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc) > /* restore vblank interrupts to correct state */ > drm_crtc_vblank_reset(&crtc->base); > if (crtc->active) { > + drm_calc_timestamping_constants(&crtc->base, &crtc->base.hwmode); > update_scanline_offset(crtc); > drm_crtc_vblank_on(&crtc->base); > } > @@ -15300,7 +15301,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc) > crtc->base.state->enable ? "enabled" : "disabled", > crtc->active ? "enabled" : "disabled"); > > - crtc->base.state->enable = crtc->active; > + WARN_ON(drm_atomic_set_mode_for_crtc(crtc->base.state, NULL) < 0); > crtc->base.state->active = crtc->active; > crtc->base.enabled = crtc->active; > > @@ -15450,6 +15451,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev) > int i; > > for_each_intel_crtc(dev, crtc) { > + __drm_atomic_helper_crtc_destroy_state(&crtc->base, crtc->base.state); > memset(crtc->config, 0, sizeof(*crtc->config)); > crtc->config->base.crtc = &crtc->base; > > -- > 2.1.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx