Skip to content

Commit

Permalink
ramips: fix spurious IRQ7 events when using perf on 4.14
Browse files Browse the repository at this point in the history
Upstream handling of MIPS CPU IRQs is rather hackish and the interrupts
are being enabled unconditionally in various places because of legacy
code.
Performance counter events are routed both through the GIC and through
legacy CPU IRQ7 events, causing spurious interrupts.

Fix this by disabling IRQ7 when trying to access the performance counter
IRQ.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
nbd168 committed Feb 27, 2018
1 parent 86e5a6d commit d865586
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions target/linux/ramips/patches-4.14/110-mt7621-perfctr-fix.patch
@@ -0,0 +1,15 @@
--- a/arch/mips/ralink/irq-gic.c
+++ b/arch/mips/ralink/irq-gic.c
@@ -15,6 +15,12 @@

int get_c0_perfcount_int(void)
{
+ /*
+ * Performance counter events are routed through GIC.
+ * Prevent them from firing on CPU IRQ7 as well
+ */
+ clear_c0_status(IE_SW0 << 7);
+
return gic_get_c0_perfcount_int();
}
EXPORT_SYMBOL_GPL(get_c0_perfcount_int);

0 comments on commit d865586

Please sign in to comment.