[PATCH] OpenRISC: Fix level-triggered irq handler

From: Gong Tao
Date: Mon Aug 27 2012 - 04:24:45 EST


or1k_pic_mask_ack() did not mask the irq.

Signed-off-by: Gong Tao <gongtao0607@xxxxxxxxx>
---
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@xxxxxxxxxxxx>
+ * 2012 Gong Tao <gongtao0607@xxxxxxxxx>
*
* 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@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/