[AMD Official Use Only - General]

Hi Sunil,
This file is originally from RISC-V FdtPeim.c. Please just keep HPE copyright 
because the difference between this one and the original one is the header file 
reference for the build and the correction of DEBUG macro. Or you can separate 
this this commit into two commits, one is the original file another is the 
changes made by Ventana.

I have no problem with the code logic by the way. 
Thanks
Abner 

> -----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>; Daniel Schaefer <g...@danielschaefer.me>
> Subject: [edk2-devel] [edk2-staging/RiscV64QemuVirt PATCH V3 06/34]
> OvmfPkg/PlatformInitLib: 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&amp;data=05%7C01%7Ca
> bner.chang%40amd.com%7C03bbd4f7f5f748c8964a08daad01988b%7C3dd896
> 1fe4884e608e11a82d994e183d%7C0%7C0%7C638012519614946969%7CUnkn
> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=PXc%2FF92%2F
> N67WFosTnDPCf%2FMGmaGVSnjUw2MXdk4Uq%2F8%3D&amp;reserved=0
> 
> This is copied from
> edk2-platforms/Platform/RISC-V/PlatformPkg/Universal/FdtPeim
> but added as part of library instead of a separate module.
> 
> 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: Daniel Schaefer <g...@danielschaefer.me>
> Signed-off-by: Sunil V L <suni...@ventanamicro.com>
> ---
>  .../PlatformInitLib/PlatformInitLib.inf       |  9 ++-
>  OvmfPkg/Include/Library/PlatformInitLib.h     |  6 ++
>  .../PlatformInitLib/RiscV64/PlatformPeiLib.c  | 73 +++++++++++++++++++
>  3 files changed, 87 insertions(+), 1 deletion(-)  create mode 100644
> OvmfPkg/Library/PlatformInitLib/RiscV64/PlatformPeiLib.c
> 
> diff --git a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf
> b/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf
> index d4449e40af61..ef8675999583 100644
> --- a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf
> +++ b/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf
> @@ -19,7 +19,7 @@ [Defines]
>  #
>  # The following information is for reference only and not required by the
> build tools.
>  #
> -#  VALID_ARCHITECTURES           = IA32 X64 EBC
> +#  VALID_ARCHITECTURES           = IA32 X64 EBC RISCV64
>  #
> 
>  [Sources.IA32, Sources.X64]
> @@ -33,6 +33,9 @@ [Sources.IA32]
>  [Sources.X64]
>    Ia32_X64/IntelTdx.c
> 
> +[Sources.RISCV64]
> +  RiscV64/PlatformPeiLib.c
> +
>  [Packages]
>    EmbeddedPkg/EmbeddedPkg.dec
>    MdeModulePkg/MdeModulePkg.dec
> @@ -58,6 +61,10 @@ [LibraryClasses.IA32, LibraryClasses.X64]
> [LibraryClasses.X64]
>    TdxLib
> 
> +[LibraryClasses.RISCV64]
> +  RiscVSbiLib
> +  FdtLib
> +
>  [Pcd]
>    gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
> 
> diff --git a/OvmfPkg/Include/Library/PlatformInitLib.h
> b/OvmfPkg/Include/Library/PlatformInitLib.h
> index c5234bf26d45..1b8d1fad3b49 100644
> --- a/OvmfPkg/Include/Library/PlatformInitLib.h
> +++ b/OvmfPkg/Include/Library/PlatformInitLib.h
> @@ -285,4 +285,10 @@ PlatformInitEmuVariableNvStore (
>    IN VOID  *EmuVariableNvStore
>    );
> 
> +EFI_STATUS
> +EFIAPI
> +PlatformPeim (
> +  VOID
> +  );
> +
>  #endif // PLATFORM_INIT_LIB_H_
> diff --git a/OvmfPkg/Library/PlatformInitLib/RiscV64/PlatformPeiLib.c
> b/OvmfPkg/Library/PlatformInitLib/RiscV64/PlatformPeiLib.c
> new file mode 100644
> index 000000000000..c5db7777c849
> --- /dev/null
> +++ b/OvmfPkg/Library/PlatformInitLib/RiscV64/PlatformPeiLib.c
> @@ -0,0 +1,73 @@
> +/** @file
> +The library call to pass the device tree to DXE via HOB.
> +
> +Copyright (c) 2021, Hewlett Packard Enterprise Development LP. All
> +rights reserved.<BR> Copyright (c) 2022, Ventana Micro Systems Inc. All
> +rights reserved.<BR>
> +
> +SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +//
> +//// The package level header files this module uses //// #include
> +<PiPei.h>
> +
> +#include <Library/DebugLib.h>
> +#include <Library/HobLib.h>
> +#include <Library/MemoryAllocationLib.h> #include
> +<Library/BaseRiscVSbiLib.h>
> +
> +#include <libfdt.h>
> +
> +#include <Guid/FdtHob.h>
> +
> +/**
> +  @retval EFI_SUCCESS            The address of FDT is passed in HOB.
> +          EFI_UNSUPPORTED        Can't locate FDT.
> +**/
> +EFI_STATUS
> +EFIAPI
> +PlatformPeim (
> +  VOID
> +  )
> +{
> +  EFI_RISCV_FIRMWARE_CONTEXT  *FirmwareContext;
> +  VOID                        *FdtPointer;
> +  VOID                        *Base;
> +  VOID                        *NewBase;
> +  UINTN                       FdtSize;
> +  UINTN                       FdtPages;
> +  UINT64                      *FdtHobData;
> +
> +  FirmwareContext = NULL;
> +  GetFirmwareContextPointer (&FirmwareContext);
> +
> +  if (FirmwareContext == NULL) {
> +    DEBUG ((DEBUG_ERROR, "%a: Firmware Context is NULL\n",
> __FUNCTION__));
> +    return EFI_UNSUPPORTED;
> +  }
> +
> +  FdtPointer = (VOID *)FirmwareContext->FlattenedDeviceTree;
> +  if (FdtPointer == NULL) {
> +    DEBUG ((DEBUG_ERROR, "%a: Invalid FDT pointer\n", __FUNCTION__));
> +    return EFI_UNSUPPORTED;
> +  }
> +
> +  DEBUG ((DEBUG_INFO, "%a: Build FDT HOB - FDT at address: 0x%x \n",
> + __FUNCTION__, FdtPointer));  Base = FdtPointer;  ASSERT (Base !=
> + NULL);  ASSERT (fdt_check_header (Base) == 0);
> +
> +  FdtSize  = fdt_totalsize (Base);
> +  FdtPages = EFI_SIZE_TO_PAGES (FdtSize);  NewBase  = AllocatePages
> + (FdtPages);  ASSERT (NewBase != NULL);  fdt_open_into (Base, NewBase,
> + EFI_PAGES_TO_SIZE (FdtPages));
> +
> +  FdtHobData = BuildGuidHob (&gFdtHobGuid, sizeof *FdtHobData);
> ASSERT
> + (FdtHobData != NULL);  *FdtHobData = (UINTN)NewBase;
> +
> +  return EFI_SUCCESS;
> +}
> --
> 2.25.1
> 
> 
> 
> 
> 


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


Reply via email to