[<prev] [next>] [day] [month] [year] [list]
Message-Id: <1346055878-13037-1-git-send-email-gongtao0607@gmail.com>
Date: Mon, 27 Aug 2012 16:24:38 +0800
From: Gong Tao <gongtao0607@...il.com>
To: jonas@...thpole.se
Cc: linux@...ts.openrisc.net, linux-kernel@...r.kernel.org,
Gong Tao <gongtao0607@...il.com>
Subject: [PATCH] OpenRISC: Fix level-triggered irq handler
or1k_pic_mask_ack() did not mask the irq.
Signed-off-by: Gong Tao <gongtao0607@...il.com>
---
arch/openrisc/kernel/irq.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/openrisc/kernel/irq.c b/arch/openrisc/kernel/irq.c
index a65aede..f09b5cf 100644
--- a/arch/openrisc/kernel/irq.c
+++ b/arch/openrisc/kernel/irq.c
@@ -7,6 +7,7 @@
*
* Modifications for the OpenRISC architecture:
* Copyright (C) 2010-2011 Jonas Bonn <jonas@...thpole.se>
+ * 2012 Gong Tao <gongtao0607@...il.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -91,9 +92,12 @@ static void or1k_pic_mask_ack(struct irq_data *data)
/* Comments for pic_ack apply here, too */
#ifdef CONFIG_OR1K_1200
+ /* MUST mask first */
+ mtspr(SPR_PICMR, mfspr(SPR_PICMR) & ~(1UL << data->hwirq));
mtspr(SPR_PICSR, mfspr(SPR_PICSR) & ~(1UL << data->hwirq));
#else
WARN(1, "Interrupt handling possibily broken\n");
+ mtspr(SPR_PICMR, (1UL << data->hwirq));
mtspr(SPR_PICSR, (1UL << data->hwirq));
#endif
}
--
1.7.12
--
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