Commit ec5e0cfb authored by Imre Deak's avatar Imre Deak Committed by Daniel Vetter

drm/i915: fix wait_remaining_ms_from_jiffies

schedule_timeout_uninterruptible() takes jiffies not ms.

v2:
- ignore the overflow issue, the practical part of that should
  be solved instead in the caller (Chris)

Note that this issue was introduced in

commit dce56b3c
Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
Date:   Thu Dec 19 14:29:40 2013 -0200

drm/i915: save some time when waiting the eDP timings

I've accidentally merged the broken v4 version of the patch (where
Jani noticed the issue [1]) instead of the v5, which was fixed [2].

[1] http://mid.gmane.org/87fvpnkgyg.fsf@intel.com
[2] http://mid.gmane.org/1388778311-2020-1-git-send-email-przanoni@gmail.comSigned-off-by: default avatarImre Deak <imre.deak@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
[danvet: Add admission of incompetence in the form of a note.]
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 27544369
...@@ -2649,8 +2649,7 @@ timespec_to_jiffies_timeout(const struct timespec *value) ...@@ -2649,8 +2649,7 @@ timespec_to_jiffies_timeout(const struct timespec *value)
static inline void static inline void
wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms) wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
{ {
unsigned long target_jiffies, tmp_jiffies; unsigned long target_jiffies, tmp_jiffies, remaining_jiffies;
unsigned int remaining_ms;
/* /*
* Don't re-read the value of "jiffies" every time since it may change * Don't re-read the value of "jiffies" every time since it may change
...@@ -2661,11 +2660,10 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms) ...@@ -2661,11 +2660,10 @@ wait_remaining_ms_from_jiffies(unsigned long timestamp_jiffies, int to_wait_ms)
msecs_to_jiffies_timeout(to_wait_ms); msecs_to_jiffies_timeout(to_wait_ms);
if (time_after(target_jiffies, tmp_jiffies)) { if (time_after(target_jiffies, tmp_jiffies)) {
remaining_ms = jiffies_to_msecs((long)target_jiffies - remaining_jiffies = target_jiffies - tmp_jiffies;
(long)tmp_jiffies); while (remaining_jiffies)
while (remaining_ms) remaining_jiffies =
remaining_ms = schedule_timeout_uninterruptible(remaining_jiffies);
schedule_timeout_uninterruptible(remaining_ms);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment