svn commit: r256848 - head/sys/dev/drm2/i915

Konstantin Belousov kib at FreeBSD.org
Mon Oct 21 16:22:51 UTC 2013


Author: kib
Date: Mon Oct 21 16:22:51 2013
New Revision: 256848
URL: http://svnweb.freebsd.org/changeset/base/256848

Log:
  Reset function on SandyBridge holds the gt_lock for the whole duration
  already.  Also, according to the specs, GDRST register is not in the
  power well, so the forcewake for reset status read is excessive for
  this reason.
  
  Use plain register read for waiting of the reset completion
  notification, to avoid gt_lock recursion.  Linux upstream did the
  similar change, but their code was already restructured.
  
  Reported by:	ray
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/dev/drm2/i915/i915_drv.c

Modified: head/sys/dev/drm2/i915/i915_drv.c
==============================================================================
--- head/sys/dev/drm2/i915/i915_drv.c	Mon Oct 21 16:17:46 2013	(r256847)
+++ head/sys/dev/drm2/i915/i915_drv.c	Mon Oct 21 16:22:51 2013	(r256848)
@@ -685,7 +685,7 @@ gen6_do_reset(struct drm_device *dev, u8
 
 	/* Spin waiting for the device to ack the reset request */
 	ret = _intel_wait_for(dev,
-	    (I915_READ(GEN6_GDRST) & GEN6_GRDOM_FULL) == 0,
+	    (I915_READ_NOTRACE(GEN6_GDRST) & GEN6_GRDOM_FULL) == 0,
 	    500, 1, "915rst");
 
 	/* If reset with a user forcewake, try to restore, otherwise turn it off */


More information about the svn-src-head mailing list