mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/XhciDxe: Non-zero start/stop values in XhcGetElapsedTicks
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=4578
The implementation of XhcGetElapsedTicks did not account for
non-zero start and stop values for the performance counter
timer, potentially resulting in an incorrect elapsed tick
count getting returned to the caller. Account for non-zero
start and stop values when calculating the elapsed tick
count.
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Patrick Henz <patrick.henz@hpe.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Acked-by: Hao A Wu <hao.a.wu@intel.com>
Message-ID: <c3038878c4d30c54e60cce7192cf1aa60c30ad2e.1698770394.git.patrick.henz@hpe.com>
Resolve rebase conflict from commit ff4c49a5ee
("MdeModulePkg/Bus: Fix
XhciDxe Linker Issues", 2023-12-06): rename "mPerformanceCounter*" to
"mXhciPerformanceCounter*".
Signed-off-by: Laszlo Ersek <laszlo.ersek@posteo.net>
This commit is contained in:
parent
896930edc9
commit
fbbf4206c1
|
@ -2397,7 +2397,7 @@ XhcGetElapsedTicks (
|
|||
// Counter counts upwards, check for an overflow condition
|
||||
//
|
||||
if (*PreviousTick > CurrentTick) {
|
||||
Delta = (mXhciPerformanceCounterEndValue - *PreviousTick) + CurrentTick;
|
||||
Delta = (CurrentTick - mXhciPerformanceCounterStartValue) + (mXhciPerformanceCounterEndValue - *PreviousTick);
|
||||
} else {
|
||||
Delta = CurrentTick - *PreviousTick;
|
||||
}
|
||||
|
@ -2406,7 +2406,7 @@ XhcGetElapsedTicks (
|
|||
// Counter counts downwards, check for an underflow condition
|
||||
//
|
||||
if (*PreviousTick < CurrentTick) {
|
||||
Delta = (mXhciPerformanceCounterStartValue - CurrentTick) + *PreviousTick;
|
||||
Delta = (mXhciPerformanceCounterStartValue - CurrentTick) + (*PreviousTick - mXhciPerformanceCounterEndValue);
|
||||
} else {
|
||||
Delta = *PreviousTick - CurrentTick;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue