diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-02-27 05:42:48 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-02-27 05:42:48 +0100 |
commit | 3f5c8f4602a17d3cf65847ee88baa057f7a4f597 (patch) | |
tree | be7cbb2f702092c974fe93c19456b1aec2323453 | |
parent | 8bc7b53014de45e872c3fdfec6501fa59572d084 (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.c | 4 |
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 { |