From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755335Ab3KUSn7 (ORCPT ); Thu, 21 Nov 2013 13:43:59 -0500 Received: from cdptpa-outbound-snat.email.rr.com ([107.14.166.226]:65433 "EHLO cdptpa-oedge-vip.email.rr.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754767Ab3KUSmU (ORCPT ); Thu, 21 Nov 2013 13:42:20 -0500 Message-Id: <20131121184218.502653733@goodmis.org> User-Agent: quilt/0.60-1 Date: Thu, 21 Nov 2013 13:42:03 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org, linux-rt-users Cc: Thomas Gleixner , Carsten Emde , Sebastian Andrzej Siewior , John Kacur , "Luis Claudio R. Goncalves" Subject: [PATCH RT 4/5] drm: remove preempt_disable() from drm_calc_vbltimestamp_from_scanoutpos() References: <20131121184159.676777537@goodmis.org> Content-Disposition: inline; filename=0004-drm-remove-preempt_disable-from-drm_calc_vbltimestam.patch X-RR-Connecting-IP: 107.14.168.142:25 X-Cloudmark-Score: 0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.4.69-rt86-rc1 stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Andrzej Siewior Luis captured the following: | BUG: sleeping function called from invalid context at kernel/rtmutex.c:659 | in_atomic(): 1, irqs_disabled(): 0, pid: 517, name: Xorg | 2 locks held by Xorg/517: | #0: | ( | &dev->vbl_lock | ){......} | , at: | [] drm_vblank_get+0x30/0x2b0 [drm] | #1: | ( | &dev->vblank_time_lock | ){......} | , at: | [] drm_vblank_get+0xb1/0x2b0 [drm] | Preemption disabled at: | [] i915_get_vblank_timestamp+0x45/0xa0 [i915] | CPU: 3 PID: 517 Comm: Xorg Not tainted 3.10.10-rt7+ #5 | Call Trace: | [] dump_stack+0x19/0x1b | [] __might_sleep+0xff/0x170 | [] rt_spin_lock+0x24/0x60 | [] i915_read32+0x27/0x170 [i915] | [] i915_pipe_enabled+0x31/0x40 [i915] | [] i915_get_crtc_scanoutpos+0x3e/0x1b0 [i915] | [] drm_calc_vbltimestamp_from_scanoutpos+0xf4/0x430 [drm] | [] i915_get_vblank_timestamp+0x45/0xa0 [i915] | [] drm_get_last_vbltimestamp+0x48/0x70 [drm] | [] drm_vblank_get+0x185/0x2b0 [drm] | [] drm_wait_vblank+0x83/0x5d0 [drm] | [] drm_ioctl+0x552/0x6a0 [drm] | [] do_vfs_ioctl+0x325/0x5b0 | [] SyS_ioctl+0x81/0xa0 | [] tracesys+0xdd/0xe2 After a longer thread it was decided to drop the preempt_disable()/ enable() invocations which were meant for -RT and Mario Kleiner looks for a replacement. Cc: stable-rt@vger.kernel.org Reported-By: Luis Claudio R. Goncalves Signed-off-by: Sebastian Andrzej Siewior Signed-off-by: Steven Rostedt --- drivers/gpu/drm/drm_irq.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index dc33ba5..07dfb99 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -619,11 +619,6 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc, * code gets preempted or delayed for some reason. */ for (i = 0; i < DRM_TIMESTAMP_MAXRETRIES; i++) { - /* Disable preemption to make it very likely to - * succeed in the first iteration even on PREEMPT_RT kernel. - */ - preempt_disable(); - /* Get system timestamp before query. */ do_gettimeofday(&stime); @@ -633,8 +628,6 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, int crtc, /* Get system timestamp after query. */ do_gettimeofday(&raw_time); - preempt_enable(); - /* 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", -- 1.8.4.rc3