diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index fba9a3c1a388bcf628429f9e3f860ddec60c70ba..d7c811f6488effd84502cc820841d647fa4506a6 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -12731,9 +12731,6 @@ check_encoder_state(struct drm_device *dev) encoder->base.base.id, encoder->base.name); - I915_STATE_WARN(encoder->connectors_active && !encoder->base.crtc, - "encoder's active_connectors set, but no crtc\n"); - for_each_intel_connector(dev, connector) { if (connector->base.encoder != &encoder->base) continue; @@ -12753,18 +12750,20 @@ check_encoder_state(struct drm_device *dev) I915_STATE_WARN(active && !encoder->base.crtc, "active encoder with no crtc\n"); - I915_STATE_WARN(encoder->connectors_active != active, - "encoder's computed active state doesn't match tracked active state " - "(expected %i, found %i)\n", active, encoder->connectors_active); - active = encoder->get_hw_state(encoder, &pipe); - I915_STATE_WARN(active != encoder->connectors_active, + + if (!encoder->base.crtc) { + I915_STATE_WARN(active, + "encoder detached but not turned off.\n"); + + continue; + } + + I915_STATE_WARN(active != encoder->base.crtc->state->active, "encoder's hw state doesn't match sw tracking " "(expected %i, found %i)\n", - encoder->connectors_active, active); + encoder->base.crtc->state->active, active); - if (!encoder->base.crtc) - continue; tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe; I915_STATE_WARN(active && pipe != tracked_pipe,