mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +02:00
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 ff4c49a5ee38 ("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…
x
Reference in New Issue
Block a user