* [PATCH] Fix CONFIG_PRINTK_TIME hangs on some systems
@ 2006-05-04 10:24 Tony Lindgren
0 siblings, 0 replies; 3+ messages in thread
From: Tony Lindgren @ 2006-05-04 10:24 UTC (permalink / raw)
To: linux-kernel; +Cc: Andrew Morton, tony.luck, Nick Piggin
[-- Attachment #1: Type: text/plain, Size: 168 bytes --]
Hi all,
This issue has been discussed earlier on LKML, but AFAIK
there has not been any better solution available:
http://lkml.org/lkml/2005/8/18/173
Regards,
Tony
[-- Attachment #2: patch-printk-time-hangs --]
[-- Type: text/plain, Size: 919 bytes --]
Fix CONFIG_PRINTK_TIME hangs on systems where sched_clock() does
not work before timer is initialized.
Signed-off-by: Tony Lindgren <tony@atomide.com>
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -431,11 +431,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)
{
@@ -447,6 +459,8 @@ static int __init printk_time_setup(char
__setup("time", printk_time_setup);
+#endif
+
__attribute__((weak)) unsigned long long printk_clock(void)
{
return sched_clock();
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: [PATCH] Fix CONFIG_PRINTK_TIME hangs on some systems
@ 2006-05-04 16:14 Luck, Tony
2006-05-05 6:54 ` Tony Lindgren
0 siblings, 1 reply; 3+ messages in thread
From: Luck, Tony @ 2006-05-04 16:14 UTC (permalink / raw)
To: Tony Lindgren, linux-kernel; +Cc: Andrew Morton, Nick Piggin
> This issue has been discussed earlier on LKML, but AFAIK
> there has not been any better solution available:
>
> http://lkml.org/lkml/2005/8/18/173
I thought that this had been fixed:
ia64 now has a "printk_clock()" defined in arch/ia64/kernel/time.c
which overrides the "weak" symbol defined in kernel/printk.c. This
calls ia64_printk_clock() ... which defaults to a jiffie based
routine, but might be an ITC based routine if running on a system
where the clocks do not drift on different cpus. Platform code
can also override this function pointer (which SGI does in their
sn_setup() routine).
The ITC based routine still uses sched_clock(), but tries to avoid
the original problems by not calling sched_clock() until the MMU
has been set up to map the per-cpu areas (checks whether one of the
AR.K registers has been set). Most of this in commit:
http://tinyurl.com/ltexa
Do you still see a problem on some platform?
-Tony
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] Fix CONFIG_PRINTK_TIME hangs on some systems
2006-05-04 16:14 [PATCH] Fix CONFIG_PRINTK_TIME hangs on some systems Luck, Tony
@ 2006-05-05 6:54 ` Tony Lindgren
0 siblings, 0 replies; 3+ messages in thread
From: Tony Lindgren @ 2006-05-05 6:54 UTC (permalink / raw)
To: Luck, Tony; +Cc: linux-kernel, Andrew Morton, Nick Piggin
* Luck, Tony <tony.luck@intel.com> [060504 09:14]:
> > This issue has been discussed earlier on LKML, but AFAIK
> > there has not been any better solution available:
> >
> > http://lkml.org/lkml/2005/8/18/173
>
> I thought that this had been fixed:
>
> ia64 now has a "printk_clock()" defined in arch/ia64/kernel/time.c
> which overrides the "weak" symbol defined in kernel/printk.c. This
> calls ia64_printk_clock() ... which defaults to a jiffie based
> routine, but might be an ITC based routine if running on a system
> where the clocks do not drift on different cpus. Platform code
> can also override this function pointer (which SGI does in their
> sn_setup() routine).
>
> The ITC based routine still uses sched_clock(), but tries to avoid
> the original problems by not calling sched_clock() until the MMU
> has been set up to map the per-cpu areas (checks whether one of the
> AR.K registers has been set). Most of this in commit:
>
> http://tinyurl.com/ltexa
Thanks, I had missed that patch.
I still think the current printk_clock() approach is broken by
default on an unknown number of platforms.
Probably the best way to fix it would be to make it use jiffies
unless the platform registers a proper printk_clock() function.
> Do you still see a problem on some platform?
Yes, on various OMAP boards when 32KHz timer is being used. The 32KHz
timer is not enabled until in timer_init().
Regards,
Tony
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-05-05 6:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-04 16:14 [PATCH] Fix CONFIG_PRINTK_TIME hangs on some systems Luck, Tony
2006-05-05 6:54 ` Tony Lindgren
-- strict thread matches above, loose matches on Subject: below --
2006-05-04 10:24 Tony Lindgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).