summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorBibek Basu <bibek.basu@stericsson.com>2011-08-17 15:54:00 +0530
committerPhilippe Langlais <philippe.langlais@linaro.org>2012-03-19 09:02:37 +0100
commit89ffce4eddc44bb4c7bb9b72b4ecfa24e56850e6 (patch)
tree053c512d6f65c0c5f1bb2a0591d7e0c95e782c0a /arch
parent6510ead7464f417947b54ba22617903915ff8b6c (diff)
ux500_ing05160_mailboxPD_0.1:Lockdeb correctness fix for modem_irq
Commit ID: Ib94dcbf6: U5500 : Lockdeb correctness fix for modem_irq Build and boot test only done for 8500 config Booting will only happend properly if used Initramfs Change-Id: I5da03baa7b8ee8f32de5712b7136442fbe2cec1c Signed-off-by: Bibek Basu <bibek.basu@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/28923
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-ux500/modem-irq-db5500.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/mach-ux500/modem-irq-db5500.c b/arch/arm/mach-ux500/modem-irq-db5500.c
index 6b86416c94c..52bca4eb8b6 100644
--- a/arch/arm/mach-ux500/modem-irq-db5500.c
+++ b/arch/arm/mach-ux500/modem-irq-db5500.c
@@ -81,7 +81,7 @@ static irqreturn_t modem_cpu_irq_handler(int irq, void *data)
virt_irq);
if (virt_irq != 0)
- generic_handle_irq(virt_irq);
+ handle_nested_irq(virt_irq);
pr_debug("modem_irq: Done handling virtual IRQ %d!\n", virt_irq);
@@ -91,6 +91,7 @@ static irqreturn_t modem_cpu_irq_handler(int irq, void *data)
static void create_virtual_irq(int irq, struct irq_chip *modem_irq_chip)
{
irq_set_chip_and_handler(irq, modem_irq_chip, handle_simple_irq);
+ irq_set_nested_thread(irq, 1);
set_irq_flags(irq, IRQF_VALID);
pr_debug("modem_irq: Created virtual IRQ %d\n", irq);
@@ -131,7 +132,8 @@ static int modem_irq_init(void)
create_virtual_irq(MBOX_PAIR2_VIRT_IRQ, &modem_irq_chip);
err = request_threaded_irq(IRQ_DB5500_MODEM, NULL,
- modem_cpu_irq_handler, IRQF_ONESHOT,
+ modem_cpu_irq_handler,
+ IRQF_ONESHOT | IRQF_ONESHOT,
"modem_irq", mi);
if (err)
pr_err("modem_irq: Could not register IRQ %d\n",