drm/msm: fix timeout calculation
The 'timeout' value comes from userspace (CLOCK_MONOTONIC), but converting this directly to jiffies doesn't take into account the initial jiffies count at boot, which may differ from the base time of CLOCK_MONOTONIC. TODO: add ktime_delta_jiffies() when rebasing on 4.1 and use that instead of ktime_sub/ktime_to_timespec/timespec_to_jiffies combo (as suggested by Arnd) v2: switch over from 'struct timespec' to ktime_t throughout, since 'struct timespec' will be deprecated (as suggested by Arnd) v3: minor cosmetic tweaks Cc: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
@@ -204,7 +204,7 @@ int msm_atomic_commit(struct drm_device *dev,
|
||||
{
|
||||
int nplanes = dev->mode_config.num_total_plane;
|
||||
int ncrtcs = dev->mode_config.num_crtc;
|
||||
struct timespec timeout;
|
||||
ktime_t timeout;
|
||||
struct msm_commit *c;
|
||||
int i, ret;
|
||||
|
||||
@@ -281,7 +281,7 @@ int msm_atomic_commit(struct drm_device *dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
jiffies_to_timespec(jiffies + msecs_to_jiffies(1000), &timeout);
|
||||
timeout = ktime_add_ms(ktime_get(), 1000);
|
||||
|
||||
ret = msm_wait_fence_interruptable(dev, c->fence, &timeout);
|
||||
if (ret) {
|
||||
|
||||
Reference in New Issue
Block a user