summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2011-02-27 05:42:48 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2011-02-27 05:42:48 +0100
commit3f5c8f4602a17d3cf65847ee88baa057f7a4f597 (patch)
treebe7cbb2f702092c974fe93c19456b1aec2323453
parent8bc7b53014de45e872c3fdfec6501fa59572d084 (diff)
Refuse to share IRQs at different interrupt levels
* linux/dev/arch/i386/kernel/irq.c (setup_x86_irq): Return -LINUX_EBUSY when trying to share an IRQ between two different interrupt levels.
-rw-r--r--linux/dev/arch/i386/kernel/irq.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/linux/dev/arch/i386/kernel/irq.c b/linux/dev/arch/i386/kernel/irq.c
index 8966dea..7faaa62 100644
--- a/linux/dev/arch/i386/kernel/irq.c
+++ b/linux/dev/arch/i386/kernel/irq.c
@@ -229,6 +229,10 @@ setup_x86_irq (int irq, struct linux_action *new)
if ((old->flags ^ new->flags) & SA_INTERRUPT)
return (-LINUX_EBUSY);
+ /* Can't share at different levels */
+ if (intpri[irq] && linux_intr_pri != intpri[irq])
+ return (-LINUX_EBUSY);
+
/* add new interrupt at end of irq queue */
do
{