initcall: add config option for compiling initcall_debug
Subsystems (2)
PATCH 1/1 initcall: add config option for compiling initcall_debug
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
--- 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(-)
Documentation/kernel-parameters.txt +1 -1
@@ -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
include/linux/init.h +4 -0
@@ -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
init/main.c +2 -0
@@ -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 ];
kernel/async.c +1 -3
@@ -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! */
lib/Kconfig.debug +7 -0
@@ -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
Quoted 2 lines · On Sun, 27 Mar 2011 15:55:06 +0400 Konstantin Khlebnikov wrote:
Add bool config option
CONFIG_INITCALL_DEBUGfor compiling initcalls debuging, make it on by default to keep current behaviour.
Typo fixes only:
Quoted 14 lines
Signed-off-by Konstantin Khlebnikov <[email protected]>--- 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(-)Documentation/kernel-parameters.txt +0
-0
Documentation/kernel-parameters.txt bytes respectively. Such letter suffixes can also be entirely omitted. · line 973
Quoted 5 lines
Documentation/kernel-parameters.txt +1
-1@@ -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.
depends on the CONFIG_INITCALL_DEBUG option.
Quoted 9 lines
Documentation/kernel-parameters.txt +0
-0initrd= [BOOT] Specify the location of the initial ramdisklib/Kconfig.debug +0
-0
lib/Kconfig.debug config DEBUG_CREDENTIALS · line 814
Quoted 8 lines
lib/Kconfig.debug +5
-0@@ -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
allows you to trace initcalls by
lib/Kconfig.debug config DEBUG_CREDENTIALS · line 815
Quoted 1 line
lib/Kconfig.debug +1
-0+ adding "initcall_debug" to kernel command line.
to the kernel command line.
lib/Kconfig.debug config DEBUG_CREDENTIALS · line 819
Quoted 4 lines
lib/Kconfig.debug +1
-0+ # # Select this config option from the architecture Kconfig, if it # it is preferred to always offer frame pointers as a config
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
Quoted 6 lines · Randy Dunlap
Quoted 2 lines · On Sun, 27 Mar 2011 15:55:06 +0400 Konstantin Khlebnikov wrote:
Add bool config option
CONFIG_INITCALL_DEBUGfor compiling initcalls debuging, make it on by default to keep current behaviour.Typo fixes only:
Ok, thanks.
Quoted 57 lines
Quoted 16 lines
Signed-off-by Konstantin Khlebnikov<[email protected]>--- 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(-)Documentation/kernel-parameters.txt +0
-0Documentation/kernel-parameters.txt bytes respectively. Such letter suffixes can also be entirely omitted. · line 973
Quoted 5 lines
Documentation/kernel-parameters.txt +1
-1@@ -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.depends on the
CONFIG_INITCALL_DEBUGoption.Quoted 9 lines
Documentation/kernel-parameters.txt +0
-0initrd= [BOOT] Specify the location of the initial ramdisklib/Kconfig.debug +0
-0lib/Kconfig.debug config DEBUG_CREDENTIALS · line 814
Quoted 8 lines
lib/Kconfig.debug +5
-0@@ -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 afterallows you to trace initcalls by
lib/Kconfig.debug config DEBUG_CREDENTIALS · line 815
Quoted 1 line
lib/Kconfig.debug +1
-0+ adding "initcall_debug" to kernel command line.to the kernel command line.
lib/Kconfig.debug config DEBUG_CREDENTIALS · line 819
Quoted 4 lines
lib/Kconfig.debug +1
-0+ # # Select this config option from the architecture Kconfig, if it # it is preferred to always offer frame pointers as a config---
~Randy
*** Remember to useDocumentation/SubmitChecklistwhen testing your code ***
PATCH v2 1/1 initcall: add config option for compiling initcall_debug
In reply to Konstantin KhlebnikovThis patch adds bool config option CONFIG_INITCALL_DEBUG for compiling initcalls debuging, 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
--- Documentation/kernel-parameters.txt | 3 ++- include/linux/init.h | 4 ++++ init/main.c | 2 ++ kernel/async.c | 4 +--- lib/Kconfig.debug | 7 +++++++ 5 files changed, 16 insertions(+), 4 deletions(-)
Documentation/kernel-parameters.txt +2 -1
@@ -970,7 +970,8 @@ 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 depends on the CONFIG_INITCALL_DEBUG + option. initrd= [BOOT] Specify the location of the initial ramdisk
include/linux/init.h +4 -0
@@ -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
init/main.c +2 -0
@@ -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 ];
kernel/async.c +1 -3
@@ -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! */
lib/Kconfig.debug +7 -0
@@ -807,6 +807,13 @@ config DEBUG_CREDENTIALS If unsure, say N. +config INITCALL_DEBUG + bool "Debug kernel initcalls" + default y + help + This build option allows you to trace initcalls by + adding "initcall_debug" to the kernel command line. + # # Select this config option from the architecture Kconfig, if it # it is preferred to always offer frame pointers as a config
Andrew Morton
maintainerQuoted 19 lines · On Mon, 28 Mar 2011 11:51:31 +0400 Konstantin Khlebnikov…
This patch adds bool config option
CONFIG_INITCALL_DEBUGfor compiling initcalls debuging, it on by default to keep current behaviour.With
CONFIG_INITCALL_DEBUG=nbloat-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
Quoted 8 lines
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
Well. One hopes that most things which use initcall_debug are marked __init or __initdata.
I see that async and pm have borrowed inticall_debug for reasonably appropriate reasons, but I wonder if all that is permanent code, or if it will later get removed. Because if it gets removed, this patch becomes rather pointless.
And the async code didn't try very hard anyway - it has a bunch of code wired into .text which is only used at boot time.
Quoted 31 lines · Andrew Morton
Quoted 19 lines · On Mon, 28 Mar 2011 11:51:31 +0400 Konstantin Khlebnikov…
This patch adds bool config option
CONFIG_INITCALL_DEBUGfor compiling initcalls debuging, it on by default to keep current behaviour.With
CONFIG_INITCALL_DEBUG=nbloat-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 - -71Quoted 8 lines
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
Quoted 7 lines
Well. One hopes that most things which use
initcall_debugare marked__initor__initdata.I see that async and pm have borrowed
inticall_debugfor reasonably appropriate reasons, but I wonder if all that is permanent code, or if it will later get removed. Because if it gets removed, this patch becomes rather pointless.
This is permanent code, as far as PM is concerned.
Thanks,
Rafael