[AMD Official Use Only - General] Acked-by: Abner Chang <abner.ch...@amd.com>
However, this patch has the dependency with patch 7/34. > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sunil V L > via groups.io > Sent: Thursday, October 13, 2022 5:58 PM > To: devel@edk2.groups.io > Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>; Jiewen Yao > <jiewen....@intel.com>; Jordan Justen <jordan.l.jus...@intel.com>; Gerd > Hoffmann <kra...@redhat.com>; Rebecca Cran <rebe...@bsdio.com>; > Peter Grehan <gre...@freebsd.org>; Daniel Schaefer > <g...@danielschaefer.me> > Subject: [edk2-devel] [edk2-staging/RiscV64QemuVirt PATCH V3 08/34] > OvmfPkg/ResetSystemLib: Add support for RISC-V > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > REF: > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugz > illa.tianocore.org%2Fshow_bug.cgi%3Fid%3D4076&data=05%7C01%7Ca > bner.chang%40amd.com%7C58ec00ff62c04404eb6208daad01a493%7C3dd896 > 1fe4884e608e11a82d994e183d%7C0%7C0%7C638012519819152160%7CUnkn > own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik > 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Qo67IiQtWoclyj > %2FM2pMmnrg7LnlELqkPnRcnYADN8BY%3D&reserved=0 > > This is mostly copied from > edk2-platforms/Platform/RISC-V/PlatformPkg/Library/ResetSystemLib > > 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> > Cc: Rebecca Cran <rebe...@bsdio.com> > Cc: Peter Grehan <gre...@freebsd.org> > Cc: Daniel Schaefer <g...@danielschaefer.me> > Signed-off-by: Sunil V L <suni...@ventanamicro.com> > --- > .../ResetSystemLib/BaseResetSystemLib.inf | 6 + > .../ResetSystemLib/DxeResetSystemLib.inf | 9 +- > .../ResetSystemLib/RiscV64/DxeResetShutdown.c | 20 +++ > .../ResetSystemLib/RiscV64/ResetSystemLib.c | 128 ++++++++++++++++++ > 4 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 > OvmfPkg/Library/ResetSystemLib/RiscV64/DxeResetShutdown.c > create mode 100644 > OvmfPkg/Library/ResetSystemLib/RiscV64/ResetSystemLib.c > > diff --git a/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf > b/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf > index 4397f90a24dd..83cebb45b3db 100644 > --- a/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf > +++ b/OvmfPkg/Library/ResetSystemLib/BaseResetSystemLib.inf > @@ -25,6 +25,9 @@ [Sources.IA32, Sources.X64] > Ia32_X64/BaseResetShutdown.c > Ia32_X64/ResetSystemLib.c > > +[Sources.RISCV64] > + RiscV64/ResetSystemLib.c > + > [Packages] > MdeModulePkg/MdeModulePkg.dec > MdePkg/MdePkg.dec > @@ -36,3 +39,6 @@ [LibraryClasses] > IoLib > PciLib > TimerLib > + > +[LibraryClasses.RISCV64] > + RiscVSbiLib > diff --git a/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf > b/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf > index 79478453d7cb..abab573f2f06 100644 > --- a/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf > +++ b/OvmfPkg/Library/ResetSystemLib/DxeResetSystemLib.inf > @@ -20,13 +20,17 @@ [Defines] > # The following information is for reference only and not required by the > build # tools. > # > -# VALID_ARCHITECTURES = IA32 X64 > +# VALID_ARCHITECTURES = IA32 X64 RISCV64 > # > > [Sources.IA32, Sources.X64] > Ia32_X64/DxeResetShutdown.c > Ia32_X64/ResetSystemLib.c > > +[Sources.RISCV64] > + RiscV64/ResetSystemLib.c > + RiscV64/DxeResetShutdown.c > + > [Packages] > MdeModulePkg/MdeModulePkg.dec > MdePkg/MdePkg.dec > @@ -39,5 +43,8 @@ [LibraryClasses] > PcdLib > TimerLib > > +[LibraryClasses.RISCV64] > + RiscVSbiLib > + > [Pcd] > gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId ## > CONSUMES diff --git > a/OvmfPkg/Library/ResetSystemLib/RiscV64/DxeResetShutdown.c > b/OvmfPkg/Library/ResetSystemLib/RiscV64/DxeResetShutdown.c > new file mode 100644 > index 000000000000..027e235cad11 > --- /dev/null > +++ b/OvmfPkg/Library/ResetSystemLib/RiscV64/DxeResetShutdown.c > @@ -0,0 +1,20 @@ > +/** @file > + DXE Reset System Library Shutdown API implementation for OVMF. > + > + Copyright (C) 2020, Red Hat, Inc. > + Copyright (c) 2006 - 2019, Intel Corporation. All rights > +reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent **/ > + > +#include <Library/BaseLib.h> // CpuDeadLoop() > +#include <Library/ResetSystemLib.h> // ResetShutdown() > + > +EFI_STATUS > +EFIAPI > +DxeResetInit ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + return EFI_SUCCESS; > +} > diff --git a/OvmfPkg/Library/ResetSystemLib/RiscV64/ResetSystemLib.c > b/OvmfPkg/Library/ResetSystemLib/RiscV64/ResetSystemLib.c > new file mode 100644 > index 000000000000..14f7653aa8de > --- /dev/null > +++ b/OvmfPkg/Library/ResetSystemLib/RiscV64/ResetSystemLib.c > @@ -0,0 +1,128 @@ > +/** @file > + Reset System Library functions for RISC-V > + > + Copyright (c) 2021, Hewlett Packard Development LP. All rights > + reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include <Library/DebugLib.h> > +#include <Library/ResetSystemLib.h> > +#include <Library/BaseRiscVSbiLib.h> > + > +/** > + This function causes a system-wide reset (cold reset), in which > + all circuitry within the system returns to its initial state. This > +type of reset > + is asynchronous to system operation and operates without regard to > + cycle boundaries. > + > + If this function returns, it means that the system does not support cold > reset. > +**/ > +VOID > +EFIAPI > +ResetCold ( > + VOID > + ) > +{ > + // Warm Reset via SBI ecall > + SbiSystemReset (SBI_SRST_RESET_TYPE_COLD_REBOOT, > +SBI_SRST_RESET_REASON_NONE); } > + > +/** > + This function causes a system-wide initialization (warm reset), in > +which all processors > + are set to their initial state. Pending cycles are not corrupted. > + > + If this function returns, it means that the system does not support warm > reset. > +**/ > +VOID > +EFIAPI > +ResetWarm ( > + VOID > + ) > +{ > + // Warm Reset via SBI ecall > + SbiSystemReset (SBI_SRST_RESET_TYPE_WARM_REBOOT, > +SBI_SRST_RESET_REASON_NONE); } > + > +/** > + This function causes the system to enter a power state equivalent > + to the ACPI G2/S5 or G3 states. > + > + If this function returns, it means that the system does not support > shutdown reset. > +**/ > +VOID > +EFIAPI > +ResetShutdown ( > + VOID > + ) > +{ > + // Shut down via SBI ecall > + SbiSystemReset (SBI_SRST_RESET_TYPE_SHUTDOWN, > +SBI_SRST_RESET_REASON_NONE); } > + > +/** > + This function causes a systemwide reset. The exact type of the reset > +is > + defined by the EFI_GUID that follows the Null-terminated Unicode > +string passed > + into ResetData. If the platform does not recognize the EFI_GUID in > +ResetData > + the platform must pick a supported reset type to perform. The > +platform may > + optionally log the parameters from any non-normal reset that occurs. > + > + @param[in] DataSize The size, in bytes, of ResetData. > + @param[in] ResetData The data buffer starts with a Null-terminated > string, > + followed by the EFI_GUID. > +**/ > +VOID > +EFIAPI > +ResetPlatformSpecific ( > + IN UINTN DataSize, > + IN VOID *ResetData > + ) > +{ > + // > + // Can map to OpenSBI vendor or platform specific reset type. > + // > + return; > +} > + > +/** > + The ResetSystem function resets the entire platform. > + > + @param[in] ResetType The type of reset to perform. > + @param[in] ResetStatus The status code for the reset. > + @param[in] DataSize The size, in bytes, of ResetData. > + @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, > or EfiResetShutdown > + the data buffer starts with a Null-terminated > string, optionally > + followed by additional binary data. The string > is a description > + that the caller may use to further indicate the > reason for the > + system reset. > +**/ > +VOID > +EFIAPI > +ResetSystem ( > + IN EFI_RESET_TYPE ResetType, > + IN EFI_STATUS ResetStatus, > + IN UINTN DataSize, > + IN VOID *ResetData OPTIONAL > + ) > +{ > + switch (ResetType) { > + case EfiResetWarm: > + ResetWarm (); > + break; > + > + case EfiResetCold: > + ResetCold (); > + break; > + > + case EfiResetShutdown: > + ResetShutdown (); > + return; > + > + case EfiResetPlatformSpecific: > + ResetPlatformSpecific (DataSize, ResetData); > + return; > + > + default: > + return; > + } > +} > -- > 2.25.1 > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#95213): https://edk2.groups.io/g/devel/message/95213 Mute This Topic: https://groups.io/mt/94300391/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-