2007-01-05 02:14:36

by Robert Hancock

[permalink] [raw]
Subject: [PATCH] cx88xx: Fix lockup on suspend

Suspending with the cx88xx module loaded causes the system to lock up
because the cx88_audio_thread kthread was missing a try_to_freeze()
call, which caused it to go into a tight loop and result in softlockup
when suspending. Fix that.

Signed-off-by: Robert Hancock <[email protected]>

--- linux-2.6.20-rc3-git4-orig/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:51:45.000000000 -0600
+++ linux-2.6.20-rc3-git4/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:25:19.000000000 -0600
@@ -38,6 +38,7 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/errno.h>
+#include <linux/freezer.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
@@ -961,6 +962,7 @@ int cx88_audio_thread(void *data)
msleep_interruptible(1000);
if (kthread_should_stop())
break;
+ try_to_freeze();

/* just monitor the audio status for now ... */
memset(&t, 0, sizeof(t));




2007-01-06 07:30:55

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH] cx88xx: Fix lockup on suspend

Hi!

> Suspending with the cx88xx module loaded causes the
> system to lock up because the cx88_audio_thread kthread
> was missing a try_to_freeze() call, which caused it to
> go into a tight loop and result in softlockup when
> suspending. Fix that.
>
> Signed-off-by: Robert Hancock <[email protected]>
>

Ack,

> ---
> linux-2.6.20-rc3-git4-orig/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:51:45.000000000 -0600
> +++
> linux-2.6.20-rc3-git4/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:25:19.000000000 -0600
> @@ -38,6 +38,7 @@
> #include <linux/module.h>
> #include <linux/moduleparam.h>
> #include <linux/errno.h>
> +#include <linux/freezer.h>
> #include <linux/kernel.h>
> #include <linux/slab.h>
> #include <linux/mm.h>

but your patch was whitespace-damaged. Can you retry?

> @@ -961,6 +962,7 @@ int cx88_audio_thread(void *data)
> msleep_interruptible(1000);
> if (kthread_should_stop())
> break;
> + try_to_freeze();
>

Pavel

--
Thanks for all the (sleeping) penguins.

2007-01-06 18:26:35

by Robert Hancock

[permalink] [raw]
Subject: Re: [PATCH] cx88xx: Fix lockup on suspend

--- linux-2.6.20-rc3-git4-orig/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:51:45.000000000 -0600
+++ linux-2.6.20-rc3-git4/drivers/media/video/cx88/cx88-tvaudio.c 2007-01-04 19:25:19.000000000 -0600
@@ -38,6 +38,7 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/errno.h>
+#include <linux/freezer.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/mm.h>
@@ -961,6 +962,7 @@ int cx88_audio_thread(void *data)
msleep_interruptible(1000);
if (kthread_should_stop())
break;
+ try_to_freeze();

/* just monitor the audio status for now ... */
memset(&t, 0, sizeof(t));


Attachments:
fix-cx88-suspend.patch (644.00 B)

2007-01-06 20:52:35

by Nigel Cunningham

[permalink] [raw]
Subject: Re: [PATCH] cx88xx: Fix lockup on suspend

Hi.

On Sat, 2007-01-06 at 12:25 -0600, Robert Hancock wrote:
> Pavel Machek wrote:
> > Ack,
> >
> > but your patch was whitespace-damaged. Can you retry?
> >
>
> Here's another try with it attached (Thunderbird is deciding to be a
> pain unfortunately..)
>
> ---
>
> Suspending with the cx88xx module loaded causes the system to lock up
> because the cx88_audio_thread kthread was missing a try_to_freeze()
> call, which caused it to go into a tight loop and result in softlockup
> when suspending. Fix that.
>
> Signed-off-by: Robert Hancock <[email protected]>

Signed-off-by: Nigel Cunningham <[email protected]>


I have just gotten a cx88 card and had to do the same thing, but hadn't
had time to send the patch yet. The cards (or at least my one) need more
attention than this though; after resuming mine doesn't tune.

Regards,

Nigel