|
@@ -228,19 +228,23 @@ static void platform_recover(int platform_mode)
|
|
|
void swsusp_show_speed(struct timeval *start, struct timeval *stop,
|
|
|
unsigned nr_pages, char *msg)
|
|
|
{
|
|
|
- s64 elapsed_centisecs64;
|
|
|
- int centisecs;
|
|
|
- int k;
|
|
|
- int kps;
|
|
|
+ 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);
|
|
|
centisecs = elapsed_centisecs64;
|
|
|
if (centisecs == 0)
|
|
|
centisecs = 1; /* avoid div-by-zero */
|
|
|
k = nr_pages * (PAGE_SIZE / 1024);
|
|
|
kps = (k * 100) / centisecs;
|
|
|
- printk(KERN_INFO "PM: %s %d kbytes in %d.%02d seconds (%d.%02d MB/s)\n",
|
|
|
+ printk(KERN_INFO "PM: %s %u kbytes in %u.%02u seconds (%u.%02u MB/s)\n",
|
|
|
msg, k,
|
|
|
centisecs / 100, centisecs % 100,
|
|
|
kps / 1000, (kps % 1000) / 10);
|