Dump new stack base and size information could help developer to narrow down
stack crash issue.

Cc: Feng Tian <feng.t...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Michael Kinney <michael.d.kin...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff....@intel.com>
---
 MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c  | 16 ++++++++++++++++
 MdeModulePkg/Universal/CapsulePei/UefiCapsule.c  |  8 ++++++++
 MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c |  8 ++++++++
 3 files changed, 32 insertions(+)

diff --git a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c 
b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
index 8ce72cb..6ec51ff 100644
--- a/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
+++ b/MdeModulePkg/Core/DxeIplPeim/Ia32/DxeLoadFunc.c
@@ -317,6 +317,14 @@ HandOffToDxeCore (
 
     AsmWriteIdtr (&gLidtDescriptor);
 
+    DEBUG ((
+      DEBUG_INFO,
+      "%a() Stack Base: 0x%lx, Stack Size: 0x%x\n",
+      __FUNCTION__,
+      BaseOfStack,
+      STACK_SIZE
+      ));
+
     //
     // Go to Long Mode and transfer control to DxeCore.
     // Interrupts will not get turned on until the CPU AP is loaded.
@@ -387,6 +395,14 @@ HandOffToDxeCore (
     //
     UpdateStackHob (BaseOfStack, STACK_SIZE);
 
+    DEBUG ((
+      DEBUG_INFO,
+      "%a() Stack Base: 0x%lx, Stack Size: 0x%x\n",
+      __FUNCTION__,
+      BaseOfStack,
+      STACK_SIZE
+      ));
+
     //
     // Transfer the control to the entry point of DxeCore.
     //
diff --git a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c 
b/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c
index e60105b..9ac9d22 100644
--- a/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c
+++ b/MdeModulePkg/Universal/CapsulePei/UefiCapsule.c
@@ -321,6 +321,14 @@ Thunk32To64 (
     //
     AsmWriteCr3 ((UINTN) PageTableAddress);
 
+    DEBUG ((
+      DEBUG_INFO,
+      "%a() Stack Base: 0x%lx, Stack Size: 0x%lx\n",
+      __FUNCTION__,
+      Context->StackBufferBase,
+      Context->StackBufferLength
+      ));
+
     //
     // Disable interrupt of Debug timer, since the IDT table cannot work in 
long mode
     //
diff --git a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c 
b/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c
index d1042e3..5ad95d2 100644
--- a/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c
+++ b/MdeModulePkg/Universal/CapsulePei/X64/X64Entry.c
@@ -265,6 +265,14 @@ _ModuleEntryPoint (
   
   ReturnContext->ReturnStatus = Status;
 
+  DEBUG ((
+    DEBUG_INFO,
+    "%a() Stack Base: 0x%lx, Stack Size: 0x%lx\n",
+    __FUNCTION__,
+    EntrypointContext->StackBufferBase,
+    EntrypointContext->StackBufferLength
+    ));
+
   //
   // Disable interrupt of Debug timer, since the new IDT table cannot work in 
long mode
   //
-- 
2.9.3.windows.2

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

Reply via email to