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
This commit is contained in:
Konstantin Belousov 2013-10-21 16:22:51 +00:00
parent 44f3b9c787
commit ce95d2f922
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=256848

View File

@ -685,7 +685,7 @@ gen6_do_reset(struct drm_device *dev, u8 flags)
/* 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 */