• Martin Peres's avatar
    drm/nouveau/pwr: fix the timers implementation with concurent processes · 9db66fce
    Martin Peres authored
    The problem with the current implementation is that adding a timer improperly
    checked which process would time up first by not taking into account how much
    time elapsed since their timer got scheduled. Rework the re-scheduling
    decision t fix this.
    
    The catch with this fix is that we are limited to scheduling timers of up to
    2^31 ticks to avoid any potential overflow. Since we are unlikely to need to
    wait for more than a second, this won't be a problem :)
    
    Another possible fix would be to decrement the timeouts of all processes but
    it would duplicate a lot of code and dealing with edge cases wasn't pretty
    last time I checked.
    Signed-off-by: default avatarMartin Peres <martin.peres@free.fr>
    Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
    9db66fce
nva3.fuc.h 22.5 KB