Resume from hibernation doesn't work any more on my MSI Wind U100 with the current mainline. It hangs forever after devices have been resumed, apparently during the console switch back to the terminal where s2disk was started (the problem seems to be only reproducible with s2disk).
Bisection turned up the following commit as the one that introduced the regression:
Author: Alan Cox <email@example.com>
Date: Sat Sep 19 13:13:22 2009 -0700
tty: make the kref destructor occur asynchronously
We want to be able to sleep in the destructor for USB at least. It isn't a
hot path so just pushing it to a work queue doesn't really cause any
Signed-off-by: Alan Cox <firstname.lastname@example.org>
Signed-off-by: Greg Kroah-Hartman <email@example.com>
I'm not sure about the actual root cause at the moment, but it appears to be a race condition of some sort, as I'm able to reproduce this on a faster machine.
Handled-By : From: Dave Young <firstname.lastname@example.org>
Patch : http://patchwork.kernel.org/patch/50321/
Not-Handled-By : From: Dave Young <email@example.com>
Handled-By : Dave Young <firstname.lastname@example.org>
Committed (with fixes) as f278a2f7bbc2239f479eaf63d0b3ae573b1d746c.
The reason it causes problems for suspend and hibernate is that the X server will try to do a VT_ACTIVATE ioctl on the tty, but it gets rejected with EIO due to the hangup handling having been delayed due to the asynchronous workqueue thing.
Please verify that current git (I'll release -rc1 soon) works for everybody.