From patchwork Thu Jul 3 22:01:50 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Widawsky X-Patchwork-Id: 4477391 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.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 2F6E6BEEAA for ; Thu, 3 Jul 2014 22:02:07 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 659102026F for ; Thu, 3 Jul 2014 22:02:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 88D6920260 for ; Thu, 3 Jul 2014 22:02:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EDCA46E785; Thu, 3 Jul 2014 15:02:04 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id C62566E782 for ; Thu, 3 Jul 2014 15:02:01 -0700 (PDT) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP; 03 Jul 2014 15:01:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.01,597,1400050800"; d="scan'208";a="538545476" Received: from ironside.jf.intel.com ([10.7.197.52]) by orsmga001.jf.intel.com with ESMTP; 03 Jul 2014 15:01:50 -0700 From: Ben Widawsky To: Intel GFX Date: Thu, 3 Jul 2014 15:01:50 -0700 Message-Id: <1404424910-7234-2-git-send-email-benjamin.widawsky@intel.com> X-Mailer: git-send-email 2.0.1 In-Reply-To: <1404424910-7234-1-git-send-email-benjamin.widawsky@intel.com> References: <1404238671-18760-1-git-send-email-benjamin.widawsky@intel.com> <1404424910-7234-1-git-send-email-benjamin.widawsky@intel.com> Cc: Ben Widawsky , Ben Widawsky Subject: [Intel-gfx] [PATCH 2/2] drm/i915: Remove false assertion in ppgtt_release X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 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 Originally the thought for the assertion was that if there are no real VMAs (died during execbuf), or there is only 1 VMA, but the VMA is on the active list, it's a bug. The former case is pretty obvious. The later case simply meant to assert the context unref/object retire interactions were working properly There is a flaw in the logic of the second when an object has multiple VMAs. If there are multiple VMAs, it's possible that the object continually had it's seqno increased as it was used by another context. In this case, the context ref will die, but the VMA will not be taking off the active list because of the missing retire seqno for a VMA. Like some of the other fixes I've submitted recently, this should be fixed by the eventual work Daniel will do. This is pretty easy to reproduce whenever mesa uses the blit engine. Signed-off-by: Ben Widawsky --- drivers/gpu/drm/i915/i915_gem_context.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c index 1ac648f..2b39fca 100644 --- a/drivers/gpu/drm/i915/i915_gem_context.c +++ b/drivers/gpu/drm/i915/i915_gem_context.c @@ -145,8 +145,7 @@ static int do_ppgtt_cleanup(struct i915_hw_ppgtt *ppgtt) do_idle = true; list_for_each_entry(vma, &vm->active_list, mm_list) - if (WARN_ON(list_empty(&vma->vma_link) || - list_is_singular(&vma->vma_link))) + if (WARN_ON(list_empty(&vma->vma_link))) break; } else i915_gem_retire_requests(dev);