On SGI platforms, the trusted firmware executes prior to
the SEC phase. It supplies to the SEC phase a pointer to
a fdt, that contains platform specific information such as
part number and config number of the SGI platform. The
platform code that executes during the SEC phase creates a
PPI that allows access to other PEIMs to obtain a copy of the
fdt pointer.
Further, during the PEI phase, a Platform ID PEIM installs a
Platform ID HOB. The Platform ID HOB can be used by DXE
drivers to identify the platform it is executing on.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
---
.../SgiPkg/Library/PlatformLib/AArch64/Helper.S | 15 ++-
.../ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 10 ++
.../ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 3 +
.../Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c | 108 +++++++++++++++++++++
.../SgiPlatformPeiLib/SgiPlatformPeiLib.inf | 40 ++++++++
Platform/ARM/SgiPkg/SgiPlatform.dec | 5 +
6 files changed, 177 insertions(+), 4 deletions(-)
create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c
create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf
diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S
index dab6c77..80b93ea 100644
--- a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S
+++ b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S
@@ -22,15 +22,22 @@ GCC_ASM_EXPORT(ArmPlatformPeiBootAction)
GCC_ASM_EXPORT(ArmPlatformGetCorePosition)
GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId)
GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore)
+GCC_ASM_EXPORT(HwConfigDtBlob)
+
+HwConfigDtBlob: .long 0
//
// First platform specific function to be called in the PEI phase
//
-// This function is actually the first function called by the PrePi
-// or PrePeiCore modules. It allows to retrieve arguments passed to
-// the UEFI firmware through the CPU registers.
-//
+// The trusted firmware passed the hw config DT blob in x1 register.
+// Keep a copy of it in a global variable.
+//VOID
+//ArmPlatformPeiBootAction (
+// VOID
+// );
ASM_PFX(ArmPlatformPeiBootAction):
+ ldr x10, =HwConfigDtBlob
+ str x1, [x10]
ret
//UINTN
diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
index ea3201a..54860e0 100644
--- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
+++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c
@@ -15,6 +15,10 @@
#include <Library/ArmPlatformLib.h>
#include <Library/BaseLib.h>
#include <Ppi/ArmMpCoreInfo.h>
+#include <SgiPlatform.h>
+
+extern UINT64 HwConfigDtBlob;
+STATIC SGI_HW_CONFIG_INFO_PPI mHwConfigDtInfoPpi;
STATIC ARM_CORE_INFO mCoreInfoTable[] = {
{
@@ -36,6 +40,7 @@ ArmPlatformInitialize (
IN UINTN MpId
)
{
+ mHwConfigDtInfoPpi.HwConfigDtAddr = &HwConfigDtBlob;
return RETURN_SUCCESS;
}
@@ -59,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = {
EFI_PEI_PPI_DESCRIPTOR_PPI,
&gArmMpCoreInfoPpiGuid,
&mMpCoreInfoPpi
+ },
+ {
+ EFI_PEI_PPI_DESCRIPTOR_PPI,
+ &gHwConfigDtInfoPpiGuid,
+ &mHwConfigDtInfoPpi
}
};
diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf
index 42e14d5..5d4bf72 100644
--- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf
+++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf
@@ -61,7 +61,10 @@
gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
[Guids]
+ gArmSgiPlatformIdDescriptorGuid
gEfiHobListGuid ## CONSUMES ## SystemTable
+ gFdtTableGuid
[Ppis]
gArmMpCoreInfoPpiGuid
+ gHwConfigDtInfoPpiGuid
diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c
new file mode 100644
index 0000000..f6446e6
--- /dev/null
+++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c
@@ -0,0 +1,108 @@
+/** @file
+*
+* Copyright (c) 2018, ARM Limited. All rights reserved.
+*
+* This program and the accompanying materials are licensed and made available
+* under the terms and conditions of the BSD License which accompanies this
+* distribution. The full text of the license may be found at
+* http://opensource.org/licenses/bsd-license.php
+*
+* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+*
+**/
+
+#include <Library/DebugLib.h>
+#include <Library/HobLib.h>
+#include <Library/PeimEntryPoint.h>
+#include <Library/PeiServicesLib.h>
+#include <libfdt.h>
+#include <SgiPlatform.h>
+
+/**
+
+ This function returns the Platform ID of the platform
+
+ This functions locates the HwConfig PPI and gets the base address of HW CONFIG
+ DT from which the platform ID is obtained using FDT helper functions
+
+ @return returns the platform ID on success else returns 0 on error
+
+**/
+
+STATIC
+UINT32
+GetSgiPlatformId (
+ VOID
+)
+{
+ CONST UINT32 *Property;
+ INT32 Offset;
+ CONST VOID *HwCfgDtBlob;
+ SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi;
+ EFI_STATUS Status;
+
+ Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, (VOID**)&HwConfigInfoPpi);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "PeiServicesLocatePpi failed with error %r\n", Status));
+ return 0;
+ }
+
+ HwCfgDtBlob = (VOID *)(*(HwConfigInfoPpi->HwConfigDtAddr));
+ if (fdt_check_header (HwCfgDtBlob) != 0 ) {
+ DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed as HW_CONFIG\n", HwCfgDtBlob));
+ return 0;
+ }
+
+ Offset = fdt_subnode_offset (HwCfgDtBlob, 0, "system-id");
+ if (Offset == -FDT_ERR_NOTFOUND) {
+ DEBUG ((DEBUG_ERROR, "Invalid DTB : system-id node not found\n"));
+ return 0;
+ }
+
+ Property = fdt_getprop (HwCfgDtBlob, Offset, "platform-id", NULL);
+ if (Property == NULL) {
+ DEBUG ((DEBUG_ERROR, "Platform Id is NULL\n"));
+ return 0;
+ }
+
+ return fdt32_to_cpu (*Property);
+}
+
+/**
+
+ This function creates a Platform ID HOB and assigns PlatformId as the
+ HobData
+
+ @return asserts on error and returns EFI_INVALID_PARAMETER. On success
+ returns EFI_SUCCESS
+
+**/
+EFI_STATUS
+EFIAPI
+SgiPlatformIdPeim (
+ IN EFI_PEI_FILE_HANDLE FileHandle,
+ IN CONST EFI_PEI_SERVICES **PeiServices
+)
+{
+ SGI_PLATFORM_DESCRIPTOR *HobData;
+
+ //Create platform descriptor HOB
+ HobData = (SGI_PLATFORM_DESCRIPTOR *)BuildGuidHob (&gArmSgiPlatformIdDescriptorGuid,
+ sizeof (SGI_PLATFORM_DESCRIPTOR));
+
+ //Get the platform id from the platform specific hw_config device tree
+ if (HobData != NULL) {
+ HobData->PlatformId = GetSgiPlatformId ();
+ if (HobData->PlatformId == 0) {
+ ASSERT (FALSE);
+ return EFI_INVALID_PARAMETER;
+ }
+ } else {
+ DEBUG ((DEBUG_ERROR, "Platform HoB is NULL\n"));
+ ASSERT (FALSE);
+ return EFI_INVALID_PARAMETER;
+ }
+
+ return EFI_SUCCESS;
+}
diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf
new file mode 100644
index 0000000..502d6ac
--- /dev/null
+++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf
@@ -0,0 +1,40 @@
+#
+# Copyright (c) 2018, ARM Limited. All rights reserved.
+#
+# This program and the accompanying materials are licensed and made available
+# under the terms and conditions of the BSD License which accompanies this
+# distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+
+[Defines]
+ INF_VERSION = 0x0001001A
+ BASE_NAME = SgiPlatformIdPeiLib
+ FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863
+ MODULE_TYPE = PEIM
+ VERSION_STRING = 1.0
+ ENTRY_POINT = SgiPlatformIdPeim
+
+[Packages]
+ EmbeddedPkg/EmbeddedPkg.dec
+ MdePkg/MdePkg.dec
+ Platform/ARM/SgiPkg/SgiPlatform.dec
+
+[LibraryClasses]
+ FdtLib
+ PeimEntryPoint
+
+[Sources]
+ SgiPlatformPeiLib.c
+
+[Guids]
+ gArmSgiPlatformIdDescriptorGuid
+
+[Ppis]
+ gHwConfigDtInfoPpiGuid
+
+[Depex]
+ TRUE
diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec
index d995937..ea9f6c5 100644
--- a/Platform/ARM/SgiPkg/SgiPlatform.dec
+++ b/Platform/ARM/SgiPkg/SgiPlatform.dec
@@ -29,9 +29,14 @@
Include # Root include for the package
[Guids.common]
+ # ARM Sgi Platform ID descriptor
+ gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } }
gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } }
gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } }
[PcdsFeatureFlag.common]
# Set this PCD to TRUE to enable virtio support.
gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001
+
+[Ppis]
+ gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } }
--
2.7.4
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Hello Chandni, On 15 June 2018 at 07:55, Chandni Cherukuri <chandni.cherukuri@arm.com> wrote: > On SGI platforms, the trusted firmware executes prior to > the SEC phase. It supplies to the SEC phase a pointer to > a fdt, that contains platform specific information such as > part number and config number of the SGI platform. The > platform code that executes during the SEC phase creates a > PPI that allows access to other PEIMs to obtain a copy of the > fdt pointer. > > Further, during the PEI phase, a Platform ID PEIM installs a > Platform ID HOB. The Platform ID HOB can be used by DXE > drivers to identify the platform it is executing on. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com> > --- > .../SgiPkg/Library/PlatformLib/AArch64/Helper.S | 15 ++- > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 10 ++ > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 3 + > .../Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c | 108 +++++++++++++++++++++ > .../SgiPlatformPeiLib/SgiPlatformPeiLib.inf | 40 ++++++++ > Platform/ARM/SgiPkg/SgiPlatform.dec | 5 + > 6 files changed, 177 insertions(+), 4 deletions(-) > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > Please use '--stat=250 --stat-graph-width=20' when using git format-patch so that we get to see the entire path names in the diffstat > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > index dab6c77..80b93ea 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > @@ -22,15 +22,22 @@ GCC_ASM_EXPORT(ArmPlatformPeiBootAction) > GCC_ASM_EXPORT(ArmPlatformGetCorePosition) > GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId) > GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore) > +GCC_ASM_EXPORT(HwConfigDtBlob) > + > +HwConfigDtBlob: .long 0 > Please move this definition to PlatformLib.c > // > // First platform specific function to be called in the PEI phase > // > -// This function is actually the first function called by the PrePi > -// or PrePeiCore modules. It allows to retrieve arguments passed to > -// the UEFI firmware through the CPU registers. > -// > +// The trusted firmware passed the hw config DT blob in x1 register. > +// Keep a copy of it in a global variable. > +//VOID > +//ArmPlatformPeiBootAction ( > +// VOID > +// ); > ASM_PFX(ArmPlatformPeiBootAction): > + ldr x10, =HwConfigDtBlob Please use adr to take the address of HwConfigDtBlob > + str x1, [x10] > ret > > //UINTN > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > index ea3201a..54860e0 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > @@ -15,6 +15,10 @@ > #include <Library/ArmPlatformLib.h> > #include <Library/BaseLib.h> > #include <Ppi/ArmMpCoreInfo.h> > +#include <SgiPlatform.h> > + > +extern UINT64 HwConfigDtBlob; > +STATIC SGI_HW_CONFIG_INFO_PPI mHwConfigDtInfoPpi; > Where is this PPI declared? A PPI is like a protocol, it has its own declaration in a header file under Include/Ppi in the package > STATIC ARM_CORE_INFO mCoreInfoTable[] = { > { > @@ -36,6 +40,7 @@ ArmPlatformInitialize ( > IN UINTN MpId > ) > { > + mHwConfigDtInfoPpi.HwConfigDtAddr = &HwConfigDtBlob; > return RETURN_SUCCESS; > } > > @@ -59,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { > EFI_PEI_PPI_DESCRIPTOR_PPI, > &gArmMpCoreInfoPpiGuid, > &mMpCoreInfoPpi > + }, > + { > + EFI_PEI_PPI_DESCRIPTOR_PPI, > + &gHwConfigDtInfoPpiGuid, > + &mHwConfigDtInfoPpi > } > }; > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > index 42e14d5..5d4bf72 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > @@ -61,7 +61,10 @@ > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > > [Guids] > + gArmSgiPlatformIdDescriptorGuid > gEfiHobListGuid ## CONSUMES ## SystemTable > + gFdtTableGuid > > [Ppis] > gArmMpCoreInfoPpiGuid > + gHwConfigDtInfoPpiGuid > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > new file mode 100644 > index 0000000..f6446e6 > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > @@ -0,0 +1,108 @@ > +/** @file > +* > +* Copyright (c) 2018, ARM Limited. All rights reserved. > +* > +* This program and the accompanying materials are licensed and made available > +* under the terms and conditions of the BSD License which accompanies this > +* distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#include <Library/DebugLib.h> > +#include <Library/HobLib.h> > +#include <Library/PeimEntryPoint.h> > +#include <Library/PeiServicesLib.h> > +#include <libfdt.h> > +#include <SgiPlatform.h> > + > +/** > + > + This function returns the Platform ID of the platform > + > + This functions locates the HwConfig PPI and gets the base address of HW CONFIG > + DT from which the platform ID is obtained using FDT helper functions > + > + @return returns the platform ID on success else returns 0 on error > + > +**/ > + > +STATIC > +UINT32 > +GetSgiPlatformId ( > + VOID > +) > +{ > + CONST UINT32 *Property; > + INT32 Offset; > + CONST VOID *HwCfgDtBlob; > + SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi; > + EFI_STATUS Status; > + > + Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, (VOID**)&HwConfigInfoPpi); Please check all your patches for overly long lines. 80 columns is that maximum > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "PeiServicesLocatePpi failed with error %r\n", Status)); > + return 0; > + } > + > + HwCfgDtBlob = (VOID *)(*(HwConfigInfoPpi->HwConfigDtAddr)); > + if (fdt_check_header (HwCfgDtBlob) != 0 ) { > + DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed as HW_CONFIG\n", HwCfgDtBlob)); > + return 0; > + } > + > + Offset = fdt_subnode_offset (HwCfgDtBlob, 0, "system-id"); > + if (Offset == -FDT_ERR_NOTFOUND) { > + DEBUG ((DEBUG_ERROR, "Invalid DTB : system-id node not found\n")); > + return 0; > + } > + > + Property = fdt_getprop (HwCfgDtBlob, Offset, "platform-id", NULL); > + if (Property == NULL) { > + DEBUG ((DEBUG_ERROR, "Platform Id is NULL\n")); > + return 0; > + } > + > + return fdt32_to_cpu (*Property); > +} > + > +/** > + > + This function creates a Platform ID HOB and assigns PlatformId as the > + HobData > + > + @return asserts on error and returns EFI_INVALID_PARAMETER. On success > + returns EFI_SUCCESS > + > +**/ > +EFI_STATUS > +EFIAPI > +SgiPlatformIdPeim ( > + IN EFI_PEI_FILE_HANDLE FileHandle, > + IN CONST EFI_PEI_SERVICES **PeiServices > +) > +{ > + SGI_PLATFORM_DESCRIPTOR *HobData; > + > + //Create platform descriptor HOB > + HobData = (SGI_PLATFORM_DESCRIPTOR *)BuildGuidHob (&gArmSgiPlatformIdDescriptorGuid, > + sizeof (SGI_PLATFORM_DESCRIPTOR)); > + > + //Get the platform id from the platform specific hw_config device tree > + if (HobData != NULL) { Please invert the sense of this conditional, and return EFI_OUT_OF_RESOURCES if HobData is NULL > + HobData->PlatformId = GetSgiPlatformId (); > + if (HobData->PlatformId == 0) { > + ASSERT (FALSE); > + return EFI_INVALID_PARAMETER; > + } > + } else { After you have inverted the if() condition, you can drop the else as well > + DEBUG ((DEBUG_ERROR, "Platform HoB is NULL\n")); > + ASSERT (FALSE); > + return EFI_INVALID_PARAMETER; > + } > + > + return EFI_SUCCESS; > +} > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > new file mode 100644 > index 0000000..502d6ac > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > @@ -0,0 +1,40 @@ > +# > +# Copyright (c) 2018, ARM Limited. All rights reserved. > +# > +# This program and the accompanying materials are licensed and made available > +# under the terms and conditions of the BSD License which accompanies this > +# distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > + > +[Defines] > + INF_VERSION = 0x0001001A > + BASE_NAME = SgiPlatformIdPeiLib > + FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863 > + MODULE_TYPE = PEIM > + VERSION_STRING = 1.0 > + ENTRY_POINT = SgiPlatformIdPeim > + > +[Packages] > + EmbeddedPkg/EmbeddedPkg.dec > + MdePkg/MdePkg.dec > + Platform/ARM/SgiPkg/SgiPlatform.dec > + > +[LibraryClasses] > + FdtLib > + PeimEntryPoint > + > +[Sources] > + SgiPlatformPeiLib.c > + > +[Guids] > + gArmSgiPlatformIdDescriptorGuid > + > +[Ppis] > + gHwConfigDtInfoPpiGuid > + > +[Depex] > + TRUE > diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec > index d995937..ea9f6c5 100644 > --- a/Platform/ARM/SgiPkg/SgiPlatform.dec > +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec > @@ -29,9 +29,14 @@ > Include # Root include for the package > > [Guids.common] > + # ARM Sgi Platform ID descriptor > + gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } } > gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } } > gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } } > > [PcdsFeatureFlag.common] > # Set this PCD to TRUE to enable virtio support. > gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001 > + > +[Ppis] > + gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } } > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 15 June 2018 at 08:16, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > Hello Chandni, > > On 15 June 2018 at 07:55, Chandni Cherukuri <chandni.cherukuri@arm.com> wrote: >> On SGI platforms, the trusted firmware executes prior to >> the SEC phase. It supplies to the SEC phase a pointer to >> a fdt, that contains platform specific information such as >> part number and config number of the SGI platform. The >> platform code that executes during the SEC phase creates a >> PPI that allows access to other PEIMs to obtain a copy of the >> fdt pointer. >> >> Further, during the PEI phase, a Platform ID PEIM installs a >> Platform ID HOB. The Platform ID HOB can be used by DXE >> drivers to identify the platform it is executing on. >> >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com> >> --- >> .../SgiPkg/Library/PlatformLib/AArch64/Helper.S | 15 ++- >> .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 10 ++ >> .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 3 + >> .../Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c | 108 +++++++++++++++++++++ >> .../SgiPlatformPeiLib/SgiPlatformPeiLib.inf | 40 ++++++++ >> Platform/ARM/SgiPkg/SgiPlatform.dec | 5 + >> 6 files changed, 177 insertions(+), 4 deletions(-) >> create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c >> create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf >> > > Please use '--stat=250 --stat-graph-width=20' when using git > format-patch so that we get to see the entire path names in the > diffstat > >> diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S >> index dab6c77..80b93ea 100644 >> --- a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S >> +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S >> @@ -22,15 +22,22 @@ GCC_ASM_EXPORT(ArmPlatformPeiBootAction) >> GCC_ASM_EXPORT(ArmPlatformGetCorePosition) >> GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId) >> GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore) >> +GCC_ASM_EXPORT(HwConfigDtBlob) >> + >> +HwConfigDtBlob: .long 0 >> > > Please move this definition to PlatformLib.c > >> // >> // First platform specific function to be called in the PEI phase >> // >> -// This function is actually the first function called by the PrePi >> -// or PrePeiCore modules. It allows to retrieve arguments passed to >> -// the UEFI firmware through the CPU registers. >> -// >> +// The trusted firmware passed the hw config DT blob in x1 register. >> +// Keep a copy of it in a global variable. >> +//VOID >> +//ArmPlatformPeiBootAction ( >> +// VOID >> +// ); >> ASM_PFX(ArmPlatformPeiBootAction): >> + ldr x10, =HwConfigDtBlob > > Please use adr to take the address of HwConfigDtBlob > >> + str x1, [x10] >> ret >> >> //UINTN >> diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c >> index ea3201a..54860e0 100644 >> --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c >> +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c >> @@ -15,6 +15,10 @@ >> #include <Library/ArmPlatformLib.h> >> #include <Library/BaseLib.h> >> #include <Ppi/ArmMpCoreInfo.h> >> +#include <SgiPlatform.h> >> + >> +extern UINT64 HwConfigDtBlob; >> +STATIC SGI_HW_CONFIG_INFO_PPI mHwConfigDtInfoPpi; >> > > Where is this PPI declared? A PPI is like a protocol, it has its own > declaration in a header file under Include/Ppi in the package > >> STATIC ARM_CORE_INFO mCoreInfoTable[] = { >> { >> @@ -36,6 +40,7 @@ ArmPlatformInitialize ( >> IN UINTN MpId >> ) >> { >> + mHwConfigDtInfoPpi.HwConfigDtAddr = &HwConfigDtBlob; >> return RETURN_SUCCESS; >> } >> >> @@ -59,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { >> EFI_PEI_PPI_DESCRIPTOR_PPI, >> &gArmMpCoreInfoPpiGuid, >> &mMpCoreInfoPpi >> + }, >> + { >> + EFI_PEI_PPI_DESCRIPTOR_PPI, >> + &gHwConfigDtInfoPpiGuid, >> + &mHwConfigDtInfoPpi >> } >> }; >> >> diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf >> index 42e14d5..5d4bf72 100644 >> --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf >> +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf >> @@ -61,7 +61,10 @@ >> gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress >> >> [Guids] >> + gArmSgiPlatformIdDescriptorGuid >> gEfiHobListGuid ## CONSUMES ## SystemTable >> + gFdtTableGuid >> >> [Ppis] >> gArmMpCoreInfoPpiGuid >> + gHwConfigDtInfoPpiGuid >> diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c >> new file mode 100644 >> index 0000000..f6446e6 >> --- /dev/null >> +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c >> @@ -0,0 +1,108 @@ >> +/** @file >> +* >> +* Copyright (c) 2018, ARM Limited. All rights reserved. >> +* >> +* This program and the accompanying materials are licensed and made available >> +* under the terms and conditions of the BSD License which accompanies this >> +* distribution. The full text of the license may be found at >> +* http://opensource.org/licenses/bsd-license.php >> +* >> +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> +* >> +**/ >> + >> +#include <Library/DebugLib.h> >> +#include <Library/HobLib.h> >> +#include <Library/PeimEntryPoint.h> >> +#include <Library/PeiServicesLib.h> >> +#include <libfdt.h> >> +#include <SgiPlatform.h> >> + >> +/** >> + >> + This function returns the Platform ID of the platform >> + >> + This functions locates the HwConfig PPI and gets the base address of HW CONFIG >> + DT from which the platform ID is obtained using FDT helper functions >> + >> + @return returns the platform ID on success else returns 0 on error >> + >> +**/ >> + >> +STATIC >> +UINT32 >> +GetSgiPlatformId ( >> + VOID >> +) >> +{ >> + CONST UINT32 *Property; >> + INT32 Offset; >> + CONST VOID *HwCfgDtBlob; >> + SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi; >> + EFI_STATUS Status; >> + >> + Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, (VOID**)&HwConfigInfoPpi); > > Please check all your patches for overly long lines. 80 columns is that maximum > >> + if (EFI_ERROR (Status)) { >> + DEBUG ((DEBUG_ERROR, "PeiServicesLocatePpi failed with error %r\n", Status)); >> + return 0; >> + } >> + >> + HwCfgDtBlob = (VOID *)(*(HwConfigInfoPpi->HwConfigDtAddr)); >> + if (fdt_check_header (HwCfgDtBlob) != 0 ) { >> + DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed as HW_CONFIG\n", HwCfgDtBlob)); >> + return 0; >> + } >> + >> + Offset = fdt_subnode_offset (HwCfgDtBlob, 0, "system-id"); >> + if (Offset == -FDT_ERR_NOTFOUND) { >> + DEBUG ((DEBUG_ERROR, "Invalid DTB : system-id node not found\n")); >> + return 0; >> + } >> + >> + Property = fdt_getprop (HwCfgDtBlob, Offset, "platform-id", NULL); >> + if (Property == NULL) { >> + DEBUG ((DEBUG_ERROR, "Platform Id is NULL\n")); >> + return 0; >> + } >> + >> + return fdt32_to_cpu (*Property); >> +} >> + >> +/** >> + >> + This function creates a Platform ID HOB and assigns PlatformId as the >> + HobData >> + >> + @return asserts on error and returns EFI_INVALID_PARAMETER. On success >> + returns EFI_SUCCESS >> + >> +**/ >> +EFI_STATUS >> +EFIAPI >> +SgiPlatformIdPeim ( >> + IN EFI_PEI_FILE_HANDLE FileHandle, >> + IN CONST EFI_PEI_SERVICES **PeiServices >> +) >> +{ >> + SGI_PLATFORM_DESCRIPTOR *HobData; >> + >> + //Create platform descriptor HOB >> + HobData = (SGI_PLATFORM_DESCRIPTOR *)BuildGuidHob (&gArmSgiPlatformIdDescriptorGuid, >> + sizeof (SGI_PLATFORM_DESCRIPTOR)); >> + >> + //Get the platform id from the platform specific hw_config device tree >> + if (HobData != NULL) { > > Please invert the sense of this conditional, and return > EFI_OUT_OF_RESOURCES if HobData is NULL > >> + HobData->PlatformId = GetSgiPlatformId (); >> + if (HobData->PlatformId == 0) { >> + ASSERT (FALSE); >> + return EFI_INVALID_PARAMETER; >> + } >> + } else { > > After you have inverted the if() condition, you can drop the else as well > >> + DEBUG ((DEBUG_ERROR, "Platform HoB is NULL\n")); >> + ASSERT (FALSE); >> + return EFI_INVALID_PARAMETER; >> + } >> + >> + return EFI_SUCCESS; >> +} >> diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf >> new file mode 100644 >> index 0000000..502d6ac >> --- /dev/null >> +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf >> @@ -0,0 +1,40 @@ >> +# >> +# Copyright (c) 2018, ARM Limited. All rights reserved. >> +# >> +# This program and the accompanying materials are licensed and made available >> +# under the terms and conditions of the BSD License which accompanies this >> +# distribution. The full text of the license may be found at >> +# http://opensource.org/licenses/bsd-license.php >> +# >> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> +# >> + >> +[Defines] >> + INF_VERSION = 0x0001001A >> + BASE_NAME = SgiPlatformIdPeiLib I forgot: this is a module not a library. So it should be called SgiPlatformIdPei or SgiPlatformIdPeim not ...Lib >> + FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863 >> + MODULE_TYPE = PEIM >> + VERSION_STRING = 1.0 >> + ENTRY_POINT = SgiPlatformIdPeim >> + >> +[Packages] >> + EmbeddedPkg/EmbeddedPkg.dec >> + MdePkg/MdePkg.dec >> + Platform/ARM/SgiPkg/SgiPlatform.dec >> + >> +[LibraryClasses] >> + FdtLib >> + PeimEntryPoint >> + >> +[Sources] >> + SgiPlatformPeiLib.c >> + >> +[Guids] >> + gArmSgiPlatformIdDescriptorGuid >> + >> +[Ppis] >> + gHwConfigDtInfoPpiGuid >> + >> +[Depex] >> + TRUE >> diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec >> index d995937..ea9f6c5 100644 >> --- a/Platform/ARM/SgiPkg/SgiPlatform.dec >> +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec >> @@ -29,9 +29,14 @@ >> Include # Root include for the package >> >> [Guids.common] >> + # ARM Sgi Platform ID descriptor >> + gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } } >> gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } } >> gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } } >> >> [PcdsFeatureFlag.common] >> # Set this PCD to TRUE to enable virtio support. >> gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001 >> + >> +[Ppis] >> + gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } } >> -- >> 2.7.4 >> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Fri, Jun 15, 2018 at 08:19:35AM +0200, Ard Biesheuvel wrote: > On 15 June 2018 at 08:16, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > >> diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > >> new file mode 100644 > >> index 0000000..502d6ac > >> --- /dev/null > >> +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > >> @@ -0,0 +1,40 @@ > >> +# > >> +# Copyright (c) 2018, ARM Limited. All rights reserved. > >> +# > >> +# This program and the accompanying materials are licensed and made available > >> +# under the terms and conditions of the BSD License which accompanies this > >> +# distribution. The full text of the license may be found at > >> +# http://opensource.org/licenses/bsd-license.php > >> +# > >> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > >> +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > >> +# > >> + > >> +[Defines] > >> + INF_VERSION = 0x0001001A > >> + BASE_NAME = SgiPlatformIdPeiLib > > I forgot: this is a module not a library. So it should be called > SgiPlatformIdPei or SgiPlatformIdPeim not ...Lib A grep through the edk2 tree suggests that: - the directory is usually called *Pei - .inf/.uni usually *Pei.* - entry point and source files *Peim* / Leif > >> + FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863 > >> + MODULE_TYPE = PEIM > >> + VERSION_STRING = 1.0 > >> + ENTRY_POINT = SgiPlatformIdPeim > >> + > >> +[Packages] > >> + EmbeddedPkg/EmbeddedPkg.dec > >> + MdePkg/MdePkg.dec > >> + Platform/ARM/SgiPkg/SgiPlatform.dec > >> + > >> +[LibraryClasses] > >> + FdtLib > >> + PeimEntryPoint > >> + > >> +[Sources] > >> + SgiPlatformPeiLib.c > >> + > >> +[Guids] > >> + gArmSgiPlatformIdDescriptorGuid > >> + > >> +[Ppis] > >> + gHwConfigDtInfoPpiGuid > >> + > >> +[Depex] > >> + TRUE > >> diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec > >> index d995937..ea9f6c5 100644 > >> --- a/Platform/ARM/SgiPkg/SgiPlatform.dec > >> +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec > >> @@ -29,9 +29,14 @@ > >> Include # Root include for the package > >> > >> [Guids.common] > >> + # ARM Sgi Platform ID descriptor > >> + gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } } > >> gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } } > >> gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } } > >> > >> [PcdsFeatureFlag.common] > >> # Set this PCD to TRUE to enable virtio support. > >> gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001 > >> + > >> +[Ppis] > >> + gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } } > >> -- > >> 2.7.4 > >> _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Just some minor formatting points in addition to the comment on Ard's reply.. On Fri, Jun 15, 2018 at 11:25:31AM +0530, Chandni Cherukuri wrote: > On SGI platforms, the trusted firmware executes prior to > the SEC phase. It supplies to the SEC phase a pointer to > a fdt, that contains platform specific information such as > part number and config number of the SGI platform. The > platform code that executes during the SEC phase creates a > PPI that allows access to other PEIMs to obtain a copy of the > fdt pointer. > > Further, during the PEI phase, a Platform ID PEIM installs a > Platform ID HOB. The Platform ID HOB can be used by DXE > drivers to identify the platform it is executing on. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com> > --- > .../SgiPkg/Library/PlatformLib/AArch64/Helper.S | 15 ++- > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 10 ++ > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 3 + > .../Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c | 108 +++++++++++++++++++++ > .../SgiPlatformPeiLib/SgiPlatformPeiLib.inf | 40 ++++++++ > Platform/ARM/SgiPkg/SgiPlatform.dec | 5 + > 6 files changed, 177 insertions(+), 4 deletions(-) > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > index dab6c77..80b93ea 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > @@ -22,15 +22,22 @@ GCC_ASM_EXPORT(ArmPlatformPeiBootAction) > GCC_ASM_EXPORT(ArmPlatformGetCorePosition) > GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId) > GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore) > +GCC_ASM_EXPORT(HwConfigDtBlob) > + > +HwConfigDtBlob: .long 0 > > // > // First platform specific function to be called in the PEI phase > // > -// This function is actually the first function called by the PrePi > -// or PrePeiCore modules. It allows to retrieve arguments passed to > -// the UEFI firmware through the CPU registers. > -// > +// The trusted firmware passed the hw config DT blob in x1 register. > +// Keep a copy of it in a global variable. > +//VOID > +//ArmPlatformPeiBootAction ( > +// VOID > +// ); > ASM_PFX(ArmPlatformPeiBootAction): > + ldr x10, =HwConfigDtBlob > + str x1, [x10] > ret > > //UINTN > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > index ea3201a..54860e0 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > @@ -15,6 +15,10 @@ > #include <Library/ArmPlatformLib.h> > #include <Library/BaseLib.h> > #include <Ppi/ArmMpCoreInfo.h> > +#include <SgiPlatform.h> > + > +extern UINT64 HwConfigDtBlob; > +STATIC SGI_HW_CONFIG_INFO_PPI mHwConfigDtInfoPpi; > > STATIC ARM_CORE_INFO mCoreInfoTable[] = { > { > @@ -36,6 +40,7 @@ ArmPlatformInitialize ( > IN UINTN MpId > ) > { > + mHwConfigDtInfoPpi.HwConfigDtAddr = &HwConfigDtBlob; > return RETURN_SUCCESS; > } > > @@ -59,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { > EFI_PEI_PPI_DESCRIPTOR_PPI, > &gArmMpCoreInfoPpiGuid, > &mMpCoreInfoPpi > + }, > + { > + EFI_PEI_PPI_DESCRIPTOR_PPI, > + &gHwConfigDtInfoPpiGuid, > + &mHwConfigDtInfoPpi > } > }; > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > index 42e14d5..5d4bf72 100644 > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > @@ -61,7 +61,10 @@ > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > > [Guids] > + gArmSgiPlatformIdDescriptorGuid > gEfiHobListGuid ## CONSUMES ## SystemTable > + gFdtTableGuid > > [Ppis] > gArmMpCoreInfoPpiGuid > + gHwConfigDtInfoPpiGuid > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > new file mode 100644 > index 0000000..f6446e6 > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > @@ -0,0 +1,108 @@ > +/** @file > +* > +* Copyright (c) 2018, ARM Limited. All rights reserved. > +* > +* This program and the accompanying materials are licensed and made available > +* under the terms and conditions of the BSD License which accompanies this > +* distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#include <Library/DebugLib.h> > +#include <Library/HobLib.h> > +#include <Library/PeimEntryPoint.h> > +#include <Library/PeiServicesLib.h> > +#include <libfdt.h> > +#include <SgiPlatform.h> > + > +/** > + > + This function returns the Platform ID of the platform > + > + This functions locates the HwConfig PPI and gets the base address of HW CONFIG > + DT from which the platform ID is obtained using FDT helper functions > + > + @return returns the platform ID on success else returns 0 on error > + > +**/ > + > +STATIC > +UINT32 > +GetSgiPlatformId ( > + VOID > +) > +{ > + CONST UINT32 *Property; > + INT32 Offset; > + CONST VOID *HwCfgDtBlob; > + SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi; > + EFI_STATUS Status; > + > + Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, (VOID**)&HwConfigInfoPpi); 93 characters. Please run BaseTools/Scripts/PatchCheck.py. > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "PeiServicesLocatePpi failed with error %r\n", Status)); > + return 0; > + } > + > + HwCfgDtBlob = (VOID *)(*(HwConfigInfoPpi->HwConfigDtAddr)); > + if (fdt_check_header (HwCfgDtBlob) != 0 ) { Trailing space after 0. > + DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed as HW_CONFIG\n", HwCfgDtBlob)); > + return 0; > + } > + > + Offset = fdt_subnode_offset (HwCfgDtBlob, 0, "system-id"); > + if (Offset == -FDT_ERR_NOTFOUND) { > + DEBUG ((DEBUG_ERROR, "Invalid DTB : system-id node not found\n")); > + return 0; > + } > + > + Property = fdt_getprop (HwCfgDtBlob, Offset, "platform-id", NULL); > + if (Property == NULL) { > + DEBUG ((DEBUG_ERROR, "Platform Id is NULL\n")); > + return 0; > + } > + > + return fdt32_to_cpu (*Property); > +} > + > +/** > + > + This function creates a Platform ID HOB and assigns PlatformId as the > + HobData > + > + @return asserts on error and returns EFI_INVALID_PARAMETER. On success > + returns EFI_SUCCESS > + > +**/ > +EFI_STATUS > +EFIAPI > +SgiPlatformIdPeim ( > + IN EFI_PEI_FILE_HANDLE FileHandle, > + IN CONST EFI_PEI_SERVICES **PeiServices > +) > +{ > + SGI_PLATFORM_DESCRIPTOR *HobData; > + > + //Create platform descriptor HOB > + HobData = (SGI_PLATFORM_DESCRIPTOR *)BuildGuidHob (&gArmSgiPlatformIdDescriptorGuid, > + sizeof (SGI_PLATFORM_DESCRIPTOR)); > + > + //Get the platform id from the platform specific hw_config device tree > + if (HobData != NULL) { > + HobData->PlatformId = GetSgiPlatformId (); > + if (HobData->PlatformId == 0) { > + ASSERT (FALSE); > + return EFI_INVALID_PARAMETER; > + } > + } else { > + DEBUG ((DEBUG_ERROR, "Platform HoB is NULL\n")); HOB / Leif > + ASSERT (FALSE); > + return EFI_INVALID_PARAMETER; > + } > + > + return EFI_SUCCESS; > +} > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > new file mode 100644 > index 0000000..502d6ac > --- /dev/null > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > @@ -0,0 +1,40 @@ > +# > +# Copyright (c) 2018, ARM Limited. All rights reserved. > +# > +# This program and the accompanying materials are licensed and made available > +# under the terms and conditions of the BSD License which accompanies this > +# distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > + > +[Defines] > + INF_VERSION = 0x0001001A > + BASE_NAME = SgiPlatformIdPeiLib > + FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863 > + MODULE_TYPE = PEIM > + VERSION_STRING = 1.0 > + ENTRY_POINT = SgiPlatformIdPeim > + > +[Packages] > + EmbeddedPkg/EmbeddedPkg.dec > + MdePkg/MdePkg.dec > + Platform/ARM/SgiPkg/SgiPlatform.dec > + > +[LibraryClasses] > + FdtLib > + PeimEntryPoint > + > +[Sources] > + SgiPlatformPeiLib.c > + > +[Guids] > + gArmSgiPlatformIdDescriptorGuid > + > +[Ppis] > + gHwConfigDtInfoPpiGuid > + > +[Depex] > + TRUE > diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec > index d995937..ea9f6c5 100644 > --- a/Platform/ARM/SgiPkg/SgiPlatform.dec > +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec > @@ -29,9 +29,14 @@ > Include # Root include for the package > > [Guids.common] > + # ARM Sgi Platform ID descriptor > + gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } } > gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } } > gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } } > > [PcdsFeatureFlag.common] > # Set this PCD to TRUE to enable virtio support. > gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001 > + > +[Ppis] > + gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } } > -- > 2.7.4 > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Fri, Jun 15, 2018 at 3:48 PM, Leif Lindholm <leif.lindholm@linaro.org> wrote: > > Just some minor formatting points in addition to the comment on Ard's > reply.. > > On Fri, Jun 15, 2018 at 11:25:31AM +0530, Chandni Cherukuri wrote: > > On SGI platforms, the trusted firmware executes prior to > > the SEC phase. It supplies to the SEC phase a pointer to > > a fdt, that contains platform specific information such as > > part number and config number of the SGI platform. The > > platform code that executes during the SEC phase creates a > > PPI that allows access to other PEIMs to obtain a copy of the > > fdt pointer. > > > > Further, during the PEI phase, a Platform ID PEIM installs a > > Platform ID HOB. The Platform ID HOB can be used by DXE > > drivers to identify the platform it is executing on. > > > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com> > > --- > > .../SgiPkg/Library/PlatformLib/AArch64/Helper.S | 15 ++- > > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.c | 10 ++ > > .../ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf | 3 + > > .../Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c | 108 +++++++++++++++++++++ > > .../SgiPlatformPeiLib/SgiPlatformPeiLib.inf | 40 ++++++++ > > Platform/ARM/SgiPkg/SgiPlatform.dec | 5 + > > 6 files changed, 177 insertions(+), 4 deletions(-) > > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > > create mode 100644 Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > > > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > > index dab6c77..80b93ea 100644 > > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/AArch64/Helper.S > > @@ -22,15 +22,22 @@ GCC_ASM_EXPORT(ArmPlatformPeiBootAction) > > GCC_ASM_EXPORT(ArmPlatformGetCorePosition) > > GCC_ASM_EXPORT(ArmPlatformGetPrimaryCoreMpId) > > GCC_ASM_EXPORT(ArmPlatformIsPrimaryCore) > > +GCC_ASM_EXPORT(HwConfigDtBlob) > > + > > +HwConfigDtBlob: .long 0 > > > > // > > // First platform specific function to be called in the PEI phase > > // > > -// This function is actually the first function called by the PrePi > > -// or PrePeiCore modules. It allows to retrieve arguments passed to > > -// the UEFI firmware through the CPU registers. > > -// > > +// The trusted firmware passed the hw config DT blob in x1 register. > > +// Keep a copy of it in a global variable. > > +//VOID > > +//ArmPlatformPeiBootAction ( > > +// VOID > > +// ); > > ASM_PFX(ArmPlatformPeiBootAction): > > + ldr x10, =HwConfigDtBlob > > + str x1, [x10] > > ret > > > > //UINTN > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > > index ea3201a..54860e0 100644 > > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.c > > @@ -15,6 +15,10 @@ > > #include <Library/ArmPlatformLib.h> > > #include <Library/BaseLib.h> > > #include <Ppi/ArmMpCoreInfo.h> > > +#include <SgiPlatform.h> > > + > > +extern UINT64 HwConfigDtBlob; > > +STATIC SGI_HW_CONFIG_INFO_PPI mHwConfigDtInfoPpi; > > > > STATIC ARM_CORE_INFO mCoreInfoTable[] = { > > { > > @@ -36,6 +40,7 @@ ArmPlatformInitialize ( > > IN UINTN MpId > > ) > > { > > + mHwConfigDtInfoPpi.HwConfigDtAddr = &HwConfigDtBlob; > > return RETURN_SUCCESS; > > } > > > > @@ -59,6 +64,11 @@ EFI_PEI_PPI_DESCRIPTOR gPlatformPpiTable[] = { > > EFI_PEI_PPI_DESCRIPTOR_PPI, > > &gArmMpCoreInfoPpiGuid, > > &mMpCoreInfoPpi > > + }, > > + { > > + EFI_PEI_PPI_DESCRIPTOR_PPI, > > + &gHwConfigDtInfoPpiGuid, > > + &mHwConfigDtInfoPpi > > } > > }; > > > > diff --git a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > > index 42e14d5..5d4bf72 100644 > > --- a/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > > +++ b/Platform/ARM/SgiPkg/Library/PlatformLib/PlatformLib.inf > > @@ -61,7 +61,10 @@ > > gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress > > > > [Guids] > > + gArmSgiPlatformIdDescriptorGuid > > gEfiHobListGuid ## CONSUMES ## SystemTable > > + gFdtTableGuid > > > > [Ppis] > > gArmMpCoreInfoPpiGuid > > + gHwConfigDtInfoPpiGuid > > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > > new file mode 100644 > > index 0000000..f6446e6 > > --- /dev/null > > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.c > > @@ -0,0 +1,108 @@ > > +/** @file > > +* > > +* Copyright (c) 2018, ARM Limited. All rights reserved. > > +* > > +* This program and the accompanying materials are licensed and made available > > +* under the terms and conditions of the BSD License which accompanies this > > +* distribution. The full text of the license may be found at > > +* http://opensource.org/licenses/bsd-license.php > > +* > > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > > +* > > +**/ > > + > > +#include <Library/DebugLib.h> > > +#include <Library/HobLib.h> > > +#include <Library/PeimEntryPoint.h> > > +#include <Library/PeiServicesLib.h> > > +#include <libfdt.h> > > +#include <SgiPlatform.h> > > + > > +/** > > + > > + This function returns the Platform ID of the platform > > + > > + This functions locates the HwConfig PPI and gets the base address of HW CONFIG > > + DT from which the platform ID is obtained using FDT helper functions > > + > > + @return returns the platform ID on success else returns 0 on error > > + > > +**/ > > + > > +STATIC > > +UINT32 > > +GetSgiPlatformId ( > > + VOID > > +) > > +{ > > + CONST UINT32 *Property; > > + INT32 Offset; > > + CONST VOID *HwCfgDtBlob; > > + SGI_HW_CONFIG_INFO_PPI *HwConfigInfoPpi; > > + EFI_STATUS Status; > > + > > + Status = PeiServicesLocatePpi (&gHwConfigDtInfoPpiGuid, 0, NULL, (VOID**)&HwConfigInfoPpi); > > 93 characters. Please run BaseTools/Scripts/PatchCheck.py. > > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "PeiServicesLocatePpi failed with error %r\n", Status)); > > + return 0; > > + } > > + > > + HwCfgDtBlob = (VOID *)(*(HwConfigInfoPpi->HwConfigDtAddr)); > > + if (fdt_check_header (HwCfgDtBlob) != 0 ) { > > Trailing space after 0. > > > + DEBUG ((DEBUG_ERROR, "Invalid DTB file %p passed as HW_CONFIG\n", HwCfgDtBlob)); > > + return 0; > > + } > > + > > + Offset = fdt_subnode_offset (HwCfgDtBlob, 0, "system-id"); > > + if (Offset == -FDT_ERR_NOTFOUND) { > > + DEBUG ((DEBUG_ERROR, "Invalid DTB : system-id node not found\n")); > > + return 0; > > + } > > + > > + Property = fdt_getprop (HwCfgDtBlob, Offset, "platform-id", NULL); > > + if (Property == NULL) { > > + DEBUG ((DEBUG_ERROR, "Platform Id is NULL\n")); > > + return 0; > > + } > > + > > + return fdt32_to_cpu (*Property); > > +} > > + > > +/** > > + > > + This function creates a Platform ID HOB and assigns PlatformId as the > > + HobData > > + > > + @return asserts on error and returns EFI_INVALID_PARAMETER. On success > > + returns EFI_SUCCESS > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +SgiPlatformIdPeim ( > > + IN EFI_PEI_FILE_HANDLE FileHandle, > > + IN CONST EFI_PEI_SERVICES **PeiServices > > +) > > +{ > > + SGI_PLATFORM_DESCRIPTOR *HobData; > > + > > + //Create platform descriptor HOB > > + HobData = (SGI_PLATFORM_DESCRIPTOR *)BuildGuidHob (&gArmSgiPlatformIdDescriptorGuid, > > + sizeof (SGI_PLATFORM_DESCRIPTOR)); > > + > > + //Get the platform id from the platform specific hw_config device tree > > + if (HobData != NULL) { > > + HobData->PlatformId = GetSgiPlatformId (); > > + if (HobData->PlatformId == 0) { > > + ASSERT (FALSE); > > + return EFI_INVALID_PARAMETER; > > + } > > + } else { > > + DEBUG ((DEBUG_ERROR, "Platform HoB is NULL\n")); > > HOB > > / > Leif Hi Ard, Leif, Thank you for your comments. All the changes as per your comments have been made and updated patches have been posted for your review. Thanks, Chandni. > > > + ASSERT (FALSE); > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + return EFI_SUCCESS; > > +} > > diff --git a/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > > new file mode 100644 > > index 0000000..502d6ac > > --- /dev/null > > +++ b/Platform/ARM/SgiPkg/Library/SgiPlatformPeiLib/SgiPlatformPeiLib.inf > > @@ -0,0 +1,40 @@ > > +# > > +# Copyright (c) 2018, ARM Limited. All rights reserved. > > +# > > +# This program and the accompanying materials are licensed and made available > > +# under the terms and conditions of the BSD License which accompanies this > > +# distribution. The full text of the license may be found at > > +# http://opensource.org/licenses/bsd-license.php > > +# > > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > > +# > > + > > +[Defines] > > + INF_VERSION = 0x0001001A > > + BASE_NAME = SgiPlatformIdPeiLib > > + FILE_GUID = a9936f3e-6a1b-11e8-8ce0-fffe69b86863 > > + MODULE_TYPE = PEIM > > + VERSION_STRING = 1.0 > > + ENTRY_POINT = SgiPlatformIdPeim > > + > > +[Packages] > > + EmbeddedPkg/EmbeddedPkg.dec > > + MdePkg/MdePkg.dec > > + Platform/ARM/SgiPkg/SgiPlatform.dec > > + > > +[LibraryClasses] > > + FdtLib > > + PeimEntryPoint > > + > > +[Sources] > > + SgiPlatformPeiLib.c > > + > > +[Guids] > > + gArmSgiPlatformIdDescriptorGuid > > + > > +[Ppis] > > + gHwConfigDtInfoPpiGuid > > + > > +[Depex] > > + TRUE > > diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dec b/Platform/ARM/SgiPkg/SgiPlatform.dec > > index d995937..ea9f6c5 100644 > > --- a/Platform/ARM/SgiPkg/SgiPlatform.dec > > +++ b/Platform/ARM/SgiPkg/SgiPlatform.dec > > @@ -29,9 +29,14 @@ > > Include # Root include for the package > > > > [Guids.common] > > + # ARM Sgi Platform ID descriptor > > + gArmSgiPlatformIdDescriptorGuid = { 0xf56f152a, 0xad2a, 0x11e6, { 0xb1, 0xa7, 0x00, 0x50, 0x56, 0x3c, 0x44, 0xcc } } > > gArmSgiTokenSpaceGuid = { 0x577d6941, 0xaea1, 0x40b4, { 0x90, 0x93, 0x2a, 0x86, 0x61, 0x72, 0x5a, 0x57 } } > > gSgi575AcpiTablesiFileGuid = { 0xc712719a, 0x0aaf, 0x438c, { 0x9c, 0xdd, 0x35, 0xab, 0x4d, 0x60, 0x20, 0x7d } } > > > > [PcdsFeatureFlag.common] > > # Set this PCD to TRUE to enable virtio support. > > gArmSgiTokenSpaceGuid.PcdVirtioSupported|TRUE|BOOLEAN|0x00000001 > > + > > +[Ppis] > > + gHwConfigDtInfoPpiGuid = { 0x6f606eb3, 0x9123, 0x4e15, { 0xa8, 0x9b, 0x0f, 0xac, 0x66, 0xef, 0xd0, 0x17 } } > > -- > > 2.7.4 > > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2024 Red Hat, Inc.