Re: Regression: USB is nfg after suspend/resume(RAM) cycle on Intel chipset

Mark Lord
2007-05-29T18:29:16Z

Mark Lord wrote:
> Linus Torvalds wrote:
..
>> There's a different (but related to all the same freezer problems)
>> patch by Rafael Wysocki <rjw@sisk.pl>:
>>
>> Re: [RFC][PATCH][EXPERIMENTAL] Make kernel threads nonfreezable by
>> default
>> Message-Id: <200705291415.31970.rjw@sisk.pl>
>
> I'll hunt for Rafael's patch next.

Mmm.. Rafael's patch appears to be part of a large series of 15 patches,
and it's not totally clear to me how to test just that part of it,
so I think I'll leave things as is (working!) for now.

Here's my current fix:

-- snip --

Regarding commit 7ed92f1a149dddc3cb537ccd7441e98adac12c3e
"USB: make the autosuspend workqueue thread freezable":

This commit causes USB lockups on resume from Suspend-to-RAM
on my Core2duo notebook. Applying the patch below to revert
the commit fixes the problem for me in 2.6.22-rc3.

Signed-off-by: Mark Lord <mlord@pobox.com>
---
--- b0rken/drivers/usb/core/usb.c 2007-05-29 13:32:32.000000000 -0400
+++ linux/drivers/usb/core/usb.c 2007-05-29 13:27:10.000000000 -0400
@@ -205,11 +205,7 @@

static int ksuspend_usb_init(void)
{
- /* This workqueue is supposed to be both freezable and
- * singlethreaded. Its job doesn't justify running on more
- * than one CPU.
- */
- ksuspend_usb_wq = create_freezeable_workqueue("ksuspend_usbd");
+ ksuspend_usb_wq = create_singlethread_workqueue("ksuspend_usbd");
if (!ksuspend_usb_wq)
return -ENOMEM;
return 0;