locktorture: Teach about lock debugging
authorDavidlohr Bueso <dave@stgolabs.net>
Fri, 12 Sep 2014 03:40:19 +0000 (20:40 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 16 Sep 2014 20:41:04 +0000 (13:41 -0700)
Regular locks are very different than locks with debugging. For instance
for mutexes, debugging forces to only take the slowpaths. As such, the
locktorture module should take this into account when printing related
information -- specifically when printing user passed parameters, it seems
the right place for such info.

Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/locking/locktorture.c

index 414ba45d580f471c0b1dd9f7688d86a9628a13f3..a6049fa2287ed4e39d04c6be917a1fe5b30fa3bb 100644 (file)
@@ -64,6 +64,7 @@ torture_param(int, stutter, 5, "Number of jiffies to run/halt test, 0=disable");
 torture_param(bool, verbose, true,
             "Enable verbose debugging printk()s");
 
+static bool debug_lock = false;
 static char *torture_type = "spin_lock";
 module_param(torture_type, charp, 0444);
 MODULE_PARM_DESC(torture_type,
@@ -349,8 +350,9 @@ lock_torture_print_module_parms(struct lock_torture_ops *cur_ops,
                                const char *tag)
 {
        pr_alert("%s" TORTURE_FLAG
-                "--- %s: nwriters_stress=%d stat_interval=%d verbose=%d shuffle_interval=%d stutter=%d shutdown_secs=%d onoff_interval=%d onoff_holdoff=%d\n",
-                torture_type, tag, nrealwriters_stress, stat_interval, verbose,
+                "--- %s%s: nwriters_stress=%d stat_interval=%d verbose=%d shuffle_interval=%d stutter=%d shutdown_secs=%d onoff_interval=%d onoff_holdoff=%d\n",
+                torture_type, tag, debug_lock ? " [debug]": "",
+                nrealwriters_stress, stat_interval, verbose,
                 shuffle_interval, stutter, shutdown_secs,
                 onoff_interval, onoff_holdoff);
 }
@@ -418,6 +420,15 @@ static int __init lock_torture_init(void)
                nrealwriters_stress = nwriters_stress;
        else
                nrealwriters_stress = 2 * num_online_cpus();
+
+#ifdef CONFIG_DEBUG_MUTEXES
+       if (strncmp(torture_type, "mutex", 5) == 0)
+               debug_lock = true;
+#endif
+#ifdef CONFIG_DEBUG_SPINLOCK
+       if (strncmp(torture_type, "spin", 4) == 0)
+               debug_lock = true;
+#endif
        lock_torture_print_module_parms(cur_ops, "Start of test");
 
        /* Initialize the statistics so that each run gets its own numbers. */