Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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/

+2 -4
+2 -4
drivers/gpu/drm/drm_mm.c
··· 406 406 parent_rb_node = rb_parent(rb_node); 407 407 left_node = rb_entry(left_rb_node, 408 408 struct drm_mm_node, rb_hole_addr); 409 - if ((left_node->subtree_max_hole < size || 410 - HOLE_SIZE(entry) == entry->subtree_max_hole) && 409 + if (left_node->subtree_max_hole < size && 411 410 parent_rb_node && parent_rb_node->rb_left != rb_node) 412 411 return rb_hole_addr_to_node(parent_rb_node); 413 412 } ··· 445 446 parent_rb_node = rb_parent(rb_node); 446 447 right_node = rb_entry(right_rb_node, 447 448 struct drm_mm_node, rb_hole_addr); 448 - if ((right_node->subtree_max_hole < size || 449 - HOLE_SIZE(entry) == entry->subtree_max_hole) && 449 + if (right_node->subtree_max_hole < size && 450 450 parent_rb_node && parent_rb_node->rb_right != rb_node) 451 451 return rb_hole_addr_to_node(parent_rb_node); 452 452 }