drm: i915: remove timeval users
authorArnd Bergmann <arnd@arndb.de>
Wed, 17 Jan 2018 15:48:53 +0000 (16:48 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 17 Jan 2018 18:03:44 +0000 (18:03 +0000)
struct timeval is deprecated because it cannot represent times
past 2038. In this driver, the only use of this structure is
to capture debug information. This is easily changed to ktime_t,
which we then format as needed when printing it later.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20180117154916.219273-1-arnd@arndb.de
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gpu_error.c

index cb1b69e7f439162c57543188d51d90a0656f510f..67f6f9ad44463f42d2030d52a4613e96036531b8 100644 (file)
@@ -453,9 +453,9 @@ struct intel_display_error_state;
 
 struct i915_gpu_state {
        struct kref ref;
-       struct timeval time;
-       struct timeval boottime;
-       struct timeval uptime;
+       ktime_t time;
+       ktime_t boottime;
+       ktime_t uptime;
 
        struct drm_i915_private *i915;
 
index 944059322daae9df32dd957331baabef8183a914..06577574296b4ba0b681647aff45807c0bb8724a 100644 (file)
@@ -610,6 +610,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
 {
        struct drm_i915_private *dev_priv = m->i915;
        struct drm_i915_error_object *obj;
+       struct timespec64 ts;
        int i, j;
 
        if (!error) {
@@ -620,12 +621,15 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
        if (*error->error_msg)
                err_printf(m, "%s\n", error->error_msg);
        err_printf(m, "Kernel: " UTS_RELEASE "\n");
-       err_printf(m, "Time: %ld s %ld us\n",
-                  error->time.tv_sec, error->time.tv_usec);
-       err_printf(m, "Boottime: %ld s %ld us\n",
-                  error->boottime.tv_sec, error->boottime.tv_usec);
-       err_printf(m, "Uptime: %ld s %ld us\n",
-                  error->uptime.tv_sec, error->uptime.tv_usec);
+       ts = ktime_to_timespec64(error->time);
+       err_printf(m, "Time: %lld s %ld us\n",
+                  (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
+       ts = ktime_to_timespec64(error->boottime);
+       err_printf(m, "Boottime: %lld s %ld us\n",
+                  (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
+       ts = ktime_to_timespec64(error->uptime);
+       err_printf(m, "Uptime: %lld s %ld us\n",
+                  (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
 
        for (i = 0; i < ARRAY_SIZE(error->engine); i++) {
                if (error->engine[i].hangcheck_stalled &&
@@ -1737,11 +1741,10 @@ static int capture(void *data)
 {
        struct i915_gpu_state *error = data;
 
-       do_gettimeofday(&error->time);
-       error->boottime = ktime_to_timeval(ktime_get_boottime());
-       error->uptime =
-               ktime_to_timeval(ktime_sub(ktime_get(),
-                                          error->i915->gt.last_init_time));
+       error->time = ktime_get_real();
+       error->boottime = ktime_get_boottime();
+       error->uptime = ktime_sub(ktime_get(),
+                                 error->i915->gt.last_init_time);
 
        capture_params(error);
        capture_uc_state(error);