[PATCH] drm: Micro-optimise drm_mm_for_each_node_in_range()

Chris Wilson chris at chris-wilson.co.uk
Mon Feb 6 10:27:08 UTC 2017


On Mon, Feb 06, 2017 at 12:21:48PM +0200, Joonas Lahtinen wrote:
> On la, 2017-02-04 at 11:19 +0000, Chris Wilson wrote:
> > 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 <chris at chris-wilson.co.uk>
> > Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> 
> Slightly confused by the mixing of [start, end] and [start, end).

Yup. Getting the code able to address the full 64b range (i.e to use
inclusive ends everwhere (end = start + size - 1) like resource
management) is on the todo wishlist. Maybe even looking at whether this
could be migrated into more generic extents managements. But atm it is
fully cappable of describing our hw, so the goal is make sure it is
efficient for our and the rest of drm's uses.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the dri-devel mailing list