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] -=-=-=-=-=-=-=-=-=-=-=-