Re-initialize Local APIC timer on APs

In order to be able to use udelay in code running on AP cores
the timer has to be initialized on the according local APICs
or the system will just hang when udelay is used.

Change-Id: I776bc96aa6d876ff2582d0c05cbc9c7611cb06b5
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/1267
Tested-by: build bot (Jenkins)
Reviewed-by: Sven Schnelle <svens@stackframe.org>
This commit is contained in:
Stefan Reinauer 2012-07-10 15:19:23 -07:00 committed by Patrick Georgi
parent 505414a6cf
commit ac2ec34fd2
1 changed files with 3 additions and 1 deletions

View File

@ -79,7 +79,9 @@ void udelay(u32 usecs)
{
u32 start, value, ticks;
if (!timer_fsb)
if (!timer_fsb || (lapic_read(LAPIC_LVTT) &
(LAPIC_LVT_TIMER_PERIODIC | LAPIC_LVT_MASKED)) !=
(LAPIC_LVT_TIMER_PERIODIC | LAPIC_LVT_MASKED))
init_timer();
/* Calculate the number of ticks to run, our FSB runs at timer_fsb Mhz */