diff mbox

Revert "drm/i915: Fix races on fbdev"

Message ID 1459510861-29035-1-git-send-email-joonas.lahtinen@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonas Lahtinen April 1, 2016, 11:41 a.m. UTC
This reverts commit a7442b93cf32c1e1ddb721a26cd1f92302e2a222.

With the patch applied SNB, IVB and ILK are experiencing hard machine
hangs. Original patch was to fix "just" kernel panics so it's not a good
trade-off.

Proper fix for the panic is on the way, lets revert until then.

Fixes: a7442b93cf32 ("drm/i915: Fix races on fbdev")
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
Cc: stable@vger.kernel.org
Acked-by: Lukas Wunner <lukas@wunner.de>
Tested-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_dma.c    | 8 +++++---
 drivers/gpu/drm/i915/intel_fbdev.c | 3 ---
 2 files changed, 5 insertions(+), 6 deletions(-)

Comments

Chris Wilson April 1, 2016, 12:02 p.m. UTC | #1
On Fri, Apr 01, 2016 at 02:41:01PM +0300, Joonas Lahtinen wrote:
> This reverts commit a7442b93cf32c1e1ddb721a26cd1f92302e2a222.
> 
> With the patch applied SNB, IVB and ILK are experiencing hard machine
> hangs. Original patch was to fix "just" kernel panics so it's not a good
> trade-off.
> 
> Proper fix for the panic is on the way, lets revert until then.
> 
> Fixes: a7442b93cf32 ("drm/i915: Fix races on fbdev")
> Cc: Lukas Wunner <lukas@wunner.de>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
> Cc: stable@vger.kernel.org
> Acked-by: Lukas Wunner <lukas@wunner.de>
> Tested-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
> Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>

Protocol dictates
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Joonas Lahtinen April 1, 2016, 12:08 p.m. UTC | #2
On pe, 2016-04-01 at 13:02 +0100, Chris Wilson wrote:
> On Fri, Apr 01, 2016 at 02:41:01PM +0300, Joonas Lahtinen wrote:
> > 
> > This reverts commit a7442b93cf32c1e1ddb721a26cd1f92302e2a222.
> > 
> > With the patch applied SNB, IVB and ILK are experiencing hard machine
> > hangs. Original patch was to fix "just" kernel panics so it's not a good
> > trade-off.
> > 
> > Proper fix for the panic is on the way, lets revert until then.
> > 
> > Fixes: a7442b93cf32 ("drm/i915: Fix races on fbdev")
> > Cc: Lukas Wunner <lukas@wunner.de>
> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Tomi Sarvela <tomi.p.sarvela@intel.com>
> > Cc: stable@vger.kernel.org
> > Acked-by: Lukas Wunner <lukas@wunner.de>
> > Tested-by: Tomi Sarvela <tomi.p.sarvela@intel.com>
> > Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Protocol dictates
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>

Thanks for the review. Merged (although due to delay in proxy or
somewhere, did not end up in the tree). But that does not mean we did
not go by the protocol.

Regards, Joonas

> -Chris
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index a66ce49..b377753 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -493,9 +493,11 @@  static int i915_load_modeset_init(struct drm_device *dev)
 	 * Some ports require correctly set-up hpd registers for detection to
 	 * work properly (leading to ghost connected connector status), e.g. VGA
 	 * on gm45.  Hence we can only set up the initial fbdev config after hpd
-	 * irqs are fully enabled. We protect the fbdev initial config scanning
-	 * against hotplug events by waiting in intel_fbdev_output_poll_changed
-	 * until the asynchronous thread has finished.
+	 * irqs are fully enabled. Now we should scan for the initial config
+	 * only once hotplug handling is enabled, but due to screwed-up locking
+	 * around kms/fbdev init we can't protect the fdbev initial config
+	 * scanning against hotplug events. Hence do this first and ignore the
+	 * tiny window where we will loose hotplug notifactions.
 	 */
 	intel_fbdev_initial_config_async(dev);
 
diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
index 4cf04ce..79ac202 100644
--- a/drivers/gpu/drm/i915/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/intel_fbdev.c
@@ -810,8 +810,6 @@  void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronous
 void intel_fbdev_output_poll_changed(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-
-	async_synchronize_full();
 	if (dev_priv->fbdev)
 		drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper);
 }
@@ -823,7 +821,6 @@  void intel_fbdev_restore_mode(struct drm_device *dev)
 	struct intel_fbdev *ifbdev = dev_priv->fbdev;
 	struct drm_fb_helper *fb_helper;
 
-	async_synchronize_full();
 	if (!ifbdev)
 		return;