From: Tony Lindgren Date: Thu, 15 Jun 2006 01:26:39 +0000 (-0700) Subject: Fix CONFIG_PRINTK_TIME X-Git-Tag: v2.6.17-omap1~24 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=e4fb3a282725bc66dc63fd248e9d05e0396ddf95;p=linux-2.6-omap-h63xx.git Fix CONFIG_PRINTK_TIME Fix CONFIG_PRINTK_TIME hangs on systems where sched_clock() does not work before timer is initialized. For example, on OMAP, symptoms of this problem include system only booting with low level debug enabled when using 32KHz timer. Signed-off-by: Tony Lindgren --- diff --git a/kernel/printk.c b/kernel/printk.c index e4e0407e432..99d259fa589 100644 --- a/kernel/printk.c +++ b/kernel/printk.c @@ -435,11 +435,23 @@ static void zap_locks(void) init_MUTEX(&console_sem); } -#if defined(CONFIG_PRINTK_TIME) -static int printk_time = 1; -#else static int printk_time = 0; -#endif + +#ifdef CONFIG_PRINTK_TIME + +/* + * Initialize printk time. Note that on some systems sched_clock() + * does not work until timer is initialized. + */ +static int __init printk_time_init(void) +{ + printk_time = 1; + + return 0; +} +subsys_initcall(printk_time_init); + +#else static int __init printk_time_setup(char *str) { @@ -451,6 +463,8 @@ static int __init printk_time_setup(char *str) __setup("time", printk_time_setup); +#endif + __attribute__((weak)) unsigned long long printk_clock(void) { return sched_clock();