From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Chris Wilson <chris@chris-wilson.co.uk>,
Tvrtko Ursulin <tvrtko.ursulin@intel.com>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Michel Thierry <michel.thierry@intel.com>,
Jani Nikula <jani.nikula@intel.com>
Subject: [PATCH 4.0 11/22] drm/i915: Always reset vma->ggtt_view.pages cache on unbinding
Date: Fri, 26 Jun 2015 18:08:53 -0700 [thread overview]
Message-ID: <20150627010854.406592074@linuxfoundation.org> (raw)
In-Reply-To: <20150627010854.064848055@linuxfoundation.org>
4.0-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Wilson <chris@chris-wilson.co.uk>
commit 016a65a39170c3cdca09a6ac343ff4f124668b45 upstream.
With the introduction of multiple views of an obj in the same vm, each
vma was taught to cache its copy of the pages (so that different views
could have different page arrangements). However, this missed decoupling
those vma->ggtt_view.pages when the vma released its reference on the
obj->pages. As we don't always free the vma, this leads to a possible
scenario (e.g. execbuffer interrupted by the shrinker) where the vma
points to a stale obj->pages, and explodes.
Fixes regression from commit fe14d5f4e5468c5b80a24f1a64abcbe116143670
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date: Wed Dec 10 17:27:58 2014 +0000
drm/i915: Infrastructure for supporting different GGTT views per object
Tvrtko says, if someone else will be confused how this can happen, key
is the reservation execbuffer path. That puts the VMA on the exec_list
which prevents i915_vma_unbind and i915_gem_vma_destroy from fully
destroying the VMA. So the VMA is left existing as an empty object in
the list - unbound and disassociated with the backing store. Kind of a
cached memory object. And then re-using it needs to clear the cached
pages pointer which is fixed above.
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1227892
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
[Jani: Added Tvrtko's explanation to commit message.]
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/i915/i915_gem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3088,8 +3088,8 @@ int i915_vma_unbind(struct i915_vma *vma
} else if (vma->ggtt_view.pages) {
sg_free_table(vma->ggtt_view.pages);
kfree(vma->ggtt_view.pages);
- vma->ggtt_view.pages = NULL;
}
+ vma->ggtt_view.pages = NULL;
}
drm_mm_remove_node(&vma->node);
next prev parent reply other threads:[~2015-06-27 1:09 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-27 1:08 [PATCH 4.0 00/22] 4.0.7-stable review Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 01/22] crypto: caam - improve initalization for context state saves Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 02/22] crypto: caam - fix RNG buffer cache alignment Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 04/22] clk: at91: pll: fix input range validity check Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 05/22] clk: at91: fix h32mx prototype inclusion in pmc header Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 06/22] ALSA: hda - adding a DAC/pin preference map for a HP Envy TS machine Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 07/22] tracing: Have filter check for balanced ops Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 08/22] iser-target: Fix variable-length response error completion Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 09/22] iser-target: Fix possible use-after-free Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 10/22] drm/mgag200: Reject non-character-cell-aligned mode widths Greg Kroah-Hartman
2015-06-27 1:08 ` Greg Kroah-Hartman [this message]
2015-06-27 1:08 ` [PATCH 4.0 14/22] ath3k: Add support of 0489:e076 AR3012 device Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 15/22] ath3k: add support of 13d3:3474 " Greg Kroah-Hartman
2015-06-27 1:08 ` [PATCH 4.0 17/22] cdc-acm: Add support of ATOL FPrint fiscal printers Greg Kroah-Hartman
2015-06-27 1:09 ` [PATCH 4.0 18/22] ARM: EXYNOS: Fix failed second suspend on Exynos4 Greg Kroah-Hartman
2015-06-27 1:09 ` [PATCH 4.0 19/22] kprobes/x86: Return correct length in __copy_instruction() Greg Kroah-Hartman
2015-06-27 1:09 ` [PATCH 4.0 20/22] dm: fix NULL pointer when clone_and_map_rq returns !DM_MAPIO_REMAPPED Greg Kroah-Hartman
2015-06-27 1:09 ` [PATCH 4.0 21/22] drm/i915: Avoid GPU hang when coming out of s3 or s4 Greg Kroah-Hartman
2015-06-27 1:09 ` [PATCH 4.0 22/22] powerpc/powernv: Restore non-volatile CRs after nap Greg Kroah-Hartman
2015-06-27 3:13 ` [PATCH 4.0 00/22] 4.0.7-stable review Shuah Khan
2015-06-27 6:07 ` Guenter Roeck
2015-06-27 9:04 ` Sudip Mukherjee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150627010854.406592074@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=chris@chris-wilson.co.uk \
--cc=daniel.vetter@ffwll.ch \
--cc=jani.nikula@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=michel.thierry@intel.com \
--cc=stable@vger.kernel.org \
--cc=tvrtko.ursulin@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).