From e4fb3a282725bc66dc63fd248e9d05e0396ddf95 Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Wed, 14 Jun 2006 18:26:39 -0700 Subject: [PATCH] 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 --- kernel/printk.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) 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(); -- 2.41.1