diff --git a/sys-kernel/mygentoo-sources/Manifest b/sys-kernel/mygentoo-sources/Manifest index 569aa11..42fc3fc 100644 --- a/sys-kernel/mygentoo-sources/Manifest +++ b/sys-kernel/mygentoo-sources/Manifest @@ -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 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 @@ -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.32.ebuild 740 BLAKE2B 2f744866c8acc095f4afdc65af3c05a6fe7bd700e38e07610f0fad7b415d51180d4d7e9e43ad69576e64b19b93c27277229f8d1b2080d5f42076c2d1d00b979c SHA512 6ee83ee65fc8f695440a38cf44fa6df971e38b0c377e7c591d3c1d627698def28e11adfefa8d8e31f86818b00ce2fafaa410198852229e079190376fb6aac039 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 diff --git a/sys-kernel/mygentoo-sources/files/drmmm-4.14.34.fix.patch b/sys-kernel/mygentoo-sources/files/drmmm-4.14.34.fix.patch new file mode 100644 index 0000000..a4eb0cc --- /dev/null +++ b/sys-kernel/mygentoo-sources/files/drmmm-4.14.34.fix.patch @@ -0,0 +1,99 @@ +From 338f1d9d1b829fec494d053f62820a2ee625b1ec Mon Sep 17 00:00:00 2001 +From: Chris Wilson +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 +Reviewed-by: Joonas Lahtinen +Acked-by: Davidlohr Bueso +Cc: Jérôme Glisse +Cc: Joonas Lahtinen +Cc: Daniel Vetter +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +--- + 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) + { diff --git a/sys-kernel/mygentoo-sources/mygentoo-sources-4.14.34.ebuild b/sys-kernel/mygentoo-sources/mygentoo-sources-4.14.34.ebuild index de79a72..f9e5783 100644 --- a/sys-kernel/mygentoo-sources/mygentoo-sources-4.14.34.ebuild +++ b/sys-kernel/mygentoo-sources/mygentoo-sources-4.14.34.ebuild @@ -19,6 +19,7 @@ SRC_URI="${KERNEL_URI} ${GENPATCHES_URI} ${ARCH_URI}" PATCHES=( "${FILESDIR}"/gpu-4.14.33.fix.patch + "${FILESDIR}"/drmmm-4.14.34.fix.patch ) src_prepare() {