svn commit: r320606 - head/sys/arm/arm

Emmanuel Vadot manu at FreeBSD.org
Mon Jul 3 18:02:00 UTC 2017


Author: manu
Date: Mon Jul  3 18:01:58 2017
New Revision: 320606
URL: https://svnweb.freebsd.org/changeset/base/320606

Log:
  arm: gic: Change GIC_DEBUG_SPURIOUS to TUNABLE
  
  On armv6 default to 1 if INVARIANTS is set
  On arm64 always default to 0
  
  Discussed with: andrew, ian, mmel

Modified:
  head/sys/arm/arm/gic.c
  head/sys/arm/arm/gic.h

Modified: head/sys/arm/arm/gic.c
==============================================================================
--- head/sys/arm/arm/gic.c	Mon Jul  3 16:40:05 2017	(r320605)
+++ head/sys/arm/arm/gic.c	Mon Jul  3 18:01:58 2017	(r320606)
@@ -145,6 +145,14 @@ static struct resource_spec arm_gic_spec[] = {
 	{ -1, 0 }
 };
 
+
+#if defined(__arm__) && defined(INVARIANTS)
+static int gic_debug_spurious = 1;
+#else
+static int gic_debug_spurious = 0;
+#endif
+TUNABLE_INT("hw.gic.debug_spurious", &gic_debug_spurious);
+
 static u_int arm_gic_map[MAXCPU];
 
 static struct arm_gic_softc *gic_sc = NULL;
@@ -671,11 +679,10 @@ arm_gic_intr(void *arg)
 	 */
 
 	if (irq >= sc->nirqs) {
-#ifdef GIC_DEBUG_SPURIOUS
-		device_printf(sc->gic_dev,
-		    "Spurious interrupt detected: last irq: %d on CPU%d\n",
-		    sc->last_irq[PCPU_GET(cpuid)], PCPU_GET(cpuid));
-#endif
+		if (gic_debug_spurious)
+			device_printf(sc->gic_dev,
+			    "Spurious interrupt detected: last irq: %d on CPU%d\n",
+			    sc->last_irq[PCPU_GET(cpuid)], PCPU_GET(cpuid));
 		return (FILTER_HANDLED);
 	}
 
@@ -700,9 +707,8 @@ dispatch_irq:
 #endif
 	}
 
-#ifdef GIC_DEBUG_SPURIOUS
-	sc->last_irq[PCPU_GET(cpuid)] = irq;
-#endif
+	if (gic_debug_spurious)
+		sc->last_irq[PCPU_GET(cpuid)] = irq;
 	if ((gi->gi_flags & GI_FLAG_EARLY_EOI) == GI_FLAG_EARLY_EOI)
 		gic_c_write_4(sc, GICC_EOIR, irq_active_reg);
 

Modified: head/sys/arm/arm/gic.h
==============================================================================
--- head/sys/arm/arm/gic.h	Mon Jul  3 16:40:05 2017	(r320605)
+++ head/sys/arm/arm/gic.h	Mon Jul  3 18:01:58 2017	(r320606)
@@ -39,8 +39,6 @@
 #ifndef _ARM_GIC_H_
 #define _ARM_GIC_H_
 
-#define GIC_DEBUG_SPURIOUS
-
 #define	GIC_FIRST_SGI		 0	/* Irqs 0-15 are SGIs/IPIs. */
 #define	GIC_LAST_SGI		15
 #define	GIC_FIRST_PPI		16	/* Irqs 16-31 are private (per */
@@ -70,9 +68,7 @@ struct arm_gic_softc {
 	struct mtx		mutex;
 	uint32_t		nirqs;
 	uint32_t		typer;
-#ifdef GIC_DEBUG_SPURIOUS
 	uint32_t		last_irq[MAXCPU];
-#endif
 
 #ifdef INTRNG
 	uint32_t		gic_iidr;


More information about the svn-src-head mailing list