[Intel-gfx] [PATCH] drm/i915: Correctly refcount connectors in hw state readou
Chris Wilson
chris at chris-wilson.co.uk
Fri May 6 13:20:35 UTC 2016
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 at intel.com>
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Marius Vlad <marius.c.vlad at intel.com>
> Cc: Dave Airlie <airlied at 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;
}
}
}
--
Chris Wilson, Intel Open Source Technology Centre
More information about the Intel-gfx
mailing list