That will be in another patch. :)

Thanks,
Star
-----Original Message-----
From: Yao, Jiewen 
Sent: Thursday, December 7, 2017 11:03 AM
To: Zeng, Star <star.z...@intel.com>; edk2-devel@lists.01.org
Cc: Dong, Eric <eric.d...@intel.com>; Laszlo Ersek <ler...@redhat.com>; Ni, 
Ruiyu <ruiyu...@intel.com>
Subject: RE: [PATCH] UefiCpuPkg PiSmmCpuDxeSmm: Only DumpCpuContext in error 
case

Good enhancement.
Reviewed-by: jiewen....@intel.com

BTW: I think we should also ASSERT(FALSE) if StaticPage and Smmprofile are both 
TRUE....


> -----Original Message-----
> From: Zeng, Star
> Sent: Thursday, December 7, 2017 9:49 AM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star <star.z...@intel.com>; Yao, Jiewen 
> <jiewen....@intel.com>; Dong, Eric <eric.d...@intel.com>; Laszlo Ersek 
> <ler...@redhat.com>; Ni, Ruiyu <ruiyu...@intel.com>
> Subject: [PATCH] UefiCpuPkg PiSmmCpuDxeSmm: Only DumpCpuContext in 
> error case
> 
> Only DumpCpuContext in error case, otherwise there will be too many 
> debug messages from DumpCpuContext() when SmmProfile feature is 
> enabled by setting PcdCpuSmmProfileEnable to TRUE. Those debug 
> messages are not needed for SmmProfile feature as it will record those 
> information to buffer for further dump.
> 
> Cc: Jiewen Yao <jiewen....@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Laszlo Ersek <ler...@redhat.com>
> Cc: Ruiyu Ni <ruiyu...@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Star Zeng <star.z...@intel.com>
> ---
>  UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c | 6 ++++--  
> UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c  | 6 ++++--
>  2 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c
> index 0396f2daaaed..6e1ffe7c6287 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c
> @@ -134,12 +134,12 @@ SmiPFHandler (
>    }
> 
>    //
> -  // If a page fault occurs in SMM range
> +  // If a page fault occurs in non-SMRAM range.
>    //
>    if ((PFAddress < mCpuHotPlugData.SmrrBase) ||
>        (PFAddress >= mCpuHotPlugData.SmrrBase +
> mCpuHotPlugData.SmrrSize)) {
> -    DumpCpuContext (InterruptType, SystemContext);
>      if ((SystemContext.SystemContextIa32->ExceptionData &
> IA32_PF_EC_ID) != 0) {
> +      DumpCpuContext (InterruptType, SystemContext);
>        DEBUG ((DEBUG_ERROR, "Code executed on IP(0x%x) out of SMM 
> range after SMM is locked!\n", PFAddress));
>        DEBUG_CODE (
>          DumpModuleInfoByIp (*(UINTN
> *)(UINTN)SystemContext.SystemContextIa32->Esp);
> @@ -147,6 +147,7 @@ SmiPFHandler (
>        CpuDeadLoop ();
>      }
>      if (IsSmmCommBufferForbiddenAddress (PFAddress)) {
> +      DumpCpuContext (InterruptType, SystemContext);
>        DEBUG ((DEBUG_ERROR, "Access SMM communication forbidden 
> address (0x%x)!\n", PFAddress));
>        DEBUG_CODE (
>          DumpModuleInfoByIp
> ((UINTN)SystemContext.SystemContextIa32->Eip);
> @@ -160,6 +161,7 @@ SmiPFHandler (
>    //
>    if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0 &&
>        (PFAddress < EFI_PAGE_SIZE)) {
> +    DumpCpuContext (InterruptType, SystemContext);
>      DEBUG ((DEBUG_ERROR, "!!! NULL pointer access !!!\n"));
>      DEBUG_CODE (
>        DumpModuleInfoByIp
> ((UINTN)SystemContext.SystemContextIa32->Eip);
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
> index 79a26d7ec6a3..6478c6c3e355 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
> @@ -851,12 +851,12 @@ SmiPFHandler (
>    }
> 
>    //
> -  // If a page fault occurs in SMM range
> +  // If a page fault occurs in non-SMRAM range.
>    //
>    if ((PFAddress < mCpuHotPlugData.SmrrBase) ||
>        (PFAddress >= mCpuHotPlugData.SmrrBase +
> mCpuHotPlugData.SmrrSize)) {
> -    DumpCpuContext (InterruptType, SystemContext);
>      if ((SystemContext.SystemContextX64->ExceptionData &
> IA32_PF_EC_ID) != 0) {
> +      DumpCpuContext (InterruptType, SystemContext);
>        DEBUG ((DEBUG_ERROR, "Code executed on IP(0x%lx) out of SMM 
> range after SMM is locked!\n", PFAddress));
>        DEBUG_CODE (
>          DumpModuleInfoByIp (*(UINTN
> *)(UINTN)SystemContext.SystemContextX64->Rsp);
> @@ -864,6 +864,7 @@ SmiPFHandler (
>        CpuDeadLoop ();
>      }
>      if (IsSmmCommBufferForbiddenAddress (PFAddress)) {
> +      DumpCpuContext (InterruptType, SystemContext);
>        DEBUG ((DEBUG_ERROR, "Access SMM communication forbidden 
> address (0x%lx)!\n", PFAddress));
>        DEBUG_CODE (
>          DumpModuleInfoByIp
> ((UINTN)SystemContext.SystemContextX64->Rip);
> @@ -877,6 +878,7 @@ SmiPFHandler (
>    //
>    if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0 &&
>        (PFAddress < EFI_PAGE_SIZE)) {
> +    DumpCpuContext (InterruptType, SystemContext);
>      DEBUG ((DEBUG_ERROR, "!!! NULL pointer access !!!\n"));
>      DEBUG_CODE (
>        DumpModuleInfoByIp
> ((UINTN)SystemContext.SystemContextX64->Rip);
> --
> 2.7.0.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to