Added drm_mm fix.

This commit is contained in:
László Valkó 2018-04-18 00:43:42 +02:00
parent 5188d2f90e
commit 928a8fb739
3 changed files with 102 additions and 1 deletions

View file

@ -1,3 +1,4 @@
AUX drmmm-4.14.34.fix.patch 3675 BLAKE2B a60cba32ebd87f2fe76103ebe240e0290b5d53074a8fec1d2be0da9bb9bf05190baddc5a4e034e0081c9053163f1f6b7b650e4c5b47bcda36fe18a27b1264f0b SHA512 2b7e5f07f9943026f6a2957780434835cf95338406bb62654dd458010f2e25dd1d9c58a3b50c6751b8e9f97bfa98ef188cbf35bccd0e5513c0f4cd0d72bb5f4b
AUX gpu-4.14.33.fix.patch 2554 BLAKE2B 935cad15dced2a40ddf13f7970c32584711bdde1b1ac43babf573e92a8e91621622bd73fcf38c6a8496e1a3d8c20a9bf09a717463232a44dce587dc969778c26 SHA512 7c74a3220894f607917987556cdb69af932e2e1c3889193fef5c6524a7b2b7d96731c095b063255ad19f1b0c480bd3f0c575768abf106eec6eb948c4bda133e7 AUX gpu-4.14.33.fix.patch 2554 BLAKE2B 935cad15dced2a40ddf13f7970c32584711bdde1b1ac43babf573e92a8e91621622bd73fcf38c6a8496e1a3d8c20a9bf09a717463232a44dce587dc969778c26 SHA512 7c74a3220894f607917987556cdb69af932e2e1c3889193fef5c6524a7b2b7d96731c095b063255ad19f1b0c480bd3f0c575768abf106eec6eb948c4bda133e7
DIST genpatches-4.14-25.base.tar.xz 638040 BLAKE2B 162d2117d125b277ae0d4557d203e5aca666b478c20ce46341fed43dcfca01aaa6727669f8f1eb851806c3838dd535da90f4f1a673aad9c439a1e7ac4f7505b1 SHA512 3cfcfed1389bea5a0341bebfc41552b0a9cc1b87099efca83fc32700a0cfb43dd4bd04b6e6a964ac8e4d23bab02707d3614025a6bce4bb614639f5d34bcb0854 DIST genpatches-4.14-25.base.tar.xz 638040 BLAKE2B 162d2117d125b277ae0d4557d203e5aca666b478c20ce46341fed43dcfca01aaa6727669f8f1eb851806c3838dd535da90f4f1a673aad9c439a1e7ac4f7505b1 SHA512 3cfcfed1389bea5a0341bebfc41552b0a9cc1b87099efca83fc32700a0cfb43dd4bd04b6e6a964ac8e4d23bab02707d3614025a6bce4bb614639f5d34bcb0854
DIST genpatches-4.14-25.experimental.tar.xz 5184 BLAKE2B d1b0ae6d6e27920a91f230dd6768741fcbc2f3c3f45c94dd764ca33e08edc4d6f9a52caf8c0e8cfc5431fe49dc189710208d9f1fcf4199d51cf66f0578c6430f SHA512 dcb81b7063be6b19eb64bfe72f07d51762f3693b087e6feee118993d524bc48caa4ca6843ca45de7b017e30907c58b7f383f1a5efdc67f801f06d1ea8380474f DIST genpatches-4.14-25.experimental.tar.xz 5184 BLAKE2B d1b0ae6d6e27920a91f230dd6768741fcbc2f3c3f45c94dd764ca33e08edc4d6f9a52caf8c0e8cfc5431fe49dc189710208d9f1fcf4199d51cf66f0578c6430f SHA512 dcb81b7063be6b19eb64bfe72f07d51762f3693b087e6feee118993d524bc48caa4ca6843ca45de7b017e30907c58b7f383f1a5efdc67f801f06d1ea8380474f
@ -27,5 +28,5 @@ EBUILD mygentoo-sources-4.14.27.ebuild 740 BLAKE2B 2e6f24837f1c25ec51b145a3a59da
EBUILD mygentoo-sources-4.14.31.ebuild 740 BLAKE2B bc5b7d42fe593b3f40954c5ced2e82e81645f484c9aadf345bce6328511d23ac5129607800f9090284aea76b9202da584b32cea72e8c2a4765d06ec2af6ce246 SHA512 779613394f9f389dfe41af8ff3a1fb22326fdcdc51d309c81a88f0e66898a2b7cda1ebbd908e777f0435fe385654554fa264ac556514b77be748933b06cae328 EBUILD mygentoo-sources-4.14.31.ebuild 740 BLAKE2B bc5b7d42fe593b3f40954c5ced2e82e81645f484c9aadf345bce6328511d23ac5129607800f9090284aea76b9202da584b32cea72e8c2a4765d06ec2af6ce246 SHA512 779613394f9f389dfe41af8ff3a1fb22326fdcdc51d309c81a88f0e66898a2b7cda1ebbd908e777f0435fe385654554fa264ac556514b77be748933b06cae328
EBUILD mygentoo-sources-4.14.32.ebuild 740 BLAKE2B 2f744866c8acc095f4afdc65af3c05a6fe7bd700e38e07610f0fad7b415d51180d4d7e9e43ad69576e64b19b93c27277229f8d1b2080d5f42076c2d1d00b979c SHA512 6ee83ee65fc8f695440a38cf44fa6df971e38b0c377e7c591d3c1d627698def28e11adfefa8d8e31f86818b00ce2fafaa410198852229e079190376fb6aac039 EBUILD mygentoo-sources-4.14.32.ebuild 740 BLAKE2B 2f744866c8acc095f4afdc65af3c05a6fe7bd700e38e07610f0fad7b415d51180d4d7e9e43ad69576e64b19b93c27277229f8d1b2080d5f42076c2d1d00b979c SHA512 6ee83ee65fc8f695440a38cf44fa6df971e38b0c377e7c591d3c1d627698def28e11adfefa8d8e31f86818b00ce2fafaa410198852229e079190376fb6aac039
EBUILD mygentoo-sources-4.14.33.ebuild 818 BLAKE2B 0fbf56eba13c288571a4b7bd9dcaef6911def3bd2570bfcec7f4a265e18c12b78a198958111c7153bb478e6d9f1c79a91a0533032071ec78319f0e5a8f9ea7c7 SHA512 79c5ea42605ba21d8d4a994f72a01e7db07092b796972a8595854fcee7c1107c3cc2a15d6562423e97941fe39bfe0b0b93263d22e34b7f1e3235b2f250976cad EBUILD mygentoo-sources-4.14.33.ebuild 818 BLAKE2B 0fbf56eba13c288571a4b7bd9dcaef6911def3bd2570bfcec7f4a265e18c12b78a198958111c7153bb478e6d9f1c79a91a0533032071ec78319f0e5a8f9ea7c7 SHA512 79c5ea42605ba21d8d4a994f72a01e7db07092b796972a8595854fcee7c1107c3cc2a15d6562423e97941fe39bfe0b0b93263d22e34b7f1e3235b2f250976cad
EBUILD mygentoo-sources-4.14.34.ebuild 818 BLAKE2B fa6ad9050f582745fd7b60583d790b95eff58b0c404601f4de5c1f631cf0ecb1f2e5d109e23c49d76421490428afc85a18557b46954b7a9accabb527e21535ad SHA512 b4c0317ded6d7b2aca668472e6e5809661454f586fc3584d0e8d16b362734da251460cd1d10cc0735b69352515097331e0614f81d19ccace07d205cbf07ff9d6 EBUILD mygentoo-sources-4.14.34.ebuild 857 BLAKE2B e2ef0ee971e1427e53cdef9fd1b471d4dd9a6b8c56bd51945e4696a56f2663489ff5912a4c446e5ec56b6f606ea470cc1c4098f3d94af329421f904d6e52e4c3 SHA512 2d6fc06bdd7d110c5a77b731f5c18a07927d993fa8e54c030d2e1e3bb013ae1f75a70c2923936e8ed3f6d34438b60066f8456ffe41da03e8d21b752d2c66a5a6
MISC metadata.xml 500 BLAKE2B 0876bc03bc9d32afee87523a55415ba549942acc4e9a1b65511ced2aa4038557854fd9f570dd1afb6d94ecd899d9cc48034911f547eb88ef76457cdfa62845e4 SHA512 c01d2263a3faff75c3b1f01eef806a9b0c0950c904c28c11b057cfdf2f5c302b95b20f45e649a3749c4ffafa6dafd759e7738bd8e807f23e49d2febaa212ec6b MISC metadata.xml 500 BLAKE2B 0876bc03bc9d32afee87523a55415ba549942acc4e9a1b65511ced2aa4038557854fd9f570dd1afb6d94ecd899d9cc48034911f547eb88ef76457cdfa62845e4 SHA512 c01d2263a3faff75c3b1f01eef806a9b0c0950c904c28c11b057cfdf2f5c302b95b20f45e649a3749c4ffafa6dafd759e7738bd8e807f23e49d2febaa212ec6b

View file

@ -0,0 +1,99 @@
From 338f1d9d1b829fec494d053f62820a2ee625b1ec Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Thu, 14 Dec 2017 15:32:28 -0800
Subject: [PATCH] lib/rbtree,drm/mm: add rbtree_replace_node_cached()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add a variant of rbtree_replace_node() that maintains the leftmost cache
of struct rbtree_root_cached when replacing nodes within the rbtree.
As drm_mm is the only rb_replace_node() being used on an interval tree,
the mistake looks fairly self-contained. Furthermore the only user of
drm_mm_replace_node() is its testsuite...
Testcase: igt/drm_mm/replace
Link: http://lkml.kernel.org/r/20171122100729.3742-1-chris@chris-wilson.co.uk
Link: https://patchwork.freedesktop.org/patch/msgid/20171109212435.9265-1-chris@chris-wilson.co.uk
Fixes: f808c13fd373 ("lib/interval_tree: fast overlap detection")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Acked-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Jérôme Glisse <jglisse@redhat.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
drivers/gpu/drm/drm_mm.c | 8 +++++---
include/linux/rbtree.h | 2 ++
lib/rbtree.c | 10 ++++++++++
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index 61a1c8ea74bc..c3c79ee6119e 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -575,21 +575,23 @@ EXPORT_SYMBOL(drm_mm_remove_node);
*/
void drm_mm_replace_node(struct drm_mm_node *old, struct drm_mm_node *new)
{
+ struct drm_mm *mm = old->mm;
+
DRM_MM_BUG_ON(!old->allocated);
*new = *old;
list_replace(&old->node_list, &new->node_list);
- rb_replace_node(&old->rb, &new->rb, &old->mm->interval_tree.rb_root);
+ rb_replace_node_cached(&old->rb, &new->rb, &mm->interval_tree);
if (drm_mm_hole_follows(old)) {
list_replace(&old->hole_stack, &new->hole_stack);
rb_replace_node(&old->rb_hole_size,
&new->rb_hole_size,
- &old->mm->holes_size);
+ &mm->holes_size);
rb_replace_node(&old->rb_hole_addr,
&new->rb_hole_addr,
- &old->mm->holes_addr);
+ &mm->holes_addr);
}
old->allocated = false;
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h
index d574361943ea..fcbeed4053ef 100644
--- a/include/linux/rbtree.h
+++ b/include/linux/rbtree.h
@@ -99,6 +99,8 @@ extern void rb_replace_node(struct rb_node *victim, struct rb_node *new,
struct rb_root *root);
extern void rb_replace_node_rcu(struct rb_node *victim, struct rb_node *new,
struct rb_root *root);
+extern void rb_replace_node_cached(struct rb_node *victim, struct rb_node *new,
+ struct rb_root_cached *root);
static inline void rb_link_node(struct rb_node *node, struct rb_node *parent,
struct rb_node **rb_link)
diff --git a/lib/rbtree.c b/lib/rbtree.c
index ba4a9d165f1b..d3ff682fd4b8 100644
--- a/lib/rbtree.c
+++ b/lib/rbtree.c
@@ -603,6 +603,16 @@ void rb_replace_node(struct rb_node *victim, struct rb_node *new,
}
EXPORT_SYMBOL(rb_replace_node);
+void rb_replace_node_cached(struct rb_node *victim, struct rb_node *new,
+ struct rb_root_cached *root)
+{
+ rb_replace_node(victim, new, &root->rb_root);
+
+ if (root->rb_leftmost == victim)
+ root->rb_leftmost = new;
+}
+EXPORT_SYMBOL(rb_replace_node_cached);
+
void rb_replace_node_rcu(struct rb_node *victim, struct rb_node *new,
struct rb_root *root)
{

View file

@ -19,6 +19,7 @@ SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}"
PATCHES=( PATCHES=(
"${FILESDIR}"/gpu-4.14.33.fix.patch "${FILESDIR}"/gpu-4.14.33.fix.patch
"${FILESDIR}"/drmmm-4.14.34.fix.patch
) )
src_prepare() { src_prepare() {