From patchwork Thu Jun 11 17:05:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?VmlsbGUgU3lyasOkbMOk?= X-Patchwork-Id: 6589951 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 80F41C0020 for ; Thu, 11 Jun 2015 17:06:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7275F205C4 for ; Thu, 11 Jun 2015 17:06:13 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 8A7E5205C1 for ; Thu, 11 Jun 2015 17:06:12 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EFC1B6E512; Thu, 11 Jun 2015 10:06:11 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 0598C6E512 for ; Thu, 11 Jun 2015 10:06:10 -0700 (PDT) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga102.jf.intel.com with ESMTP; 11 Jun 2015 10:06:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.13,595,1427785200"; d="scan'208";a="506782602" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.88]) by FMSMGA003.fm.intel.com with SMTP; 11 Jun 2015 10:06:07 -0700 Received: by stinkbox (sSMTP sendmail emulation); Thu, 11 Jun 2015 20:05:58 +0300 From: ville.syrjala@linux.intel.com To: intel-gfx@lists.freedesktop.org Date: Thu, 11 Jun 2015 20:05:58 +0300 Message-Id: <1434042358-30544-1-git-send-email-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.3.6 In-Reply-To: <1434039268-17870-1-git-send-email-ville.syrjala@linux.intel.com> References: <1434039268-17870-1-git-send-email-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Cc: Ander Conselvan de Oliveira Subject: [Intel-gfx] [PATCH v2] drm/i915: Ignore -EIO from __i915_wait_request() during flips 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 From: Ville Syrjälä When the GPU gets reset __i915_wait_request() returns -EIO to the mmio flip worker. Currently we WARN whenever we get anything other than 0. Ignore the -EIO too since it's a perfectly normal thing to get during a GPU reset. Also give intel_finish_fb() the same treatment, which triggers now at least with CS flips on my gen4. The intel_finish_fb() warning got added in commit 2e2f351dbf29681d54a3a0f1003c5bb9bc832072 Author: Chris Wilson Date: Mon Apr 27 13:41:14 2015 +0100 drm/i915: Remove domain flubbing from i915_gem_object_finish_gpu() The mmio flip one in commit 536f5b5e86b225dab94c7ff8061ae482b6077387 Author: Ander Conselvan de Oliveira Date: Thu Nov 6 11:03:40 2014 +0200 drm/i915: Make mmio flip wait for seqno in the work function v2: Ignore -EIO in intel_finish_fb() too Cc: Ander Conselvan de Oliveira Cc: Chris Wilson Signed-off-by: Ville Syrjälä Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) Tested-By: Intel Graphics QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com) --- drivers/gpu/drm/i915/intel_display.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 9bf759c..0e4720e 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -3279,7 +3279,7 @@ intel_finish_fb(struct drm_framebuffer *old_fb) ret = i915_gem_object_wait_rendering(obj, true); dev_priv->mm.interruptible = was_interruptible; - WARN_ON(ret); + WARN_ON(ret != 0 && ret != -EIO); } static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc) @@ -11327,11 +11327,13 @@ static void intel_mmio_flip_work_func(struct work_struct *work) struct intel_mmio_flip *mmio_flip = container_of(work, struct intel_mmio_flip, work); - if (mmio_flip->req) - WARN_ON(__i915_wait_request(mmio_flip->req, - mmio_flip->crtc->reset_counter, - false, NULL, - &mmio_flip->i915->rps.mmioflips)); + if (mmio_flip->req) { + int ret = __i915_wait_request(mmio_flip->req, + mmio_flip->crtc->reset_counter, + false, NULL, + &mmio_flip->i915->rps.mmioflips); + WARN_ON(ret != 0 && ret != -EIO); + } intel_do_mmio_flip(mmio_flip->crtc);