OSDN Git Service

scsi: bfa: use ktime_get_real_ts64 for firmware timestamp
authorArnd Bergmann <arnd@arndb.de>
Fri, 10 Nov 2017 15:37:09 +0000 (16:37 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 5 Dec 2017 01:32:52 +0000 (20:32 -0500)
BFA_TRC_TS() calculates a 32-bit microsecond timestamp using the
deprecated do_gettimeofday() function. This overflows roughly every 71
minutes, so it's obviously not used as an absolute time stamp, but it
seems wrong to use a time base for it that will jump during
settimeofday() calls, leap seconds, or the y2038 overflow.

This converts it to ktime_get_ts64(), which has none of those problems
but is not synchronized to wall-clock time.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Anil Gurumurthy <Anil.Gurumurthy@cavium.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/bfa/bfa_cs.h

index df6760c..9685efc 100644 (file)
 
 #define BFA_TRC_TS(_trcm)                               \
        ({                                              \
-               struct timeval tv;                      \
+               struct timespec64 ts;                   \
                                                        \
-               do_gettimeofday(&tv);                   \
-               (tv.tv_sec*1000000+tv.tv_usec);         \
+               ktime_get_ts64(&ts);                    \
+               (ts.tv_sec*1000000+ts.tv_nsec / 1000);  \
        })
 
 #ifndef BFA_TRC_TS