diff options
author | Daniel Vetter <[email protected]> | 2016-05-06 15:39:03 +0200 |
---|---|---|
committer | Daniel Vetter <[email protected]> | 2016-05-06 16:09:12 +0200 |
commit | 8863dc7f5642737e49ff681cbb842d2c614bdcf4 (patch) | |
tree | 33412551af1796fe819bda160d274dac4d4ba5ec | |
parent | 83127f67e450a9a0882da495d59c88a71da25389 (diff) |
drm/i915: Correctly refcount connectors in hw state readou
This was forgotten when adding the the refcounting to
drm_connector_state.
v2: Don't forget to unreference existing connectors. This isn't
relevant on driver load, but this code also runs on resume, and there
we already have an atomic state. Spotted by Chris Wilson.
Cc: Gabriel Feceoru <[email protected]>
Cc: Chris Wilson <[email protected]>
Cc: Marius Vlad <[email protected]>
Cc: Dave Airlie <[email protected]>
Fixes: d2307dea14a4 ("drm/atomic: use connector references (v3)")
Signed-off-by: Daniel Vetter <[email protected]>
Reviewed-by: Chris Wilson <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 73299f9e77a8..a297e1ffafb5 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12032,11 +12032,16 @@ 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) + drm_connector_unreference(&connector->base); + if (connector->base.encoder) { connector->base.state->best_encoder = 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; |