Monday, July 01, 2013

"mei" driver suspend regression in linux-3.10

For all those running kernels from Kernel:HEAD, where 3.10-final has arrived today, be warned that a suspend / resume regression crept in (I spotted and reported that after -rc4 or such, but it has not been fixed).
This regression makes my Thinkpad X200s not resume from suspend to RAM (I have not tried suspend to disk, but it might be affected, too), the machine just freezes hard on resume.
Fortunately, it is relatively easy to work around.
The affected driver is the "mei_me" driver for Intel's Management Engine, which AFAICT allows you to use management functions of the chipset like serial-over lan and similar. I don't need this, but I need a suspend to RAM that works :-)

The work around is to simply unbind the driver after boot, then the machine will suspend and resume fine (blacklisting the module does not work since the driver is built in in the openSUSE kernel).

Find out, which device is bound to the driver:

# find /sys/bus/pci/drivers/mei_me/ -type l|sed 's#^.*/##'
0000:00:03.0

Now unbind (as root):
# echo 0000:00:03.0 > /sys/bus/pci/drivers/mei_me/unbind

...and your next resume will work better.