Hi
If we think below code is generic, can we have an API for that?
+ //
+ // Wait for the AP to release the MSR spin lock.
+ //
+ while (!AcquireSpinLockOrFail (&CpuFlags->ConsoleLogLock)) {
+ CpuPause ();
+ }
> -----Original Message-----
> From: edk2-devel [mailto:[email protected]] On Behalf Of
> Eric Dong
> Sent: Thursday, December 20, 2018 9:16 AM
> To: [email protected]
> Cc: Ni, Ruiyu <[email protected]>; Laszlo Ersek <[email protected]>
> Subject: [edk2] [Patch 1/3] UefiCpuPkg/RegisterCpuFeaturesLib: Avoid AP
> calls PeiService.
>
> In AcquireSpinLock function, it calls GetPerformanceCounter which
> final calls PeiService service. This patch avoid to call
> AcquireSpinLock function.
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1411
>
> Cc: Ruiyu Ni <[email protected]>
> Cc: Laszlo Ersek <[email protected]>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Eric Dong <[email protected]>
> ---
> UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c | 7
> ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git
> a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
> b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
> index 624ddee055..a64326239f 100644
> --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
> +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
> @@ -832,7 +832,12 @@ ProgramProcessorRegister (
> RegisterTableEntry = &RegisterTableEntryHead[Index];
>
> DEBUG_CODE_BEGIN ();
> - AcquireSpinLock (&CpuFlags->ConsoleLogLock);
> + //
> + // Wait for the AP to release the MSR spin lock.
> + //
> + while (!AcquireSpinLockOrFail (&CpuFlags->ConsoleLogLock)) {
> + CpuPause ();
> + }
> ThreadIndex = ApLocation->Package * CpuStatus->MaxCoreCount *
> CpuStatus->MaxThreadCount +
> ApLocation->Core * CpuStatus->MaxThreadCount +
> ApLocation->Thread;
> --
> 2.15.0.windows.1
>
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel