From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.9207.1653056161299558400 for ; Fri, 20 May 2022 07:16:02 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=OqZbvSOK; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653056162; x=1684592162; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=purrMHXtHpiJ+1x9lkomt9Koz/f01zY3SY2hYDHHNMc=; b=OqZbvSOKS3S+qjZu+j+/MnekwoNaaqdYl06p/YE1M7+Wleol+WiKMJ0R MwNsPjH/NrTrz2lsoZ15ThOeXlPIVkv4Vp2uZ3J3JgntlGajNWiIme4tM xDcGfrW5czSaKKfHdjHKD/72NKVPhmP7BAYdidFs0XSVcqs9Mb93NbLNe BhSFEaAJc+FxXP17rAjLazr3nJMV6KY6WuzfylHYia1aMTJmunQR758g/ 6z2UlJZI6zydrRe1Qm9lvqiLsTTM1FgStrZpOmEMGZZWxWKJ9khpDbkY9 cvdMalGbimBelzUXjW47AaCsJDXtMpEdNCQUaeXqrJapJ79lyggN/dB7w g==; X-IronPort-AV: E=McAfee;i="6400,9594,10353"; a="333243136" X-IronPort-AV: E=Sophos;i="5.91,239,1647327600"; d="scan'208";a="333243136" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2022 07:16:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,239,1647327600"; d="scan'208";a="743512512" Received: from shwdeopenlab706.ccr.corp.intel.com ([10.239.183.102]) by orsmga005.jf.intel.com with ESMTP; 20 May 2022 07:15:59 -0700 From: "Ni, Ray" To: devel@edk2.groups.io Cc: Eric Dong Subject: [PATCH 3/5] CpuException: Avoid allocating page but using global variables Date: Fri, 20 May 2022 22:15:47 +0800 Message-Id: <20220520141549.108-4-ray.ni@intel.com> X-Mailer: git-send-email 2.35.1.windows.2 In-Reply-To: <20220520141549.108-1-ray.ni@intel.com> References: <20220520141549.108-1-ray.ni@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Signed-off-by: Ray Ni Cc: 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