summaryrefslogtreecommitdiff
path: root/arch/mips/mti-malta/malta-int.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-09-22 12:47:53 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2012-09-22 12:47:53 -0700
commite5e77cf9f9a275083f9a365a20d956fa8a67803e (patch)
tree6597b94038cdcb671b41fb03c199a26e25518e83 /arch/mips/mti-malta/malta-int.c
parentb3a297d15b8f1be8304f0e0a3bbbb47b5f019939 (diff)
parente376fdf42062e7373b82093b278f99aa2b547db7 (diff)
downloadlinux-3.10-e5e77cf9f9a275083f9a365a20d956fa8a67803e.tar.gz
linux-3.10-e5e77cf9f9a275083f9a365a20d956fa8a67803e.tar.bz2
linux-3.10-e5e77cf9f9a275083f9a365a20d956fa8a67803e.zip
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS fixes from Ralf Baechle: "Random fixes across arch/mips, essentially. One fix for an issue in get_user_pages_fast() which previously was discovered on x86, a miscalculation in the support for the MIPS MT hardware multithreading support, the RTC support for the Malta and a fix for a spurious interrupt issue that seems to bite only very special Malta configurations." * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: MIPS: Malta: Don't crash on spurious interrupt. MIPS: Malta: Remove RTC Data Mode bootstrap breakage MIPS: mm: Add compound tail page _mapcount when mapped MIPS: CMP/SMTC: Fix tc_id calculation
Diffstat (limited to 'arch/mips/mti-malta/malta-int.c')
-rw-r--r--arch/mips/mti-malta/malta-int.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c
index 7b13a4caeea..fea823f1847 100644
--- a/arch/mips/mti-malta/malta-int.c
+++ b/arch/mips/mti-malta/malta-int.c
@@ -273,16 +273,19 @@ asmlinkage void plat_irq_dispatch(void)
unsigned int pending = read_c0_cause() & read_c0_status() & ST0_IM;
int irq;
+ if (unlikely(!pending)) {
+ spurious_interrupt();
+ return;
+ }
+
irq = irq_ffs(pending);
if (irq == MIPSCPU_INT_I8259A)
malta_hw0_irqdispatch();
else if (gic_present && ((1 << irq) & ipi_map[smp_processor_id()]))
malta_ipi_irqdispatch();
- else if (irq >= 0)
- do_IRQ(MIPS_CPU_IRQ_BASE + irq);
else
- spurious_interrupt();
+ do_IRQ(MIPS_CPU_IRQ_BASE + irq);
}
#ifdef CONFIG_MIPS_MT_SMP