[MIPS] Make SMTC_IDLE_HOOK_DEBUG a proper option in Kconfig.debug.
authorRalf Baechle <ralf@linux-mips.org>
Mon, 26 Feb 2007 20:46:34 +0000 (20:46 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 26 Feb 2007 23:06:06 +0000 (23:06 +0000)
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/Kconfig.debug
arch/mips/kernel/process.c
arch/mips/kernel/smtc.c

index d5e60a0c1ded6b55f0fdbdc3eb895a38560c7a7e..72d5c198e790bdaa5ca9b38f7399f3beb4e147ea 100644 (file)
@@ -37,6 +37,15 @@ config DEBUG_STACK_USAGE
 
          This option will slow down process creation somewhat.
 
+config CONFIG_SMTC_IDLE_HOOK_DEBUG
+       bool "Enable additional debug checks before going into CPU idle loop"
+       depends on DEBUG_KERNEL && MIPS_MT_SMTC
+       help
+         This option enables Enable additional debug checks before going into
+         CPU idle loop.  For details on these checks, see
+         arch/mips/kernel/smtc.c.  This debugging option result in significant
+         overhead so should be disabled in production kernels.
+
 config KGDB
        bool "Remote GDB kernel debugging"
        depends on DEBUG_KERNEL && SYS_SUPPORTS_KGDB
index a669089e46724c98a924825bde927dd2eca3f02d..6bdfb5a9fa1a465ee9ec15193999780cea1b8d16 100644 (file)
@@ -51,11 +51,11 @@ ATTRIB_NORET void cpu_idle(void)
        /* endless idle loop with no priority at all */
        while (1) {
                while (!need_resched()) {
-#ifdef CONFIG_MIPS_MT_SMTC
+#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
                        extern void smtc_idle_loop_hook(void);
 
                        smtc_idle_loop_hook();
-#endif /* CONFIG_MIPS_MT_SMTC */
+#endif
                        if (cpu_wait)
                                (*cpu_wait)();
                }
index 9251ea82493746a4829e69ba3f433f123e94eb24..f253eda27fa388a4cac1c7963784fa1773ddbbf9 100644 (file)
@@ -141,10 +141,7 @@ __setup("ipibufs=", ipibufs);
 __setup("nostlb", stlb_disable);
 __setup("asidmask=", asidmask_set);
 
-/* Enable additional debug checks before going into CPU idle loop */
-#define SMTC_IDLE_HOOK_DEBUG
-
-#ifdef SMTC_IDLE_HOOK_DEBUG
+#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
 
 static int hang_trig = 0;
 
@@ -176,7 +173,7 @@ int tcnoprog[NR_CPUS];
 static atomic_t idle_hook_initialized = {0};
 static int clock_hang_reported[NR_CPUS];
 
-#endif /* SMTC_IDLE_HOOK_DEBUG */
+#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */
 
 /* Initialize shared TLB - the should probably migrate to smtc_setup_cpus() */
 
@@ -394,10 +391,10 @@ void mipsmt_prepare_cpus(void)
                printk("ASID mask value override to 0x%x\n", asidmask);
 
        /* Temporary */
-#ifdef SMTC_IDLE_HOOK_DEBUG
+#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
        if (hang_trig)
                printk("Logic Analyser Trigger on suspected TC hang\n");
-#endif /* SMTC_IDLE_HOOK_DEBUG */
+#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */
 
        /* Put MVPE's into 'configuration state' */
        write_c0_mvpcontrol( read_c0_mvpcontrol() | MVPCONTROL_VPC );
@@ -817,9 +814,9 @@ void ipi_decode(struct smtc_ipi *pipi)
        case SMTC_CLOCK_TICK:
                /* Invoke Clock "Interrupt" */
                ipi_timer_latch[dest_copy] = 0;
-#ifdef SMTC_IDLE_HOOK_DEBUG
+#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
                clock_hang_reported[dest_copy] = 0;
-#endif /* SMTC_IDLE_HOOK_DEBUG */
+#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */
                local_timer_interrupt(0, NULL);
                break;
        case LINUX_SMP_IPI:
@@ -1020,7 +1017,7 @@ EXPORT_SYMBOL(smtc_ipi_replay);
 
 void smtc_idle_loop_hook(void)
 {
-#ifdef SMTC_IDLE_HOOK_DEBUG
+#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
        int im;
        int flags;
        int mtflags;
@@ -1113,7 +1110,7 @@ void smtc_idle_loop_hook(void)
        local_irq_restore(flags);
        if (pdb_msg != &id_ho_db_msg[0])
                printk("CPU%d: %s", smp_processor_id(), id_ho_db_msg);
-#endif /* SMTC_IDLE_HOOK_DEBUG */
+#endif /* CONFIG_SMTC_IDLE_HOOK_DEBUG */
 
        /*
         * Replay any accumulated deferred IPIs. If "Instant Replay"