lkml.org 
[lkml]   [2011]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Subject[PATCH] initcall: add config option for compiling initcall_debug
From
Date
Add bool config option CONFIG_INITCALL_DEBUG for compiling initcalls debuging,
make it on by default to keep current behaviour.

With CONFIG_INITCALL_DEBUG=n bloat-o-meter shows:

add/remove: 0/7 grow/shrink: 3/10 up/down: 88/-1448 (-1360)
function old new delta
device_resume 350 404 +54
__device_suspend 331 363 +32
device_resume_noirq 230 232 +2
kernel_init 355 354 -1
initcall_debug 4 - -4
__param_str_initcall_debug 15 - -15
dpm_suspend 431 415 -16
syscore_suspend 280 250 -30
syscore_shutdown 123 93 -30
__param_initcall_debug 32 - -32
syscore_resume 215 173 -42
static.initcall_debug_start 71 - -71
static.initcall_debug_report 102 - -102
legacy_resume 129 - -129
async_synchronize_cookie_domain 286 152 -134
legacy_suspend 135 - -135
async_run_entry_fn 348 188 -160
do_one_initcall 364 197 -167
pm_op 536 366 -170
pm_noirq_op 576 366 -210

Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
---
Documentation/kernel-parameters.txt | 2 +-
include/linux/init.h | 4 ++++
init/main.c | 2 ++
kernel/async.c | 4 +---
lib/Kconfig.debug | 7 +++++++
5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index c357a31..ea3843a 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -970,7 +970,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.

initcall_debug [KNL] Trace initcalls as they are executed. Useful
for working out where the kernel is dying during
- startup.
+ startup. This depend on CONFIG_INITCALL_DEBUG option.

initrd= [BOOT] Specify the location of the initial ramdisk

diff --git a/include/linux/init.h b/include/linux/init.h
index 577671c..e2005ab 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -156,7 +156,11 @@ void prepare_namespace(void);

extern void (*late_time_init)(void);

+#ifdef CONFIG_INITCALL_DEBUG
extern int initcall_debug;
+#else
+# define initcall_debug 0
+#endif

#endif

diff --git a/init/main.c b/init/main.c
index 4a9479e..0902999 100644
--- a/init/main.c
+++ b/init/main.c
@@ -636,8 +636,10 @@ static void __init do_ctors(void)
#endif
}

+#ifdef CONFIG_INITCALL_DEBUG
int initcall_debug;
core_param(initcall_debug, initcall_debug, bool, 0644);
+#endif

static char msgbuf[64];

diff --git a/kernel/async.c b/kernel/async.c
index 3d8220a..8801e1e 100644
--- a/kernel/async.c
+++ b/kernel/async.c
@@ -48,6 +48,7 @@ asynchronous and synchronous parts of the kernel.

*/

+#include <linux/init.h>
#include <linux/async.h>
#include <linux/module.h>
#include <linux/wait.h>
@@ -77,9 +78,6 @@ static DECLARE_WAIT_QUEUE_HEAD(async_done);

static atomic_t entry_count;

-extern int initcall_debug;
-
-
/*
* MUST be called with the lock held!
*/
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index df9234c..ebc1357 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -807,6 +807,13 @@ config DEBUG_CREDENTIALS

If unsure, say N.

+config INITCALL_DEBUG
+ bool "Debug kernel initcalls"
+ default y
+ help
+ This build option allow you trace initcalls after
+ adding "initcall_debug" to kernel command line.
+
#
# Select this config option from the architecture Kconfig, if it
# it is preferred to always offer frame pointers as a config


\
 
 \ /
  Last update: 2011-03-27 13:57    [W:0.907 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site