From 852f65ab85f602694c9ca8693082818149d31a74 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 26 Oct 2014 02:43:20 +0000 Subject: [PATCH] [x86] drm/i915: Initialise userptr mmu_notifier serial to 1 (Closes: #765590) svn path=/dists/sid/linux/; revision=21976 --- debian/changelog | 2 + ...ise-userptr-mmu_notifier-serial-to-1.patch | 39 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 42 insertions(+) create mode 100644 debian/patches/bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch diff --git a/debian/changelog b/debian/changelog index 8ea028bc8..bab3d6362 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,8 @@ linux (3.16.5-2) UNRELEASED; urgency=medium * [x86] r8723au: Backport changes up to Linux 3.17 (Closes: #765685) * mmc_block: Increase max_devices and set MMC_BLOCK_MINORS to 256 (Closes: #765621) + * [x86] drm/i915: Initialise userptr mmu_notifier serial to 1 + (Closes: #765590) [ Mauricio Faria de Oliveira ] * [ppc64el] Disable CONFIG_CMDLINE{,_BOOL} usage for setting consoles diff --git a/debian/patches/bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch b/debian/patches/bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch new file mode 100644 index 000000000..3160e705f --- /dev/null +++ b/debian/patches/bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch @@ -0,0 +1,39 @@ +From: Chris Wilson +Date: Fri, 11 Jul 2014 11:28:01 +0100 +Subject: drm/i915: Initialise userptr mmu_notifier serial to 1 +Origin: https://git.kernel.org/linus/6c308fecb4d1f928d52f9586d976f79b37149388 +Bug-Debian: https://bugs.debian.org/765590 + +During the range invalidate, we walk the list of buffers associated with +the mmu_notifer and find the ones that overlap the range. An +optimisation is made to speed up the iteration by assuming the previous +iter is still valid whilst the tree is unmodified. This exposes a bug +when a range invalidate is triggered after we have just created the +mmu_notifier, but before attaching any buffers. In that case, we presume +we have an unmodified list and start walking from the last iter which is +NULL. Oops. + +The easiest fix is then to initialise the serial of the tree to 1. + +Signed-off-by: Chris Wilson +Cc: Tvrtko Ursulin +Reviewed-by: Tvrtko Ursulin +Testecase: igt/gem_userptr_blts/stress-mm +Signed-off-by: Daniel Vetter +--- + drivers/gpu/drm/i915/i915_gem_userptr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c +index 21ea928..b41614d 100644 +--- a/drivers/gpu/drm/i915/i915_gem_userptr.c ++++ b/drivers/gpu/drm/i915/i915_gem_userptr.c +@@ -150,7 +150,7 @@ i915_mmu_notifier_get(struct drm_device *dev, struct mm_struct *mm) + mmu->mm = mm; + mmu->objects = RB_ROOT; + mmu->count = 0; +- mmu->serial = 0; ++ mmu->serial = 1; + + /* Protected by mmap_sem (write-lock) */ + ret = __mmu_notifier_register(&mmu->mn, mm); diff --git a/debian/patches/series b/debian/patches/series index 666b483fd..eaa644aa5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -389,3 +389,4 @@ bugfix/all/fold-swapping-d_name.hash-into-switch_names.patch bugfix/all/vfs-Don-t-exchange-short-filenames-unconditionally.patch bugfix/all/qla2xxx-fix-kernel-NULL-pointer-access.patch features/all/mmc_block-increase-max_devices.patch +bugfix/x86/drm-i915-initialise-userptr-mmu_notifier-serial-to-1.patch