On Tue, May 5, 2009 at 2:23 AM, Nelson Castillo
<[email protected]> wrote:
> On Sun, May 3, 2009 at 12:17 PM, Nelson Castillo
> <[email protected]> wrote:
> (cut)
>> [21474538.375000] regulator: ldo2: 3300 mV normal
>> [21474538.385000] regulator: ldo3: 3000 mV normal
>> [21474538.395000] regulator: ldo4: 3200 mV normal
>> [21474538.405000] regulator: ldo5: 3000 mV normal
>> [21474538.405000] regulator: ldo6: 3000 mV normal
>> [21474538.410000] regulator: hcldo: 2000 <--> 3300 mV normal
>> [21474538.415000] regulator: memldo: 1800 mV normal
>>
>> --- New kernel stops printing information here ---

Ok. It was a deadlock :-/ Found it. Patch attached.

Let's hope it's not too late.

Nelson.-
From: Nelson Castillo <[email protected]>
Date: Thu, 7 May 2009 20:54:58 -0500
Subject: [PATCH] pcf50633: Fix unsafe disable_irq

Without this change GTA02 bootstrap will deadlock.
As pointed out in other patches this is the case since the merge of:

commit 3aa551c9b4c40018f0e261a178e3d25478dc04a9
Author: Thomas Gleixner <[email protected]>
Date:   Mon Mar 23 18:28:15 2009 +0100

   genirq: add threaded interrupt handler support

   Add support for threaded interrupt handlers

Signed-off-by: Nelson Castillo <[email protected]>

diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c
index 7793932..11a6248 100644
--- a/drivers/mfd/pcf50633-core.c
+++ b/drivers/mfd/pcf50633-core.c
@@ -443,7 +443,7 @@ static irqreturn_t pcf50633_irq(int irq, void *data)
 	dev_dbg(pcf->dev, "pcf50633_irq\n");
 
 	get_device(pcf->dev);
-	disable_irq(pcf->irq);
+	disable_irq_nosync(pcf->irq);
 	schedule_work(&pcf->irq_work);
 
 	return IRQ_HANDLED;

Reply via email to