diff options
| author | Chris Wilson <[email protected]> | 2017-02-04 11:19:13 +0000 |
|---|---|---|
| committer | Daniel Vetter <[email protected]> | 2017-02-06 15:57:37 +0000 |
| commit | bbba96931762bcad8a691dfbf8d1520b71831c3a (patch) | |
| tree | f3e4eaf765b4b1dcb1207a30532e40f6478e5117 /drivers/gpu/drm/selftests/test-drm_mm.c | |
| parent | drm: mxsfb: Make local symbol mxsfb_funcs static (diff) | |
| download | kernel-bbba96931762bcad8a691dfbf8d1520b71831c3a.tar.gz kernel-bbba96931762bcad8a691dfbf8d1520b71831c3a.zip | |
drm: Micro-optimise drm_mm_for_each_node_in_range()
As we require valid start/end parameters, we can replace the initial
potential NULL with a pointer to the drm_mm.head_node and so reduce the
test on every iteration from a NULL + address comparison to just an
address comparison.
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-26 (-26)
function old new delta
i915_gem_evict_for_node 719 693 -26
(No other users outside of the test harness.)
Signed-off-by: Chris Wilson <[email protected]>
Cc: Joonas Lahtinen <[email protected]>
Reviewed-by: Joonas Lahtinen <[email protected]>
Signed-off-by: Daniel Vetter <[email protected]>
Link: http://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/selftests/test-drm_mm.c')
| -rw-r--r-- | drivers/gpu/drm/selftests/test-drm_mm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/gpu/drm/selftests/test-drm_mm.c b/drivers/gpu/drm/selftests/test-drm_mm.c index 1e71bc182ca9..2958f596081e 100644 --- a/drivers/gpu/drm/selftests/test-drm_mm.c +++ b/drivers/gpu/drm/selftests/test-drm_mm.c @@ -839,16 +839,18 @@ static bool assert_contiguous_in_range(struct drm_mm *mm, n++; } - drm_mm_for_each_node_in_range(node, mm, 0, start) { - if (node) { + if (start > 0) { + node = __drm_mm_interval_first(mm, 0, start - 1); + if (node->allocated) { pr_err("node before start: node=%llx+%llu, start=%llx\n", node->start, node->size, start); return false; } } - drm_mm_for_each_node_in_range(node, mm, end, U64_MAX) { - if (node) { + if (end < U64_MAX) { + node = __drm_mm_interval_first(mm, end, U64_MAX); + if (node->allocated) { pr_err("node after end: node=%llx+%llu, end=%llx\n", node->start, node->size, end); return false; |
