summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2020-06-08 16:41:58 +0300
committerChristian König <christian.koenig@amd.com>2020-06-15 11:51:18 +0300
commitd2fb716a7abd984c1f34335dbb295629da527baf (patch)
tree346893496046803148613d28d8d9a682f5ae9ec5
parent72822c3bfa8ef7c997692acd580c73c263107592 (diff)
downloadlinux-d2fb716a7abd984c1f34335dbb295629da527baf.tar.xz
drm/mm: remove invalid entry based optimization
When the current entry is rejected as candidate for the search it does not mean that we can abort the subtree search. It is perfectly possible that only the alignment, but not the size is the reason for the rejection. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Nirmoy Das <nirmoy.das@amd.com> Link: https://patchwork.freedesktop.org/patch/369394/
-rw-r--r--drivers/gpu/drm/drm_mm.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c
index 60e9a9c91e9d..82d2888eb7fe 100644
--- a/drivers/gpu/drm/drm_mm.c
+++ b/drivers/gpu/drm/drm_mm.c
@@ -406,8 +406,7 @@ next_hole_high_addr(struct drm_mm_node *entry, u64 size)
parent_rb_node = rb_parent(rb_node);
left_node = rb_entry(left_rb_node,
struct drm_mm_node, rb_hole_addr);
- if ((left_node->subtree_max_hole < size ||
- HOLE_SIZE(entry) == entry->subtree_max_hole) &&
+ if (left_node->subtree_max_hole < size &&
parent_rb_node && parent_rb_node->rb_left != rb_node)
return rb_hole_addr_to_node(parent_rb_node);
}
@@ -446,8 +445,7 @@ next_hole_low_addr(struct drm_mm_node *entry, u64 size)
parent_rb_node = rb_parent(rb_node);
right_node = rb_entry(right_rb_node,
struct drm_mm_node, rb_hole_addr);
- if ((right_node->subtree_max_hole < size ||
- HOLE_SIZE(entry) == entry->subtree_max_hole) &&
+ if (right_node->subtree_max_hole < size &&
parent_rb_node && parent_rb_node->rb_right != rb_node)
return rb_hole_addr_to_node(parent_rb_node);
}