From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: duct-tape locking when eDP init fails Date: Tue, 26 Mar 2013 09:45:47 +0200 Message-ID: <87d2umppsk.fsf@intel.com> References: <1364230570-27468-1-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 3DD07E5CD9 for ; Tue, 26 Mar 2013 00:45:23 -0700 (PDT) In-Reply-To: <1364230570-27468-1-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Intel Graphics Development Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org On Mon, 25 Mar 2013, Daniel Vetter wrote: > Thanks to apple gpu mux fail we detect an eDP output, but can't read > anything over dp aux. In the resulting failure path we then hit a > paranoid WARN about potential locking. > > Since the WARN is pretty useful for normal operation just paper over > it in the failure case by grabbing the demanded (but for init/teardown > not really required) lock. > > I've checked our driver unload code and we already don't hold the kms > lock when calling drm_mode_config_cleanup. So this won't lead to a new > deadlock when reloading i915.ko. Also, drm_encoder_cleanup() grabs mode_config mutex internally, so we would have deadlocks already if intel_dp_encoder_destroy() were called while holding the lock. Reviewed-by: Jani Nikula An observation outside of this patch, I find it a bit ugly that it depends on the ironlake_edp_panel_vdd_off() sync parameter whether the caller needs to hold the mode_config mutex or not. Perhaps separate functions for sync/async would be neater, but don't hold your breath waiting for patches from me to that effect. ;) > > v2: Make it compile. > > Reported-by: Dave Airlie > Cc: Dave Airlie > Signed-off-by: Daniel Vetter > --- > drivers/gpu/drm/i915/intel_dp.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index d7d4afe..8fc93f9 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -2559,12 +2559,15 @@ void intel_dp_encoder_destroy(struct drm_encoder *encoder) > { > struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); > struct intel_dp *intel_dp = &intel_dig_port->dp; > + struct drm_device *dev = intel_dp_to_dev(intel_dp); > > i2c_del_adapter(&intel_dp->adapter); > drm_encoder_cleanup(encoder); > if (is_edp(intel_dp)) { > cancel_delayed_work_sync(&intel_dp->panel_vdd_work); > + mutex_lock(&dev->mode_config.mutex); > ironlake_panel_vdd_off_sync(intel_dp); > + mutex_unlock(&dev->mode_config.mutex); > } > kfree(intel_dig_port); > } > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx