diff options
Diffstat (limited to 'kernel/power/hibernate.c')
| -rw-r--r-- | kernel/power/hibernate.c | 14 | 
1 files changed, 6 insertions, 8 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 1f35a3478f3c..2329daae5255 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -28,6 +28,7 @@  #include <linux/syscore_ops.h>  #include <linux/ctype.h>  #include <linux/genhd.h> +#include <linux/ktime.h>  #include <trace/events/power.h>  #include "power.h" @@ -232,20 +233,17 @@ static void platform_recover(int platform_mode)   * @nr_pages: Number of memory pages processed between @start and @stop.   * @msg: Additional diagnostic message to print.   */ -void swsusp_show_speed(struct timeval *start, struct timeval *stop, -			unsigned nr_pages, char *msg) +void swsusp_show_speed(ktime_t start, ktime_t stop, +		      unsigned nr_pages, char *msg)  { +	ktime_t diff;  	u64 elapsed_centisecs64;  	unsigned int centisecs;  	unsigned int k;  	unsigned int kps; -	elapsed_centisecs64 = timeval_to_ns(stop) - timeval_to_ns(start); -	/* -	 * If "(s64)elapsed_centisecs64 < 0", it will print long elapsed time, -	 * it is obvious enough for what went wrong. -	 */ -	do_div(elapsed_centisecs64, NSEC_PER_SEC / 100); +	diff = ktime_sub(stop, start); +	elapsed_centisecs64 = ktime_divns(diff, 10*NSEC_PER_MSEC);  	centisecs = elapsed_centisecs64;  	if (centisecs == 0)  		centisecs = 1;	/* avoid div-by-zero */  |