• Daniel Vetter's avatar
    drm/i915: Handle inaccurate time conversion issues · 9cca3068
    Daniel Vetter authored
    So apparently jiffies<->nsec<->ktime isn't accurate or something. At
    elast if we timeout there's occasionally still a few hundred us left
    (in a 2 second timeout).
    
    Stuff I've tried and thrown out again:
    - Sampling the before timestamp before jiffies. Doesn't improve test
      path rate at all.
    - Using jiffies. Way to inaccurate, which means way too much drift
      with signals plus automatic ioctl restarting in userspace. In
      hindsight we should have used an absolute timeout, but hey we need
      something for v3 of the i915 gem wait interfaces ;-)
    - Trying to figure out where accuracy gets lost. gl testcase really
      don't care all that much about this (as long as isn't not massively
      off), it's just that the testcase gets a bit upset if it receives an
      EITME with timeout > 0.
    
    So as long as we're in the ballbark it's good enough. So patch
    everything up if we're at most one jiffies off. I get's me a solid
    test again.
    
    This regression is probably introduced in
    
    commit 5ed0bdf2
    Author: Thomas Gleixner <tglx@linutronix.de>
    Date:   Wed Jul 16 21:05:06 2014 +0000
    
        drm: i915: Use nsec based interfaces
    
        Use ktime_get_raw_ns() and get rid of the back and forth timespec
        conversions.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    
    Probably because I'm too lazy to confirm myself and still waiting for
    QA ;-)
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82749Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    9cca3068
i915_gem.c 137 KB