From patchwork Mon Nov 2 12:41:03 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maarten Lankhorst X-Patchwork-Id: 7536051 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 0DC1DBEEA4 for ; Mon, 2 Nov 2015 12:41:13 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id ECFD120576 for ; Mon, 2 Nov 2015 12:41:11 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 9CB4220573 for ; Mon, 2 Nov 2015 12:41:10 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 65CFE6E52D; Mon, 2 Nov 2015 04:41:08 -0800 (PST) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 3874D6E52D for ; Mon, 2 Nov 2015 04:41:06 -0800 (PST) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP; 02 Nov 2015 04:41:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,234,1444719600"; d="scan'208";a="824876483" Received: from mfijalko-mobl.ger.corp.intel.com (HELO patser.lan) ([10.252.20.119]) by fmsmga001.fm.intel.com with ESMTP; 02 Nov 2015 04:41:04 -0800 To: ville.syrjala@linux.intel.com, intel-gfx@lists.freedesktop.org References: <1446239209-8010-1-git-send-email-ville.syrjala@linux.intel.com> From: Maarten Lankhorst Message-ID: <563759DF.4070706@linux.intel.com> Date: Mon, 2 Nov 2015 13:41:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <1446239209-8010-1-git-send-email-ville.syrjala@linux.intel.com> Subject: Re: [Intel-gfx] [PATCH] Revert "drm/i915: Make prepare_plane_fb fully interruptible." X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hey, Op 30-10-15 om 22:06 schreef ville.syrjala@linux.intel.com: > From: Ville Syrjälä > > This reverts commit b26a6b35581c84124bd78b68cc02d171fbd572c9. > > commit b26a6b35581c ("drm/i915: Make prepare_plane_fb fully interruptible.") > breaks GPU reset on gen3/4 machines. Go back to to non-interruptible. > I've done some digging and by forcing an unconditional modeset during reset I was able to trigger it on my system. It should be fixed by applying the rest of the interruptible series so we can mask EIO, followed by replacing i915_mutex_lock_interruptible with mutex_lock_interruptible so there will be no waiting for gpu reset. This is what's causing the deadlock here. :) ~Maarten diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 22c0f8a54053..df6dbbc85855 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3207,9 +3207,11 @@ void intel_prepare_reset(struct drm_device *dev) if (IS_GEN2(dev)) return; +#if 0 /* reset doesn't touch the display */ if (INTEL_INFO(dev)->gen >= 5 || IS_G4X(dev)) return; +#endif drm_modeset_lock_all(dev); /* @@ -3245,7 +3247,12 @@ void intel_finish_reset(struct drm_device *dev) * FIXME: Atomic will make this obsolete since we won't schedule * CS-based flips (which might get lost in gpu resets) any more. */ +#if 0 intel_update_primary_planes(dev); +#else + intel_display_resume(dev); + drm_modeset_unlock_all(dev); +#endif return; } @@ -13174,12 +13181,12 @@ static int intel_atomic_prepare_commit(struct drm_device *dev, flush_workqueue(dev_priv->wq); } - ret = i915_mutex_lock_interruptible(dev); + ret = mutex_lock_interruptible(&dev->struct_mutex); if (ret) return ret; ret = drm_atomic_helper_prepare_planes(dev, state); - if (!ret && !async) { + if (!ret && !async && !i915_reset_in_progress(&dev_priv->gpu_error)) { u32 reset_counter; reset_counter = atomic_read(&dev_priv->gpu_error.reset_counter);