MFC 292409:

It seems certain Intel GPUs use GPIO bitbanging over a child device
instead of GMBUS access for I2C transfers.  The GMBUS driver falls back
to this mode when a transfer times out.  However, the first transfer to
timeout was sending the request back to itself resulting in an panic due
to recursing on a lock.  Fix it to forward the request on to the proper
device.  This appears to have been accidentally changed in r277487.
This commit is contained in:
jhb 2016-01-18 20:44:29 +00:00
parent e8ea29ce3a
commit 93e78d3449

View File

@ -467,8 +467,7 @@ timeout:
* Try GPIO bitbanging instead.
*/
sc->force_bit_dev = true;
error = -IICBUS_TRANSFER(idev, msgs, nmsgs);
goto out;
error = -IICBUS_TRANSFER(dev_priv->bbbus[unit], msgs, nmsgs);
out:
sx_xunlock(&dev_priv->gmbus_sx);