This fixes the strange corruption issues seen, when booting with 1GiB or 2GiB 
of RAM on Qemu. Please pull into stable tag if possible.

Tested-by: Andrei Warkentin <andrei.warken...@intel.com>
Reviewed-by: Andrei Warkentin <andrei.warken...@intel.com>

-----Original Message-----
From: Sunil V L <suni...@ventanamicro.com> 
Sent: Friday, February 24, 2023 3:39 AM
To: devel@edk2.groups.io
Cc: Warkentin, Andrei <andrei.warken...@intel.com>; Ard Biesheuvel 
<ardb+tianoc...@kernel.org>; Yao, Jiewen <jiewen....@intel.com>; Justen, Jordan 
L <jordan.l.jus...@intel.com>; Gerd Hoffmann <kra...@redhat.com>
Subject: [PATCH 1/1] OvmfPkg/RiscVVirt: Add Stack HOB

Currently, stack HOB is not created for the stack memory. This causes stack 
memory to be treated as free memory and any memory allocation which happens at 
this address causes random memory corruption. Fix this by creating the stack 
HOB which marks the memory as BS data.

Cc: Andrei Warkentin <andrei.warken...@intel.com>
Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>
Cc: Jiewen Yao <jiewen....@intel.com>
Cc: Jordan Justen <jordan.l.jus...@intel.com>
Cc: Gerd Hoffmann <kra...@redhat.com>
Signed-off-by: Sunil V L <suni...@ventanamicro.com>
---
 OvmfPkg/RiscVVirt/Sec/SecMain.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/OvmfPkg/RiscVVirt/Sec/SecMain.c b/OvmfPkg/RiscVVirt/Sec/SecMain.c 
index 73b9b21a67ba..adf73f2eb66c 100644
--- a/OvmfPkg/RiscVVirt/Sec/SecMain.c
+++ b/OvmfPkg/RiscVVirt/Sec/SecMain.c
@@ -55,6 +55,7 @@ SecStartup (
   EFI_STATUS                  Status;
   UINT64                      UefiMemoryBase;
   UINT64                      StackBase;
+  UINT32                      StackSize;
 
   //
   // Report Status Code to indicate entering SEC core @@ -71,9 +72,9 @@ 
SecStartup (
   FirmwareContext.FlattenedDeviceTree = (UINT64)DeviceTreeAddress;
   SetFirmwareContextPointer (&FirmwareContext);
 
-  StackBase = (UINT64)FixedPcdGet32 (PcdOvmfSecPeiTempRamBase) +
-              FixedPcdGet32 (PcdOvmfSecPeiTempRamSize);
-  UefiMemoryBase = StackBase - SIZE_32MB;
+  StackBase      = (UINT64)FixedPcdGet32 (PcdOvmfSecPeiTempRamBase);
+  StackSize      = FixedPcdGet32 (PcdOvmfSecPeiTempRamSize);
+  UefiMemoryBase = StackBase + StackSize - SIZE_32MB;
 
   // Declare the PI/UEFI memory region
   HobList = HobConstructor (
@@ -86,6 +87,8 @@ SecStartup (
 
   SecInitializePlatform ();
 
+  BuildStackHob (StackBase, StackSize);
+
   //
   // Process all libraries constructor function linked to SecMain.
   //
--
2.34.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#100496): https://edk2.groups.io/g/devel/message/100496
Mute This Topic: https://groups.io/mt/97202948/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to