[coreboot] New patch to review for coreboot: d74f2d2 Re-initialize Local APIC timer on APs

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Mon Jul 23 19:43:36 CEST 2012


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1267

-gerrit

commit d74f2d22cc0c7c9d72be2fdf329baf44dbbbdb21
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Tue Jul 10 15:19:23 2012 -0700

    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 at google.com>
---
 src/cpu/x86/lapic/apic_timer.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/src/cpu/x86/lapic/apic_timer.c b/src/cpu/x86/lapic/apic_timer.c
index a4106d4..1fd0c60 100644
--- a/src/cpu/x86/lapic/apic_timer.c
+++ b/src/cpu/x86/lapic/apic_timer.c
@@ -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 */




More information about the coreboot mailing list