diff options
author | Thomas Bogendoerfer <tbogendoerfer@suse.de> | 2019-02-19 16:57:20 +0100 |
---|---|---|
committer | Paul Burton <paul.burton@mips.com> | 2019-02-19 12:46:03 -0800 |
commit | 69a07a41d908f9df48393bbab179daded8cfab66 (patch) | |
tree | 6764897f28cee05ecd539010ce61c4138b3bfdc5 /arch/mips/sgi-ip27/ip27-irqno.c | |
parent | 2c8656204742a5e2d373972b139d0cc26ae93ff0 (diff) | |
download | linux-stable-69a07a41d908f9df48393bbab179daded8cfab66.tar.gz linux-stable-69a07a41d908f9df48393bbab179daded8cfab66.tar.bz2 linux-stable-69a07a41d908f9df48393bbab179daded8cfab66.zip |
MIPS: SGI-IP27: rework HUB interrupts
This commit rearranges the HUB interrupt code by using MIPS_IRQ_CPU
interrupt handling code and modern Linux IRQ framework features to get
rid of global arrays. It also adds support for irq affinity setting.
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Diffstat (limited to 'arch/mips/sgi-ip27/ip27-irqno.c')
-rw-r--r-- | arch/mips/sgi-ip27/ip27-irqno.c | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/arch/mips/sgi-ip27/ip27-irqno.c b/arch/mips/sgi-ip27/ip27-irqno.c deleted file mode 100644 index 957ab58e1c00..000000000000 --- a/arch/mips/sgi-ip27/ip27-irqno.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ -#include <linux/init.h> -#include <linux/irq.h> -#include <linux/types.h> - -#include <asm/barrier.h> - -static DECLARE_BITMAP(irq_map, NR_IRQS); - -int allocate_irqno(void) -{ - int irq; - -again: - irq = find_first_zero_bit(irq_map, NR_IRQS); - - if (irq >= NR_IRQS) - return -ENOSPC; - - if (test_and_set_bit(irq, irq_map)) - goto again; - - return irq; -} - -/* - * Allocate the 16 legacy interrupts for i8259 devices. This happens early - * in the kernel initialization so treating allocation failure as BUG() is - * ok. - */ -void __init alloc_legacy_irqno(void) -{ - int i; - - for (i = 0; i <= 16; i++) - BUG_ON(test_and_set_bit(i, irq_map)); -} - -void free_irqno(unsigned int irq) -{ - smp_mb__before_atomic(); - clear_bit(irq, irq_map); - smp_mb__after_atomic(); -} |