* [PATCH] PM/freezer: y2038, use boottime to compare tstamps
@ 2016-01-31 19:29 Abhilash Jindal
2016-01-31 19:42 ` Pavel Machek
0 siblings, 1 reply; 3+ messages in thread
From: Abhilash Jindal @ 2016-01-31 19:29 UTC (permalink / raw)
To: linux-pm; +Cc: rjw, pavel, Abhilash Jindal
Wall time obtained from do_gettimeofday gives 32 bit timeval which can only
represent time until January 2038. This patch moves to ktime_t, a 64-bit time.
Also, wall time is susceptible to sudden jumps due to user setting the time or
due to NTP. Boot time is constantly increasing time better suited for
subtracting two timestamps.
Signed-off-by: Abhilash Jindal <klock.android@gmail.com>
---
kernel/power/process.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 564f786..df058be 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -30,13 +30,12 @@ static int try_to_freeze_tasks(bool user_only)
unsigned long end_time;
unsigned int todo;
bool wq_busy = false;
- struct timeval start, end;
- u64 elapsed_msecs64;
+ ktime_t start, end, elapsed;
unsigned int elapsed_msecs;
bool wakeup = false;
int sleep_usecs = USEC_PER_MSEC;
- do_gettimeofday(&start);
+ start = ktime_get_boottime();
end_time = jiffies + msecs_to_jiffies(freeze_timeout_msecs);
@@ -78,10 +77,9 @@ static int try_to_freeze_tasks(bool user_only)
sleep_usecs *= 2;
}
- do_gettimeofday(&end);
- elapsed_msecs64 = timeval_to_ns(&end) - timeval_to_ns(&start);
- do_div(elapsed_msecs64, NSEC_PER_MSEC);
- elapsed_msecs = elapsed_msecs64;
+ end = ktime_get_boottime();
+ elapsed = ktime_sub(end, start);
+ elapsed_msecs = ktime_to_ms(elapsed);
if (todo) {
pr_cont("\n");
--
1.7.9.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] PM/freezer: y2038, use boottime to compare tstamps
2016-01-31 19:29 [PATCH] PM/freezer: y2038, use boottime to compare tstamps Abhilash Jindal
@ 2016-01-31 19:42 ` Pavel Machek
2016-02-21 13:46 ` Rafael J. Wysocki
0 siblings, 1 reply; 3+ messages in thread
From: Pavel Machek @ 2016-01-31 19:42 UTC (permalink / raw)
To: Abhilash Jindal; +Cc: linux-pm, rjw
On Sun 2016-01-31 14:29:01, Abhilash Jindal wrote:
> Wall time obtained from do_gettimeofday gives 32 bit timeval which can only
> represent time until January 2038. This patch moves to ktime_t, a 64-bit time.
>
> Also, wall time is susceptible to sudden jumps due to user setting the time or
> due to NTP. Boot time is constantly increasing time better suited for
> subtracting two timestamps.
Umm. Setting time while we are freezeing is probably not going to be a
problem, but ok, why not... Code is simpler as well, and 2038 is
coming ;-).
Acked-by: Pavel Machek <pavel@ucw.cz>
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] PM/freezer: y2038, use boottime to compare tstamps
2016-01-31 19:42 ` Pavel Machek
@ 2016-02-21 13:46 ` Rafael J. Wysocki
0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2016-02-21 13:46 UTC (permalink / raw)
To: Pavel Machek, Abhilash Jindal; +Cc: linux-pm
On Sunday, January 31, 2016 08:42:55 PM Pavel Machek wrote:
> On Sun 2016-01-31 14:29:01, Abhilash Jindal wrote:
> > Wall time obtained from do_gettimeofday gives 32 bit timeval which can only
> > represent time until January 2038. This patch moves to ktime_t, a 64-bit time.
> >
> > Also, wall time is susceptible to sudden jumps due to user setting the time or
> > due to NTP. Boot time is constantly increasing time better suited for
> > subtracting two timestamps.
>
> Umm. Setting time while we are freezeing is probably not going to be a
> problem, but ok, why not... Code is simpler as well, and 2038 is
> coming ;-).
>
> Acked-by: Pavel Machek <pavel@ucw.cz>
Queued up for 4.6, thanks!
Rafael
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-02-21 17:45 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-31 19:29 [PATCH] PM/freezer: y2038, use boottime to compare tstamps Abhilash Jindal
2016-01-31 19:42 ` Pavel Machek
2016-02-21 13:46 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).