reboot/suspend regression: hx4700 freezes under linux-3.3-rc1

Paul Parsons lost.distance at yahoo.com
Wed Feb 1 10:59:02 EST 2012


--- On Tue, 31/1/12, Russell King - ARM Linux <linux at arm.linux.org.uk> wrote:
> On Tue, Jan 31, 2012 at 05:28:10PM
> +0000, Paul Parsons wrote:
> > Both reboot (via reboot(RB_AUTOBOOT)) and suspend (via
> apm --suspend)
> > freeze my hx4700 under linux-3.3-rc1. They both worked
> under linux-3.2.
> > 
> > I presume that at least the reboot freeze is related to
> the restart
> > changes back in November. Can anyone suggest anything
> obvious I
> > should check? If not I'll attempt to get console output
> on to the
> > screen, which may or may not help.
> 
> I'd also suggest trying to bisect them to find out exactly
> which
> commit caused the problem.

OK, I found the reboot bug:

register_syscore_ops(&pxa_gpio_syscore_ops);

is called in two different places. This corrupts syscore_ops_list and
causes syscore_shutdown() to enter an infinite loop.

The fix is to remove the extra call added since 3.2:

--- clean-3.3-rc1/drivers/gpio/gpio-pxa.c	2012-01-19 23:04:48.000000000 +0000
+++ linux-3.3-rc1/drivers/gpio/gpio-pxa.c	2012-02-01 15:37:39.060989857 +0000
@@ -606,10 +606,3 @@
 	.suspend	= pxa_gpio_suspend,
 	.resume		= pxa_gpio_resume,
 };
-
-static int __init pxa_gpio_sysinit(void)
-{
-	register_syscore_ops(&pxa_gpio_syscore_ops);
-	return 0;
-}
-postcore_initcall(pxa_gpio_sysinit);

The suspend bug is alas unrelated.



More information about the linux-arm-kernel mailing list