lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 18 Jan 2011 09:16:01 +0100
From:	Sven Neumann <s.neumann@...mfeld.com>
To:	Lars-Peter Clausen <lars@...afoo.de>
Cc:	Thomas Gleixner <tglx@...utronix.de>,
	Daniel Mack <daniel@...aq.de>, linux-kernel@...r.kernel.org,
	linux-arm-kernel@...ts.infradead.org
Subject: Re: resume regression in 2.6.37

Hi,

On Mon, 2011-01-17 at 20:59 +0100, Lars-Peter Clausen wrote:

> > If you take a look at the pxa gpio irq handling you'll see that it sets the
> > "set_wake" field of it's irq_chip after calling set_irq_chip for all of the irqs, so
> > the compat handler gets never installed.
> > 
> > So I guess the following patch fixes it:
> > 
> > diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
> > --- a/arch/arm/mach-pxa/irq.c
> > +++ b/arch/arm/mach-pxa/irq.c
> > @@ -111,13 +111,13 @@ static void __init pxa_init_low_gpio_irq(set_wake_t fn)
> >  	GRER0 &= ~0x3;
> >  	GEDR0 = 0x3;
> > 
> > +	pxa_low_gpio_chip.set_wake = fn;
> > +
> >  	for (irq = IRQ_GPIO0; irq <= IRQ_GPIO1; irq++) {
> >  		set_irq_chip(irq, &pxa_low_gpio_chip);
> >  		set_irq_handler(irq, handle_edge_irq);
> >  		set_irq_flags(irq, IRQF_VALID);
> >  	}
> > -
> > -	pxa_low_gpio_chip.set_wake = fn;
> >  }
> > 
> >  void __init pxa_init_irq(int irq_nr, set_wake_t fn)
> > @@ -142,13 +142,14 @@ void __init pxa_init_irq(int irq_nr, set_wake_t fn)
> >  	/* only unmasked interrupts kick us out of idle */
> >  	ICCR = 1;
> > 
> > +	pxa_internal_irq_chip.set_wake = fn;
> > +
> >  	for (irq = PXA_IRQ(0); irq < PXA_IRQ(irq_nr); irq++) {
> >  		set_irq_chip(irq, &pxa_internal_irq_chip);
> >  		set_irq_handler(irq, handle_level_irq);
> >  		set_irq_flags(irq, IRQF_VALID);
> >  	}
> > 
> > -	pxa_internal_irq_chip.set_wake = fn;
> >  	pxa_init_low_gpio_irq(fn);
> >  }
> > 
> and
> 
> diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
> index d1c747c..6fc8281 100644
> - --- a/arch/arm/mach-pxa/pxa3xx.c
> +++ b/arch/arm/mach-pxa/pxa3xx.c
> @@ -558,13 +558,13 @@ static void __init pxa_init_ext_wakeup_irq(set_wake_t fn)
>  {
>  	int irq;
> 
> +	pxa_ext_wakeup_chip.set_wake = fn;
> +
>  	for (irq = IRQ_WAKEUP0; irq <= IRQ_WAKEUP1; irq++) {
>  		set_irq_chip(irq, &pxa_ext_wakeup_chip);
>  		set_irq_handler(irq, handle_edge_irq);
>  		set_irq_flags(irq, IRQF_VALID);
>  	}
> - -
> - -	pxa_ext_wakeup_chip.set_wake = fn;
>  }
> 
>  void __init pxa3xx_init_irq(void)

Indeed, that does fix it. It doesn't fix all my problems, but at least
the device shows the same behavior now as with commit 2f7e99bb9be
reverted. It powers up again and then outputs gibberish to the console.
I will try another bisect to find out what else is broken.

I will send another mail with your two patches combined into a single
commit. Please consider to sign-off that patch and send it upstream and
to stable.


Thanks a lot for your help,
Sven


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ