diff options
Diffstat (limited to 'drivers/gpu/drm/drm_irq.c')
| -rw-r--r-- | drivers/gpu/drm/drm_irq.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 8bcce7866d36..f92da0a32f0d 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -708,7 +708,10 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc,  	/* Subtract time delta from raw timestamp to get final  	 * vblank_time timestamp for end of vblank.  	 */ -	etime = ktime_sub_ns(etime, delta_ns); +	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);  	DRM_DEBUG("crtc %d : v %d p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n",  | 
