This was forgotten when adding the the refcounting to drm_connector_state.
Cc: Gabriel Feceoru gabriel.feceoru@intel.com Cc: Chris Wilson chris@chris-wilson.co.uk Cc: Marius Vlad marius.c.vlad@intel.com Cc: Dave Airlie airlied@redhat.com Fixes: d2307dea14a4 ("drm/atomic: use connector references (v3)") --- drivers/gpu/drm/i915/intel_display.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 45c218db86be..d26429c77c10 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12028,6 +12028,8 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) connector->base.encoder; connector->base.state->crtc = connector->base.encoder->crtc; + + drm_connector_reference(&connector->base); } else { connector->base.state->best_encoder = NULL; connector->base.state->crtc = NULL;
On Fri, May 06, 2016 at 03:09:43PM +0200, Daniel Vetter wrote:
This was forgotten when adding the the refcounting to drm_connector_state.
Cc: Gabriel Feceoru gabriel.feceoru@intel.com Cc: Chris Wilson chris@chris-wilson.co.uk Cc: Marius Vlad marius.c.vlad@intel.com Cc: Dave Airlie airlied@redhat.com Fixes: d2307dea14a4 ("drm/atomic: use connector references (v3)")
drivers/gpu/drm/i915/intel_display.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 45c218db86be..d26429c77c10 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12028,6 +12028,8 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) connector->base.encoder; connector->base.state->crtc = connector->base.encoder->crtc;
drm_connector_reference(&connector->base);
Right that matches d2307dea14a4 but do we have to worry about balance here?
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 8ae5a8ac3b7b..49c4f5e77d32 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -11947,14 +11947,18 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) struct intel_connector *connector;
for_each_intel_connector(dev, connector) { + if (connector->base.state->crtc) { + connector->base.state->best_encoder = NULL; + connector->base.state->crtc = NULL; + drm_connector_unreference(&connector->base); + } + if (connector->base.encoder) { - connector->base.state->best_encoder = - connector->base.encoder; + drm_connector_reference(&connector->base); connector->base.state->crtc = connector->base.encoder->crtc; - } else { - connector->base.state->best_encoder = NULL; - connector->base.state->crtc = NULL; + connector->base.state->best_encoder = + connector->base.encoder; } } }
dri-devel@lists.freedesktop.org