From 3f5c8f4602a17d3cf65847ee88baa057f7a4f597 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 27 Feb 2011 05:42:48 +0100 Subject: 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. --- linux/dev/arch/i386/kernel/irq.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'linux/dev/arch/i386/kernel') 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 { -- cgit v1.2.3