From b3233889664c11f1de5bde15a080223e0c1b62b4 Mon Sep 17 00:00:00 2001 From: markj Date: Mon, 17 Dec 2018 21:13:05 +0000 Subject: [PATCH] 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 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sys/dev/ichiic/ig4_pci.c b/sys/dev/ichiic/ig4_pci.c index ae73f3b2abca..22f507261ed3 100644 --- a/sys/dev/ichiic/ig4_pci.c +++ b/sys/dev/ichiic/ig4_pci.c @@ -232,7 +232,5 @@ DRIVER_MODULE_ORDERED(ig4iic_pci, pci, ig4iic_pci_driver, ig4iic_pci_devclass, 0 MODULE_DEPEND(ig4iic_pci, pci, 1, 1, 1); MODULE_DEPEND(ig4iic_pci, iicbus, IICBUS_MINVER, IICBUS_PREFVER, IICBUS_MAXVER); MODULE_VERSION(ig4iic_pci, 1); -/* - * Loading this module breaks suspend/resume on laptops - * Do not add MODULE_PNP_INFO until it's impleneted - */ +MODULE_PNP_INFO("W32:vendor/device", pci, ig4iic_pci, ig4iic_pci_devices, + sizeof(ig4iic_pci_devices[0]), nitems(ig4iic_pci_devices));