File revert-ktime_mono_to_real.diff of Package drm

Revert d2cb58c85ce4789caafa66fa8f1c641ab2504ead

---
 drivers/gpu/drm/drm_irq.c |   16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -542,8 +542,8 @@ int drm_calc_vbltimestamp_from_scanoutpo
 					  const struct drm_crtc *refcrtc,
 					  const struct drm_display_mode *mode)
 {
+	ktime_t stime, etime, mono_time_offset;
 	struct timeval tv_etime;
-	ktime_t stime, etime;
 	int vbl_status;
 	int vpos, hpos, i;
 	int framedur_ns, linedur_ns, pixeldur_ns, delta_ns, duration_ns;
@@ -588,6 +588,13 @@ int drm_calc_vbltimestamp_from_scanoutpo
 		vbl_status = dev->driver->get_scanout_position(dev, crtc, flags, &vpos,
 							       &hpos, &stime, &etime);
 
+		/*
+		 * Get correction for CLOCK_MONOTONIC -> CLOCK_REALTIME if
+		 * CLOCK_REALTIME is requested.
+		 */
+		if (!drm_timestamp_monotonic)
+			mono_time_offset = ktime_get_monotonic_offset();
+
 		/* Return as no-op if scanout query unsupported or failed. */
 		if (!(vbl_status & DRM_SCANOUTPOS_VALID)) {
 			DRM_DEBUG("crtc %d : scanoutpos query failed [%d].\n",
@@ -626,7 +633,7 @@ int drm_calc_vbltimestamp_from_scanoutpo
 	delta_ns = vpos * linedur_ns + hpos * pixeldur_ns;
 
 	if (!drm_timestamp_monotonic)
-		etime = ktime_mono_to_real(etime);
+		etime = ktime_sub(etime, mono_time_offset);
 
 	/* save this only for debugging purposes */
 	tv_etime = ktime_to_timeval(etime);
@@ -657,7 +664,10 @@ static struct timeval get_drm_timestamp(
 {
 	ktime_t now;
 
-	now = drm_timestamp_monotonic ? ktime_get() : ktime_get_real();
+	now = ktime_get();
+	if (!drm_timestamp_monotonic)
+		now = ktime_sub(now, ktime_get_monotonic_offset());
+
 	return ktime_to_timeval(now);
 }