From d84f090fd7629d026a70d592a7be081d1447357d Mon Sep 17 00:00:00 2001 From: "Dong, Eric" Date: Fri, 10 Apr 2020 14:54:00 +0800 Subject: [PATCH] UefiCpuPkg/PiSmmCpuDxeSmm: Remove Used parameter. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2388 After patch "UefiCpuPkg/PiSmmCpuDxeSmm: Improve the performance of GetFreeToken()" which adds new parameter FirstFreeToken, it's not need to use Uses parameter. This patch used to remove this parameter. Signed-off-by: Eric Dong Reviewed-by: Ray Ni Cc: Star Zeng Cc: Laszlo Ersek --- UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c | 10 +++++----- UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c index 93cac5e4fa..305bffa9bc 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -441,7 +441,6 @@ ResetTokens ( ProcToken = PROCEDURE_TOKEN_FROM_LINK (Link); ProcToken->RunningApCount = 0; - ProcToken->Used = FALSE; // // Check the spinlock status and release it if not released yet. @@ -1049,10 +1048,13 @@ IsTokenInUse ( } Link = GetFirstNode (&gSmmCpuPrivate->TokenList); - while (!IsNull (&gSmmCpuPrivate->TokenList, Link)) { + // + // Only search used tokens. + // + while (Link != gSmmCpuPrivate->FirstFreeToken) { ProcToken = PROCEDURE_TOKEN_FROM_LINK (Link); - if (ProcToken->Used && ProcToken->SpinLock == Token) { + if (ProcToken->SpinLock == Token) { return TRUE; } @@ -1104,7 +1106,6 @@ AllocateTokenBuffer ( ProcTokens[Index].Signature = PROCEDURE_TOKEN_SIGNATURE; ProcTokens[Index].SpinLock = SpinLock; - ProcTokens[Index].Used = FALSE; ProcTokens[Index].RunningApCount = 0; InsertTailList (&gSmmCpuPrivate->TokenList, &ProcTokens[Index].Link); @@ -1140,7 +1141,6 @@ GetFreeToken ( NewToken = PROCEDURE_TOKEN_FROM_LINK (gSmmCpuPrivate->FirstFreeToken); gSmmCpuPrivate->FirstFreeToken = GetNextNode (&gSmmCpuPrivate->TokenList, gSmmCpuPrivate->FirstFreeToken); - NewToken->Used = TRUE; NewToken->RunningApCount = RunningApsCount; AcquireSpinLock (NewToken->SpinLock); diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h index c9b3b739f3..7fb3a2d9e4 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h @@ -214,7 +214,6 @@ typedef struct { SPIN_LOCK *SpinLock; volatile UINT32 RunningApCount; - BOOLEAN Used; } PROCEDURE_TOKEN; #define PROCEDURE_TOKEN_FROM_LINK(a) CR (a, PROCEDURE_TOKEN, Link, PROCEDURE_TOKEN_SIGNATURE)