[edk2-devel] [edk2-platforms] [PATCH V1 09/17] WhitleySiliconPkg: Add SiliconPolicyInit
Nate DeSimone
nathaniel.l.desimone at intel.com
Tue Jul 13 00:41:23 UTC 2021
Signed-off-by: Nate DeSimone <nathaniel.l.desimone at intel.com>
Co-authored-by: Isaac Oram <isaac.w.oram at intel.com>
Co-authored-by: Mohamed Abbas <mohamed.abbas at intel.com>
Cc: Chasel Chiu <chasel.chiu at intel.com>
Cc: Michael D Kinney <michael.d.kinney at intel.com>
Cc: Isaac Oram <isaac.w.oram at intel.com>
Cc: Mohamed Abbas <mohamed.abbas at intel.com>
Cc: Liming Gao <gaoliming at byosoft.com.cn>
Cc: Eric Dong <eric.dong at intel.com>
Cc: Michael Kubacki <Michael.Kubacki at microsoft.com>
---
.../SiliconPolicyInit/SiliconPolicyInitLate.c | 52 +++++++++++++++
.../SiliconPolicyInitLate.inf | 49 +++++++++++++++
.../SiliconPolicyInitPreAndPostMem.c | 63 +++++++++++++++++++
.../SiliconPolicyInitPreAndPostMem.inf | 48 ++++++++++++++
4 files changed, 212 insertions(+)
create mode 100644 Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.c
create mode 100644 Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.inf
create mode 100644 Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.c
create mode 100644 Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.inf
diff --git a/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.c b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.c
new file mode 100644
index 0000000000..d5c1828cce
--- /dev/null
+++ b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.c
@@ -0,0 +1,52 @@
+/** @file
+ SiliconPolicyInitLib DXE.
+
+ This driver initializes silicon policy with the defaults from the silicon provider.
+ It publishes a protocol that is consumed by a shim library instance that provides the functions used by the
+ common MinPlatformPkg PolicyInit late policy initialization code.
+
+ @copyright
+ Copyright 2021 Intel Corporation. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <PiDxe.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/DriverEntryPoint.h>
+#include <Library/SiliconPolicyInitLib.h>
+#include <Guid/SiliconPolicyInitLibInterface.h>
+
+STATIC SILICON_POLICY_INIT_LIB_PROTOCOL mSiliconPolicyInitLibProtocol = {
+ SiliconPolicyInitLate,
+ SiliconPolicyDoneLate
+};
+
+/**
+ Entry point function
+
+ @param ImageHandle - Handle for the image of this driver.
+ @param SystemTable - Pointer to the EFI System Table.
+
+ @retval EFI_SUCCESS - Protocol installed sucessfully.
+**/
+EFI_STATUS
+EFIAPI
+SiliconPolicyInitLateDxeEntry (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+ EFI_HANDLE Handle;
+
+ Handle = NULL;
+ Status = gBS->InstallProtocolInterface (&Handle, &gSiliconPolicyInitLibInterfaceGuid, EFI_NATIVE_INTERFACE, &mSiliconPolicyInitLibProtocol);
+ if (EFI_ERROR (Status)) {
+ ASSERT_EFI_ERROR (Status);
+ return Status;
+ }
+
+ return Status;
+}
diff --git a/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.inf b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.inf
new file mode 100644
index 0000000000..d6ef987f5b
--- /dev/null
+++ b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitLate.inf
@@ -0,0 +1,49 @@
+## @file
+# SiliconPolicyInitLate DXE Boot Services Driver
+#
+# This driver initializes silicon policy with the defaults from the silicon provider.
+# It publishes a protocol that is consumed by a shim library instance that provides the functions used by the
+# common MinPlatformPkg PolicyInit late silicon init code.
+# This driver produces SiliconPolicyInit LATE services. A PEIM provides the PRE and POST memory services.
+#
+# @copyright
+# Copyright 2021 Intel Corporation. <BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = SiliconPolicyInitLate
+ FILE_GUID = ff6216f2-d911-44a5-9f48-c174223acc7c
+ MODULE_TYPE = DXE_DRIVER
+ VERSION_STRING = 1.0
+ ENTRY_POINT = SiliconPolicyInitLateDxeEntry
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = X64
+#
+
+[Sources]
+ SiliconPolicyInitLate.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MinPlatformPkg/MinPlatformPkg.dec
+ WhitleySiliconPkg/WhitleySiliconPkg.dec
+ WhitleyOpenboardPkg/PlatformPkg.dec
+
+[LibraryClasses]
+ BaseLib
+ DebugLib
+ DriverEntryPoint
+ UefiBootServicesTableLib
+ SiliconPolicyInitLib
+
+[Guids]
+ gSiliconPolicyInitLibInterfaceGuid ## ALWAYS_PRODUCES a PROTOCOL with this GUID
+
+[Depex]
+ TRUE
diff --git a/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.c b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.c
new file mode 100644
index 0000000000..5bc410f21f
--- /dev/null
+++ b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.c
@@ -0,0 +1,63 @@
+/** @file
+ SiliconPolicyInit PEIM.
+
+ This PEIM initializes silicon policy with the defaults from the silicon provider.
+ We publish a PPI that is consumed by a shim library instance that provides the functions used by the
+ common MinPlatformPkg PolicyInit pre and post memory code.
+
+ @copyright
+ Copyright 2021 Intel Corporation. <BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+**/
+
+#include <PiPei.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/PeimEntryPoint.h>
+#include <Library/PeiServicesLib.h>
+#include <Library/SiliconPolicyInitLib.h>
+#include <Guid/SiliconPolicyInitLibInterface.h>
+
+STATIC SILICON_POLICY_INIT_LIB_PPI mSiliconPolicyInitLibPpi = {
+ SiliconPolicyInitPreMem,
+ SiliconPolicyDonePreMem,
+ SiliconPolicyInitPostMem,
+ SiliconPolicyDonePostMem
+};
+
+STATIC EFI_PEI_PPI_DESCRIPTOR mSiliconPolicyInitLibPpiDescriptor = {
+ EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
+ &gSiliconPolicyInitLibInterfaceGuid,
+ &mSiliconPolicyInitLibPpi
+ };
+
+/**
+ Entry point function for the PEIM
+
+ @param FileHandle Handle of the file being invoked.
+ @param PeiServices Describes the list of possible PEI Services.
+
+ @return EFI_SUCCESS If we installed our PPI
+**/
+EFI_STATUS
+EFIAPI
+SiliconPolicyInitPreAndPostMemPeimEntry (
+ IN EFI_PEI_FILE_HANDLE FileHandle,
+ IN CONST EFI_PEI_SERVICES **PeiServices
+ )
+{
+ EFI_STATUS Status = EFI_SUCCESS;
+
+ //
+ // Just produce our PPI
+ //
+ Status = PeiServicesInstallPpi (&mSiliconPolicyInitLibPpiDescriptor);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((EFI_D_ERROR, "EntryPoint: failed to register PPI!\n"));
+ ASSERT_EFI_ERROR (Status);
+ return Status;
+ }
+
+ return Status;
+}
diff --git a/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.inf b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.inf
new file mode 100644
index 0000000000..6416457fdb
--- /dev/null
+++ b/Silicon/Intel/WhitleySiliconPkg/SiliconPolicyInit/SiliconPolicyInitPreAndPostMem.inf
@@ -0,0 +1,48 @@
+## @file
+# SiliconPolicyInitPreAndPostMem PEIM.
+#
+# This PEIM initializes silicon policy with the defaults from the silicon provider.
+# We publish a PPI that is consumed by a shim library instance that provides the functions used by the
+# common MinPlatformPkg PolicyInit pre and post memory code.
+# This PEIM produces SiliconPolicyInit PRE and POST memory services. A DXE driver provides the LATE services.
+#
+# @copyright
+# Copyright 2021 Intel Corporation. <BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x00010005
+ BASE_NAME = SiliconPolicyInitPreAndPostMem
+ FILE_GUID = ca8efb69-d7dc-4e94-aad6-9fb373649161
+ MODULE_TYPE = PEIM
+ VERSION_STRING = 1.0
+ ENTRY_POINT = SiliconPolicyInitPreAndPostMemPeimEntry
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32
+#
+
+[Sources]
+ SiliconPolicyInitPreAndPostMem.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MinPlatformPkg/MinPlatformPkg.dec
+ WhitleySiliconPkg/WhitleySiliconPkg.dec
+
+[LibraryClasses]
+ BaseLib
+ PeiServicesLib
+ PeimEntryPoint
+ DebugLib
+ SiliconPolicyInitLib
+
+[Guids]
+ gSiliconPolicyInitLibInterfaceGuid ## ALWAYS_PRODUCES a PPI with this GUID
+
+[Depex]
+ TRUE
--
2.27.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#77711): https://edk2.groups.io/g/devel/message/77711
Mute This Topic: https://groups.io/mt/84168623/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list