From 3b9468ef28c5cc0cd7d1d1f58368fdd92b7da8bf Mon Sep 17 00:00:00 2001 From: Jeff Fan Date: Thu, 27 Aug 2015 02:05:20 +0000 Subject: SourceLevelDebugPkg/DebugTimer: Fix the issue if CurrentTimer = Timer If CPU runs fast and timer runs slow, two GetApicTimerCurrentCount() may return the same timer count value. We need to consider timer roll-over not happened. Otherwise, one false timeout flag will be set. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan Reviewed-by: Ruiyu Ni git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18328 6f19259b-4bc3-4df7-8a09-765794883524 --- SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/DebugTimer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/DebugTimer.c b/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/DebugTimer.c index 4a6ccdb7da..bf965cb3c9 100644 --- a/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/DebugTimer.c +++ b/SourceLevelDebugPkg/Library/DebugAgent/DebugAgentCommon/DebugTimer.c @@ -131,8 +131,10 @@ IsDebugTimerTimeout ( // // This timer counter counts down. Check for roll over condition. + // If CurrentTimer is equal to Timer, it does not mean that roll over + // happened. // - if (CurrentTimer < Timer) { + if (CurrentTimer <= Timer) { Delta = Timer - CurrentTimer; } else { // -- cgit v1.2.3