lkml.org 
[lkml]   [2006]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject"tvec_bases too large for per-cpu data" commit broke early_serial_setup()
Hi!

Commit
a4a6198b80cf82eb8160603c98da218d1bd5e104
"[PATCH] tvec_bases too large for per-cpu data"

broke early_serial_setup() and maybe other code which uses
init_timer() before init_timers_cpu() is called.

This commit introduced run-time initialization dependence which never
existed before, namely, tvec_bases was always valid before this
change, but now it's a pointer which should be initialized prior to
use of any timer function.

If init_timer() is called before such initialization (in my case this
happens when PPC440GX board support code calls early_serial_setup to
register UARTs, serial8250_isa_init_ports() calls init_timer()),
"base" field in the timer_list struct is set to NULL.

When later mod_timer() is called for such timer it hangs in
lock_timer_base().

Rolling back this commit fixes the problem, although, this is
obviously not a proper fix.

I don't a fix I like, so I'll leave it to people more familiar with
this matter :)

--
Eugene



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-04-03 14:19    [W:0.030 / U:0.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site