From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Machek Subject: Re: [PATCH v2] PM: Use 64-bit timekeeping Date: Wed, 28 Jan 2015 08:42:54 +0100 Message-ID: <20150128074254.GA31048@amd> References: <20150128043836.GA4112@tinar> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:56980 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755703AbbA1UjI (ORCPT ); Wed, 28 Jan 2015 15:39:08 -0500 Content-Disposition: inline In-Reply-To: <20150128043836.GA4112@tinar> Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: Tina Ruchandani Cc: Linux PM List , Arnd Bergmann , Len Brown , "Rafael J. Wysocki" , linux-kernel@vger.kernel.org On Wed 2015-01-28 10:08:37, Tina Ruchandani wrote: > The freezer try_to_freeze_tasks uses 'struct timeval' for start > and end times, tracking time taken to freeze tasks. 'struct timeval' > on 32-bit systems will have its tv_sec overflow in year 2038 and > beyond. This patches uses 'ktime_t' (which has 64 bit values > for seconds) for start and end time. > > Suggested-by: Arnd Bergmann > Signed-off-by: Tina Ruchandani Nicer code, and without the overflow. Thanks! Acked-by: Pavel Machek > --- > Changes in v2: > - Use ktime_t to be able to use ktime_ms_delta > which is more efficient than timespec64 based methods. > --- > 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 5a6ec86..52414dd 100644 > --- a/kernel/power/process.c > +++ b/kernel/power/process.c > @@ -17,6 +17,7 @@ > #include > #include > #include > +#include > #include x> > /* > @@ -30,13 +31,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; > unsigned int elapsed_msecs; > bool wakeup = false; > int sleep_usecs = USEC_PER_MSEC; > > - do_gettimeofday(&start); > + start = ktime_get(); > > end_time = jiffies + msecs_to_jiffies(freeze_timeout_msecs); > > @@ -78,10 +78,8 @@ 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(); > + elapsed_msecs = (unsigned int) ktime_ms_delta(end, start); > > if (todo) { > printk("\n"); -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html