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