This reverts two commits in a shot:

commit e62f2f5acba1d466da047983ae16f6b96b68b310
    drm: use monotonic time in drm_calc_vbltimestamp_from_scanoutpos
    
commit c61eef726a78ae77b6ce223d01ea2130f465fe5c
    drm: add support for monotonic vblank timestamps
    
---
 drivers/gpu/drm/drm_ioctl.c |    3 ---
 drivers/gpu/drm/drm_irq.c   |   42 +++++++++---------------------------------
 drivers/gpu/drm/drm_stub.c  |    8 --------
 include/drm/drmP.h          |    1 -
 include/uapi/drm/drm.h      |    1 -
 5 files changed, 9 insertions(+), 46 deletions(-)

--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -290,9 +290,6 @@ int drm_getcap(struct drm_device *dev, v
 		req->value |= dev->driver->prime_fd_to_handle ? DRM_PRIME_CAP_IMPORT : 0;
 		req->value |= dev->driver->prime_handle_to_fd ? DRM_PRIME_CAP_EXPORT : 0;
 		break;
-	case DRM_CAP_TIMESTAMP_MONOTONIC:
-		req->value = drm_timestamp_monotonic;
-		break;
 	case DRM_CAP_ASYNC_PAGE_FLIP:
 		req->value = dev->mode_config.async_page_flip;
 		break;
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -584,8 +584,7 @@ int drm_calc_vbltimestamp_from_scanoutpo
 					  unsigned flags,
 					  struct drm_crtc *refcrtc)
 {
-	ktime_t stime, etime, mono_time_offset;
-	struct timeval tv_etime;
+	struct timeval stime, raw_time;
 	struct drm_display_mode *mode;
 	int vbl_status, vtotal, vdisplay;
 	int vpos, hpos, i;
@@ -634,15 +633,13 @@ int drm_calc_vbltimestamp_from_scanoutpo
 		preempt_disable();
 
 		/* Get system timestamp before query. */
-		stime = ktime_get();
+		do_gettimeofday(&stime);
 
 		/* Get vertical and horizontal scanout pos. vpos, hpos. */
 		vbl_status = dev->driver->get_scanout_position(dev, crtc, &vpos, &hpos);
 
 		/* Get system timestamp after query. */
-		etime = ktime_get();
-		if (!drm_timestamp_monotonic)
-			mono_time_offset = ktime_get_monotonic_offset();
+		do_gettimeofday(&raw_time);
 
 		preempt_enable();
 
@@ -653,7 +650,7 @@ int drm_calc_vbltimestamp_from_scanoutpo
 			return -EIO;
 		}
 
-		duration_ns = ktime_to_ns(etime) - ktime_to_ns(stime);
+		duration_ns = timeval_to_ns(&raw_time) - timeval_to_ns(&stime);
 
 		/* Accept result with <  max_error nsecs timing uncertainty. */
 		if (duration_ns <= (s64) *max_error)
@@ -700,23 +697,14 @@ int drm_calc_vbltimestamp_from_scanoutpo
 		vbl_status |= 0x8;
 	}
 
-	if (!drm_timestamp_monotonic)
-		etime = ktime_sub(etime, mono_time_offset);
-
-	/* save this only for debugging purposes */
-	tv_etime = ktime_to_timeval(etime);
 	/* Subtract time delta from raw timestamp to get final
 	 * vblank_time timestamp for end of vblank.
 	 */
-	if (delta_ns < 0)
-		etime = ktime_add_ns(etime, -delta_ns);
-	else
-		etime = ktime_sub_ns(etime, delta_ns);
-	*vblank_time = ktime_to_timeval(etime);
+	*vblank_time = ns_to_timeval(timeval_to_ns(&raw_time) - delta_ns);
 
 	DRM_DEBUG("crtc %d : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n",
 		  crtc, (int)vbl_status, hpos, vpos,
-		  (long)tv_etime.tv_sec, (long)tv_etime.tv_usec,
+		  (long)raw_time.tv_sec, (long)raw_time.tv_usec,
 		  (long)vblank_time->tv_sec, (long)vblank_time->tv_usec,
 		  (int)duration_ns/1000, i);
 
@@ -728,17 +716,6 @@ int drm_calc_vbltimestamp_from_scanoutpo
 }
 EXPORT_SYMBOL(drm_calc_vbltimestamp_from_scanoutpos);
 
-static struct timeval get_drm_timestamp(void)
-{
-	ktime_t now;
-
-	now = ktime_get();
-	if (!drm_timestamp_monotonic)
-		now = ktime_sub(now, ktime_get_monotonic_offset());
-
-	return ktime_to_timeval(now);
-}
-
 /**
  * drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent
  * vblank interval.
@@ -776,9 +753,9 @@ u32 drm_get_last_vbltimestamp(struct drm
 	}
 
 	/* GPU high precision timestamp query unsupported or failed.
-	 * Return current monotonic/gettimeofday timestamp as best estimate.
+	 * Return gettimeofday timestamp as best estimate.
 	 */
-	*tvblank = get_drm_timestamp();
+	do_gettimeofday(tvblank);
 
 	return 0;
 }
@@ -867,8 +844,7 @@ void drm_send_vblank_event(struct drm_de
 		seq = drm_vblank_count_and_time(dev, crtc, &now);
 	} else {
 		seq = 0;
-
-		now = get_drm_timestamp();
+		do_gettimeofday(&now);
 	}
 	e->pipe = crtc;
 	send_vblank_event(dev, e, seq, &now);
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -49,12 +49,6 @@ EXPORT_SYMBOL(drm_vblank_offdelay);
 unsigned int drm_timestamp_precision = 20;  /* Default to 20 usecs. */
 EXPORT_SYMBOL(drm_timestamp_precision);
 
-/*
- * Default to use monotonic timestamps for wait-for-vblank and page-flip
- * complete events.
- */
-unsigned int drm_timestamp_monotonic = 1;
-
 MODULE_AUTHOR(CORE_AUTHOR);
 MODULE_DESCRIPTION(CORE_DESC);
 MODULE_LICENSE("GPL and additional rights");
@@ -62,13 +56,11 @@ MODULE_PARM_DESC(debug, "Enable debug ou
 MODULE_PARM_DESC(rnodes, "Enable experimental render nodes API");
 MODULE_PARM_DESC(vblankoffdelay, "Delay until vblank irq auto-disable [msecs]");
 MODULE_PARM_DESC(timestamp_precision_usec, "Max. error on timestamps [usecs]");
-MODULE_PARM_DESC(timestamp_monotonic, "Use monotonic timestamps");
 
 module_param_named(debug, drm_debug, int, 0600);
 module_param_named(rnodes, drm_rnodes, int, 0600);
 module_param_named(vblankoffdelay, drm_vblank_offdelay, int, 0600);
 module_param_named(timestamp_precision_usec, drm_timestamp_precision, int, 0600);
-module_param_named(timestamp_monotonic, drm_timestamp_monotonic, int, 0600);
 
 struct idr drm_minors_idr;
 
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1464,7 +1464,6 @@ extern unsigned int drm_rnodes;
 
 extern unsigned int drm_vblank_offdelay;
 extern unsigned int drm_timestamp_precision;
-extern unsigned int drm_timestamp_monotonic;
 
 extern struct class *drm_class;
 extern struct dentry *drm_debugfs_root;
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -779,7 +779,6 @@ struct drm_event_vblank {
 #define DRM_CAP_DUMB_PREFERRED_DEPTH 0x3
 #define DRM_CAP_DUMB_PREFER_SHADOW 0x4
 #define DRM_CAP_PRIME 0x5
-#define DRM_CAP_TIMESTAMP_MONOTONIC 0x6
 #define DRM_CAP_ASYNC_PAGE_FLIP 0x7
 
 #define DRM_PRIME_CAP_IMPORT 0x1
