Date
1 - 3 of 3
[PATCH 3/5] CpuException: Avoid allocating page but using global variables
Ni, Ray
Signed-off-by: Ray Ni <ray.ni@...>
Cc: Eric Dong <eric.dong@...> --- .../CpuExceptionHandlerLib/DxeException.c | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c b/Uef= iCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c index da5b96d6c6..f139131a7c 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c @@ -14,8 +14,8 @@ =0D CONST UINTN mDoFarReturnFlag =3D 0;=0D =0D -RESERVED_VECTORS_DATA mReservedVectorsData[CPU_EXCEPTION_NUM];=0D -EFI_CPU_INTERRUPT_HANDLER mExternalInterruptHandlerTable[CPU_EXCEPTION_NU= M];=0D +RESERVED_VECTORS_DATA mReservedVectorsData[CPU_INTERRUPT_NUM];=0D +EFI_CPU_INTERRUPT_HANDLER mExternalInterruptHandlerTable[CPU_INTERRUPT_NU= M];=0D EXCEPTION_HANDLER_DATA mExceptionHandlerData =3D {=0D 0, // To be fixed=0D 0, // To be fixed=0D @@ -96,27 +96,15 @@ InitializeCpuInterruptHandlers ( IA32_DESCRIPTOR IdtDescriptor;=0D UINTN IdtEntryCount;=0D EXCEPTION_HANDLER_TEMPLATE_MAP TemplateMap;=0D - RESERVED_VECTORS_DATA *ReservedVectors;=0D - EFI_CPU_INTERRUPT_HANDLER *ExternalInterruptHandler;=0D -=0D - Status =3D gBS->AllocatePool (=0D - EfiBootServicesCode,=0D - sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM,=0D - (VOID **)&ReservedVectors=0D - );=0D - ASSERT (!EFI_ERROR (Status) && ReservedVectors !=3D NULL);=0D - SetMem ((VOID *)ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_IN= TERRUPT_NUM, 0xff);=0D +=0D + SetMem ((VOID *)mReservedVectorsData, sizeof (RESERVED_VECTORS_DATA) * C= PU_INTERRUPT_NUM, 0xff);=0D if (VectorInfo !=3D NULL) {=0D - Status =3D ReadAndVerifyVectorInfo (VectorInfo, ReservedVectors, CPU_I= NTERRUPT_NUM);=0D + Status =3D ReadAndVerifyVectorInfo (VectorInfo, mReservedVectorsData, = CPU_INTERRUPT_NUM);=0D if (EFI_ERROR (Status)) {=0D - FreePool (ReservedVectors);=0D return EFI_INVALID_PARAMETER;=0D }=0D }=0D =0D - ExternalInterruptHandler =3D AllocateZeroPool (sizeof (EFI_CPU_INTERRUPT= _HANDLER) * CPU_INTERRUPT_NUM);=0D - ASSERT (ExternalInterruptHandler !=3D NULL);=0D -=0D //=0D // Read IDT descriptor and calculate IDT size=0D //=0D @@ -137,8 +125,6 @@ InitializeCpuInterruptHandlers ( ASSERT (TemplateMap.ExceptionStubHeaderSize <=3D HOOKAFTER_STUB_SIZE);=0D =0D mExceptionHandlerData.IdtEntryCount =3D CPU_INTERRUPT_NUM;=0D - mExceptionHandlerData.ReservedVectors =3D ReservedVectors;=0D - mExceptionHandlerData.ExternalInterruptHandler =3D ExternalInterruptHand= ler;=0D InitializeSpinLock (&mExceptionHandlerData.DisplayMessageSpinLock);=0D =0D UpdateIdtTable (IdtTable, &TemplateMap, &mExceptionHandlerData);=0D --=20 2.35.1.windows.2 |
|
Wang, Jian J
Reviewed-by: Jian J Wang <jian.j.wang@...>
toggle quoted message
Show quoted text
Regards, Jian -----Original Message----- |
|
Dong, Eric
Acked-by: Eric Dong <eric.dong@...>
toggle quoted message
Show quoted text
-----Original Message-----
From: Ni, Ray <ray.ni@...> Sent: Friday, May 20, 2022 10:16 PM To: devel@edk2.groups.io Cc: Dong, Eric <eric.dong@...> Subject: [PATCH 3/5] CpuException: Avoid allocating page but using global variables Signed-off-by: Ray Ni <ray.ni@...> Cc: Eric Dong <eric.dong@...> --- .../CpuExceptionHandlerLib/DxeException.c | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c index da5b96d6c6..f139131a7c 100644 --- a/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c +++ b/UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c @@ -14,8 +14,8 @@ CONST UINTN mDoFarReturnFlag = 0; -RESERVED_VECTORS_DATA mReservedVectorsData[CPU_EXCEPTION_NUM]; -EFI_CPU_INTERRUPT_HANDLER mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM]; +RESERVED_VECTORS_DATA mReservedVectorsData[CPU_INTERRUPT_NUM]; +EFI_CPU_INTERRUPT_HANDLER mExternalInterruptHandlerTable[CPU_INTERRUPT_NUM]; EXCEPTION_HANDLER_DATA mExceptionHandlerData = { 0, // To be fixed 0, // To be fixed @@ -96,27 +96,15 @@ InitializeCpuInterruptHandlers ( IA32_DESCRIPTOR IdtDescriptor; UINTN IdtEntryCount; EXCEPTION_HANDLER_TEMPLATE_MAP TemplateMap; - RESERVED_VECTORS_DATA *ReservedVectors; - EFI_CPU_INTERRUPT_HANDLER *ExternalInterruptHandler; - - Status = gBS->AllocatePool ( - EfiBootServicesCode, - sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM, - (VOID **)&ReservedVectors - ); - ASSERT (!EFI_ERROR (Status) && ReservedVectors != NULL); - SetMem ((VOID *)ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM, 0xff); + + SetMem ((VOID *)mReservedVectorsData, sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM, 0xff); if (VectorInfo != NULL) { - Status = ReadAndVerifyVectorInfo (VectorInfo, ReservedVectors, CPU_INTERRUPT_NUM); + Status = ReadAndVerifyVectorInfo (VectorInfo, mReservedVectorsData, CPU_INTERRUPT_NUM); if (EFI_ERROR (Status)) { - FreePool (ReservedVectors); return EFI_INVALID_PARAMETER; } } - ExternalInterruptHandler = AllocateZeroPool (sizeof (EFI_CPU_INTERRUPT_HANDLER) * CPU_INTERRUPT_NUM); - ASSERT (ExternalInterruptHandler != NULL); - // // Read IDT descriptor and calculate IDT size // @@ -137,8 +125,6 @@ InitializeCpuInterruptHandlers ( ASSERT (TemplateMap.ExceptionStubHeaderSize <= HOOKAFTER_STUB_SIZE); mExceptionHandlerData.IdtEntryCount = CPU_INTERRUPT_NUM; - mExceptionHandlerData.ReservedVectors = ReservedVectors; - mExceptionHandlerData.ExternalInterruptHandler = ExternalInterruptHandler; InitializeSpinLock (&mExceptionHandlerData.DisplayMessageSpinLock); UpdateIdtTable (IdtTable, &TemplateMap, &mExceptionHandlerData); -- 2.35.1.windows.2 |
|