]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kmemtrace: allow kmemtrace to be enabled after boot
authorPekka Enberg <penberg@cs.helsinki.fi>
Fri, 10 Oct 2008 07:57:44 +0000 (10:57 +0300)
committerPekka Enberg <penberg@cs.helsinki.fi>
Mon, 29 Dec 2008 13:34:16 +0000 (15:34 +0200)
The kmemtrace_init() function returns early if kmemtrace is disabled at boot
causing kmemtrace_setup_late() to also bail out on NULL channel. This has the
unfortunate side effect that none of the debugfs files needed to enable
kmemtrace after boot are created.

Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
mm/kmemtrace.c

index 83ad1cc71a924fdb64273585a4c11cf7fd9441ff..f7a49c077df2accb1a7946f2b213be4dbdc9169e 100644 (file)
@@ -307,29 +307,29 @@ early_param("kmemtrace.subbufs", kmemtrace_set_subbufs);
 
 void kmemtrace_init(void)
 {
-       if (!kmemtrace_enabled)
-               return;
-
        if (!kmemtrace_n_subbufs)
                kmemtrace_n_subbufs = KMEMTRACE_DEF_N_SUBBUFS;
 
        kmemtrace_chan = relay_open(NULL, NULL, KMEMTRACE_SUBBUF_SIZE,
                                    kmemtrace_n_subbufs, &relay_callbacks,
                                    NULL);
-       if (unlikely(!kmemtrace_chan)) {
+       if (!kmemtrace_chan) {
                printk(KERN_ERR "kmemtrace: could not open relay channel.\n");
                return;
        }
 
-       if (unlikely(kmemtrace_start_probes()))
-               goto probe_fail;
-
-       printk(KERN_INFO "kmemtrace: early init successful.\n");
-
-       return;
+       if (!kmemtrace_enabled) {
+               printk(KERN_INFO "kmemtrace: disabled. Pass "
+                       "kemtrace.enable=yes as kernel parameter for "
+                       "boot-time tracing.");
+               return;
+       }
+       if (kmemtrace_start_probes()) {
+               printk(KERN_ERR "kmemtrace: could not register marker probes!\n");
+               kmemtrace_cleanup();
+               return;
+       }
 
-probe_fail:
-       printk(KERN_ERR "kmemtrace: could not register marker probes!\n");
-       kmemtrace_cleanup();
+       printk(KERN_INFO "kmemtrace: enabled.\n");
 }