From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f67.google.com ([74.125.83.67]:34969 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751880AbdFNRHc (ORCPT ); Wed, 14 Jun 2017 13:07:32 -0400 Received: by mail-pg0-f67.google.com with SMTP id f127so810528pgc.2 for ; Wed, 14 Jun 2017 10:07:31 -0700 (PDT) Date: Wed, 14 Jun 2017 13:07:28 -0400 From: Eric Blau To: stable@vger.kernel.org Cc: Chris Wilson , Michel Thierry , Mika Kuoppala , Joonas Lahtinen , =?utf-8?Q?Micha=C5=82?= Winiarski , Daniel Vetter , Jani Nikula , intel-gfx@lists.freedesktop.org Subject: [Intel-gfx] [PATCH] drm/i915: Do not drop pagetables when empty Message-ID: <20170614170728.GA30101@eric-macbookpro.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: Can the following patch please be included in the next stable release? It looks like it was submitted previously by Daniel Vetter, but has not been included in 4.11.y yet. Thanks. >>From 64b1d89f358df34701d92471b65f99f4eff1b384 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 18 May 2017 11:00:15 +0100 Subject: [PATCH] drm/i915: Do not drop pagetables when empty MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Due to a race with the shrinker, when we try to allocate a pagetable, we may end up shrinking it instead. This comes as a nasty surprise as we try to dereference it to fill in the pagetable entries for the object. In linus/master this is fixed by pinning the pagetables prior to allocation, but that backport is roughly drivers/gpu/drm/i915/i915_debugfs.c | 2 +- drivers/gpu/drm/i915/i915_gem_evict.c | 12 +- drivers/gpu/drm/i915/i915_gem_gtt.c | 2017 ++++++++++++++------------------- drivers/gpu/drm/i915/i915_gem_gtt.h | 123 +- drivers/gpu/drm/i915/i915_trace.h | 104 -- drivers/gpu/drm/i915/i915_vgpu.c | 9 +- drivers/gpu/drm/i915/i915_vma.c | 9 - drivers/gpu/drm/i915/intel_lrc.c | 4 +- 8 files changed, 946 insertions(+), 1334 deletions(-) i.e. unsuitable for stable. Instead we neuter the code that tried to free the pagetables. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99295 Fixes: 2ce5179fe826 ("drm/i915/gtt: Free unused lower-level page tables") Signed-off-by: Chris Wilson Cc: Michel Thierry Cc: Mika Kuoppala Cc: Chris Wilson Cc: Joonas Lahtinen Cc: MichaƂ Winiarski Cc: Daniel Vetter Cc: Jani Nikula Cc: intel-gfx@lists.freedesktop.org Cc: # v4.10+ --- drivers/gpu/drm/i915/i915_gem_gtt.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 96e45a4d5441..4f581adf2fcf 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -755,10 +755,6 @@ static bool gen8_ppgtt_clear_pt(struct i915_address_space *vm, GEM_BUG_ON(pte_end > GEN8_PTES); bitmap_clear(pt->used_ptes, pte, num_entries); - if (USES_FULL_PPGTT(vm->i915)) { - if (bitmap_empty(pt->used_ptes, GEN8_PTES)) - return true; - } pt_vaddr = kmap_px(pt); @@ -798,9 +794,6 @@ static bool gen8_ppgtt_clear_pd(struct i915_address_space *vm, } } - if (bitmap_empty(pd->used_pdes, I915_PDES)) - return true; - return false; } @@ -829,9 +822,6 @@ static bool gen8_ppgtt_clear_pdp(struct i915_address_space *vm, mark_tlbs_dirty(ppgtt); - if (bitmap_empty(pdp->used_pdpes, I915_PDPES_PER_PDP(dev_priv))) - return true; - return false; }