diff --git a/drivers/gpu/nvgpu/common/linux/timers.c b/drivers/gpu/nvgpu/common/linux/timers.c index efd04557b..140ae80ea 100644 --- a/drivers/gpu/nvgpu/common/linux/timers.c +++ b/drivers/gpu/nvgpu/common/linux/timers.c @@ -229,3 +229,15 @@ void nvgpu_msleep(unsigned int msecs) { msleep(msecs); } + +/** + * nvgpu_current_time_ms - Time in milliseconds from a monotonic clock. + * + * Return a clock in millisecond units. The start time of the clock is + * unspecified; the time returned can be compared with older ones to measure + * durations. The source clock does not jump when the system clock is adjusted. + */ +s64 nvgpu_current_time_ms(void) +{ + return ktime_to_ms(ktime_get()); +} diff --git a/drivers/gpu/nvgpu/include/nvgpu/timers.h b/drivers/gpu/nvgpu/include/nvgpu/timers.h index 0aadd0df0..be903e54a 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/timers.h +++ b/drivers/gpu/nvgpu/include/nvgpu/timers.h @@ -17,6 +17,8 @@ #ifndef __NVGPU_TIMERS_H__ #define __NVGPU_TIMERS_H__ +#include + struct gk20a; /* @@ -97,4 +99,9 @@ void nvgpu_msleep(unsigned int msecs); void nvgpu_usleep_range(unsigned int min_us, unsigned int max_us); void nvgpu_udelay(unsigned int usecs); +/* + * Timekeeping. + */ +s64 nvgpu_current_time_ms(void); + #endif