• Chris Wilson's avatar
    drm/i915/gem: Remove disordered per-file request list for throttling · 27a5dcfe
    Chris Wilson authored
    I915_GEM_THROTTLE dates back to the time before contexts where there was
    just a single engine, and therefore a single timeline and request list
    globally. That request list was in execution/retirement order, and so
    walking it to find a particular aged request made sense and could be
    split per file.
    
    That is no more. We now have many timelines with a file, as many as the
    user wants to construct (essentially per-engine, per-context). Each of
    those run independently and so make the single list futile. Remove the
    disordered list, and iterate over all the timelines to find a request to
    wait on in each to satisfy the criteria that the CPU is no more than 20ms
    ahead of its oldest request.
    
    It should go without saying that the I915_GEM_THROTTLE ioctl is no
    longer used as the primary means of throttling, so it makes sense to push
    the complication into the ioctl where it only impacts upon its few
    irregular users, rather than the execbuf/retire where everybody has to
    pay the cost. Fortunately, the few users do not create vast amount of
    contexts, so the loops over contexts/engines should be concise.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200728152010.30701-1-chris@chris-wilson.co.ukSigned-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
    27a5dcfe
i915_drv.c 52 KB