]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Revert r336326.
authormarkj <markj@FreeBSD.org>
Mon, 17 Dec 2018 21:13:05 +0000 (21:13 +0000)
committermarkj <markj@FreeBSD.org>
Mon, 17 Dec 2018 21:13:05 +0000 (21:13 +0000)
commitb3233889664c11f1de5bde15a080223e0c1b62b4
treebc4f59d3cf08d2f7afb12d0bd01655742c7a72a8
parent4eb45cfa5543b42ab9939de5460ca5f29f6f610c
Revert r336326.

In testing on a Dell Latitude 7480, having ig4.ko loaded during a
suspend caused the system to hang.  It turns out that ig4iic_intr() was
being called after the device entered D3, and entered an infinite loop
because a read of the I2C status register returned all ones, causing us
to attempt to read a byte from the data buffer until one of the status
bits clears.  This occured because ig4iic_pci0 shares an interrupt with
the VGA device on this laptop, so ig4iic_intr() gets called even when
there is no work to do.  This is exactly the problem fixed by r342170,
which resolves the hang for me and allows suspend/resume to work with
ig4.ko loaded.  So, re-enable autoloading of ig4.ko in the hope that
r342170 resolves the problem universally.

Reviewed by: gonzo
MFC after: 1 month (pending an MFC of r342170)
Differential Revision: https://reviews.freebsd.org/D18587
sys/dev/ichiic/ig4_pci.c