Michael Trimarchi wrote:
Hi,

Balaji Rao wrote:
On Wed, Jan 14, 2009 at 10:05:44AM +0100, Michael Trimarchi wrote:
Hi,

diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c
index f668b9a..a565542 100644
--- a/drivers/mfd/pcf50633-core.c
+++ b/drivers/mfd/pcf50633-core.c
@@ -428,6 +428,10 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state)
     /* Make sure that an IRQ worker has quit */
     cancel_work_sync(&pcf->irq_work);
+ /* Disable irq again, because it could be re-enabled by the exiting
+     * worker we synced above */
+    disable_irq(pcf->irq);
+
     /* Save the masks */
     ret = pcf50633_read_block(pcf, PCF50633_REG_INT1M,
                 ARRAY_SIZE(pcf->suspend_irq_masks),

Sorry but I reverified the problem with me and your patch. I must activate the console on the serial
during suspend and check what happened :(. I will do it.

Sure, that will be very helpful. When exactly does panic happen ? During
resume ?

I wonder where was this bug hiding till now..

Thanks,
Balaji

It very simple to reproduce it on my phone. Say android go to the suspend and press the light button when the display switch off and the kernel go in panic.

But maybe it can be realeted to android/power stuff too. I must have a console output but I can't for now my torx t6 screwdriver is at the airport security :(. If you can wait a try to test tommorow :)
Michael



static irqreturn_t neo1973kbd_aux_irq(int irq, void *dev)
{
       int *p = NULL;

       /* if you stall inside resume then AUX will force a panic,
          which in turn forces a dump of the pending syslog */

       if (global_inside_suspend)
printk(KERN_ERR "death %d\n", *p); <---- maybe can be this one?

Michael


Reply via email to