Re: [PATCH v2] drm/msm: Use 64-bit timekeeping

From: Arnd Bergmann
Date: Sat Apr 16 2016 - 19:47:57 EST


On Wednesday 13 April 2016 02:52:14 Tina Ruchandani wrote:
> ktime_t rem = ktime_sub(*timeout, now);
> - struct timespec ts = ktime_to_timespec(rem);
> - remaining_jiffies = timespec_to_jiffies(&ts);
> + struct timespec64 ts = ktime_to_timespec64(rem);
> +
> + remaining_jiffies = timespec64_to_jiffies(&ts);
>

Hi Tina,

The change looks correct to me, but I wonder if we should optimize
this code a little more, as it does two expensive 64-bit divisions.

How about

remaining_jiffies = msecs_to_jiffies(ktime_ms_delta(*timeout, now));

which only does one 64-bit division, and it's one that we can probably
optimize out in the future (we can check in ktime_ms_delta whether the
difference is more than 2^32 nanoseconds as the fast path).

Arnd