Commit e4fb3a28 authored by Tony Lindgren's avatar Tony Lindgren

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: default avatarTony Lindgren <tony@atomide.com>
parent 99c537d1
...@@ -435,11 +435,23 @@ static void zap_locks(void) ...@@ -435,11 +435,23 @@ static void zap_locks(void)
init_MUTEX(&console_sem); init_MUTEX(&console_sem);
} }
#if defined(CONFIG_PRINTK_TIME)
static int printk_time = 1;
#else
static int printk_time = 0; 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) static int __init printk_time_setup(char *str)
{ {
...@@ -451,6 +463,8 @@ 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); __setup("time", printk_time_setup);
#endif
__attribute__((weak)) unsigned long long printk_clock(void) __attribute__((weak)) unsigned long long printk_clock(void)
{ {
return sched_clock(); return sched_clock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment