diff --git a/MdeModulePkg/Include/Guid/VariableRuntimeCacheInfo.h b/MdeModulePkg/Include/Guid/VariableRuntimeCacheInfo.h new file mode 100644 index 0000000000..2f807b8371 --- /dev/null +++ b/MdeModulePkg/Include/Guid/VariableRuntimeCacheInfo.h @@ -0,0 +1,61 @@ +/** @file + This Variable Runtime Cache Info HOB is used to store the address + and the size of the buffer that will be used for variable runtime + service when the PcdEnableVariableRuntimeCache is TRUE. + + Copyright (c) 2024, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef VARIABLE_RUNTIME_CACHE_INFO_H_ +#define VARIABLE_RUNTIME_CACHE_INFO_H_ + +#define VARIABLE_RUNTIME_CACHE_INFO_HOB_REVISION 1 + +#define VARIABLE_RUNTIME_CACHE_INFO_GUID \ + { \ + 0x0f472f7d, 0x6713, 0x4915, {0x96, 0x14, 0x5d, 0xda, 0x28, 0x40, 0x10, 0x56} \ + } + +typedef struct { + /// + /// TRUE indicates GetVariable () or GetNextVariable () is being called. + /// When the value is FALSE, the given update (and any other pending updates) + /// can be flushed to the runtime cache. + /// + BOOLEAN ReadLock; + /// + /// TRUE indicates there is pending update for the given variable store needed + /// to be flushed to the runtime cache. + /// + BOOLEAN PendingUpdate; + /// + /// TRUE indicates all HOB variables have been flushed in flash. + /// + BOOLEAN HobFlushComplete; +} CACHE_INFO_FLAG; + +typedef struct { + EFI_PHYSICAL_ADDRESS CacheInfoFlagBuffer; + /// + /// Base address of the runtime Hob variable cache Buffer. + /// + EFI_PHYSICAL_ADDRESS RuntimeHobCacheBuffer; + UINT64 RuntimeHobCachePages; + /// + /// Base address of the non-volatile variable runtime cache Buffer. + /// + EFI_PHYSICAL_ADDRESS RuntimeNvCacheBuffer; + UINT64 RuntimeNvCachePages; + /// + /// Base address of the volatile variable runtime cache Buffer. + /// + EFI_PHYSICAL_ADDRESS RuntimeVolatileCacheBuffer; + UINT64 RuntimeVolatileCachePages; +} VARIABLE_RUNTIME_CACHE_INFO; + +extern EFI_GUID gEdkiiVariableRuntimeCacheInfoHobGuid; + +#endif diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 02f330a453..fdd1d48c47 100644 --- a/MdeModulePkg/MdeModulePkg.dec +++ b/MdeModulePkg/MdeModulePkg.dec @@ -468,6 +468,9 @@ ## This GUID will be used to save MTRR_SETTINGS at EndOfDxe by LockBox and restore at S3 boot PEI phase for s3 usage. gEdkiiS3MtrrSettingGuid = { 0xd77baa84, 0xb332, 0x4463, { 0x9f, 0x1d, 0xce, 0x81, 0x00, 0xfe, 0x7f, 0x35 }} + ## Include/Guid/VariableRuntimeCacheInfo.h + gEdkiiVariableRuntimeCacheInfoHobGuid = { 0x0f472f7d, 0x6713, 0x4915, { 0x96, 0x14, 0x5d, 0xda, 0x28, 0x40, 0x10, 0x56 }} + [Ppis] ## Include/Ppi/FirmwareVolumeShadowPpi.h gEdkiiPeiFirmwareVolumeShadowPpiGuid = { 0x7dfe756c, 0xed8d, 0x4d77, {0x9e, 0xc4, 0x39, 0x9a, 0x8a, 0x81, 0x51, 0x16 } }