diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-03 16:54:17 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-02-03 16:54:17 +0100 |
commit | ce85e0cb0152018519230c4e8e10460c56d48164 (patch) | |
tree | 109012cb1608c9a509a4b68c3d02c986d6e552d7 | |
parent | 45e947f17e6a306a729ea478f7e20566cedb3fee (diff) | |
parent | eb2ed66fe56f30c6ea841ac11681a2f51049b221 (diff) |
Merge remote-tracking branch 'origin/topic/core-stuff' into drm-intel-nightly
-rw-r--r-- | drivers/gpu/drm/drm_irq.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 75647e7f012b..10574a0c3a55 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -185,8 +185,15 @@ static void vblank_disable_and_save(struct drm_device *dev, int crtc) return; } - dev->driver->disable_vblank(dev, crtc); - vblank->enabled = false; + /* + * Only disable vblank interrupts if they're enabled. This avoids + * calling the ->disable_vblank() operation in atomic context with the + * hardware potentially runtime suspended. + */ + if (vblank->enabled) { + dev->driver->disable_vblank(dev, crtc); + vblank->enabled = false; + } /* No further vblank irq's will be processed after * this point. Get current hardware vblank count and |