|
@@ -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;
|
|
|
+}
|