# HII form set GUID for ConsolePrefDxe driver\r
gConsolePrefFormSetGuid = { 0x2d2358b4, 0xe96c, 0x484d, { 0xb2, 0xdd, 0x7c, 0x2e, 0xdf, 0xc7, 0xd5, 0x6f } }\r
\r
+ ## Include/Guid/NvVarStoreFormatted.h\r
+ gEdkiiNvVarStoreFormattedGuid = { 0xd1a86e3f, 0x0707, 0x4c35, { 0x83, 0xcd, 0xdc, 0x2c, 0x29, 0xc8, 0x91, 0xa3 } }\r
+\r
[Protocols.common]\r
gHardwareInterruptProtocolGuid = { 0x2890B3EA, 0x053D, 0x1643, { 0xAD, 0x0C, 0xD6, 0x48, 0x08, 0xDA, 0x3F, 0xF1 } }\r
gHardwareInterrupt2ProtocolGuid = { 0x32898322, 0x2da1, 0x474a, { 0xba, 0xaa, 0xf3, 0xf7, 0xcf, 0x56, 0x94, 0x70 } }\r
--- /dev/null
+/** @file\r
+ EDKII NvVarStore Formatted GUID\r
+\r
+ A NULL protocol instance with this GUID in the DXE and/or MM protocol\r
+ databases, and/or a NULL PPI with this GUID in the PPI database, implies that\r
+ a DXE or MM driver, or a PEIM, has verified (or dynamically ensured) that the\r
+ non-volatile variable store has valid and consistent headers\r
+ (EFI_FIRMWARE_VOLUME_HEADER and VARIABLE_STORE_HEADER).\r
+\r
+ Said predicate is required by the read-only variable PEIM, and the read side\r
+ of the runtime variable DXE and MM drivers, immediately after they are\r
+ dispatched. This GUID presents platforms with one way to coordinate between\r
+ their module(s) that format the variable store FVB device and the variable\r
+ service drivers.\r
+\r
+ Copyright (C) 2018, Red Hat, Inc.\r
+\r
+ This program and the accompanying materials are licensed and made available\r
+ under the terms and conditions of the BSD License that accompanies this\r
+ distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php.\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+\r
+#ifndef __EDKII_NV_VAR_STORE_FORMATTED_H__\r
+#define __EDKII_NV_VAR_STORE_FORMATTED_H__\r
+\r
+#define EDKII_NV_VAR_STORE_FORMATTED_GUID \\r
+ { \\r
+ 0xd1a86e3f, 0x0707, 0x4c35, \\r
+ { 0x83, 0xcd, 0xdc, 0x2c, 0x29, 0xc8, 0x91, 0xa3 } \\r
+ }\r
+\r
+extern EFI_GUID gEdkiiNvVarStoreFormattedGuid;\r
+\r
+#endif\r
--- /dev/null
+/** @file\r
+ A hook-in library for:\r
+ - MdeModulePkg/Universal/Variable/Pei/VariablePei.inf\r
+ - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+ - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf\r
+\r
+ Plugging this library instance into one of the above modules makes that\r
+ variable service backend wait for another platform module to dynamically\r
+ initialize or verify EFI_FIRMWARE_VOLUME_HEADER and VARIABLE_STORE_HEADER in\r
+ the non-volatile variable store FVB device. The initialization / verification\r
+ is signaled by installing gEdkiiNvVarStoreFormattedGuid into the\r
+ phase-matching PPI or protocol database, with a NULL interface. (Note that\r
+ installing gEdkiiNvVarStoreFormattedGuid into either the DXE or the MM\r
+ protocol database will unblock VariableSmm -- refer to EFI_SECTION_MM_DEPEX\r
+ in the PI spec.)\r
+\r
+ Copyright (C) 2018, Red Hat, Inc.\r
+\r
+ This program and the accompanying materials are licensed and made available\r
+ under the terms and conditions of the BSD License which accompanies this\r
+ distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+ WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+**/\r
+\r
+#include <Base.h>\r
+\r
+RETURN_STATUS\r
+EFIAPI\r
+NvVarStoreFormattedInitialize (\r
+ VOID\r
+ )\r
+{\r
+ //\r
+ // Do nothing, just imbue VariablePei / VariableRuntimeDxe / VariableSmm with\r
+ // a PPI or protocol dependency on EDKII_NV_VAR_STORE_FORMATTED_GUID.\r
+ //\r
+ return RETURN_SUCCESS;\r
+}\r
--- /dev/null
+## @file\r
+# A hook-in library for:\r
+# - MdeModulePkg/Universal/Variable/Pei/VariablePei.inf\r
+# - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+# - MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf\r
+#\r
+# Plugging this library instance into one of the above modules makes that\r
+# variable service backend wait for another platform module to dynamically\r
+# initialize or verify EFI_FIRMWARE_VOLUME_HEADER and VARIABLE_STORE_HEADER in\r
+# the non-volatile variable store FVB device. The initialization / verification\r
+# is signaled by installing gEdkiiNvVarStoreFormattedGuid into the\r
+# phase-matching PPI or protocol database, with a NULL interface. (Note that\r
+# installing gEdkiiNvVarStoreFormattedGuid into either the DXE or the MM\r
+# protocol database will unblock VariableSmm -- refer to EFI_SECTION_MM_DEPEX\r
+# in the PI spec.)\r
+#\r
+# Copyright (C) 2018, Red Hat, Inc.\r
+#\r
+# This program and the accompanying materials are licensed and made available\r
+# under the terms and conditions of the BSD License which accompanies this\r
+# distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
+# WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+##\r
+\r
+[Defines]\r
+ INF_VERSION = 1.27\r
+ BASE_NAME = NvVarStoreFormattedLib\r
+ FILE_GUID = 78f76ae8-ae62-4455-8148-c3a7ebaaa3f3\r
+ MODULE_TYPE = BASE\r
+ VERSION_STRING = 1.0\r
+ LIBRARY_CLASS = NvVarStoreFormattedLib|PEIM DXE_RUNTIME_DRIVER DXE_SMM_DRIVER\r
+ CONSTRUCTOR = NvVarStoreFormattedInitialize\r
+\r
+[Sources]\r
+ NvVarStoreFormattedLib.c\r
+\r
+[Packages]\r
+ EmbeddedPkg/EmbeddedPkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
+ MdePkg/MdePkg.dec\r
+\r
+#\r
+# The matching DEPEX section below will generate the EFI_SECTION_PEI_DEPEX,\r
+# EFI_SECTION_DXE_DEPEX or EFI_SECTION_MM_DEPEX leaf section for the PEIM\r
+# (EFI_FV_FILETYPE_PEIM), DXE_RUNTIME_DRIVER (EFI_FV_FILETYPE_DRIVER), or\r
+# DXE_SMM_DRIVER (EFI_FV_FILETYPE_MM) module, respectively.\r
+#\r
+[Depex.common.PEIM, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SMM_DRIVER]\r
+ gEdkiiNvVarStoreFormattedGuid\r