|
@@ -0,0 +1,61 @@
|
|
|
+/** @file
|
|
|
+ Define PPI to shadow Firmware Volume from flash to Permanent Memory.
|
|
|
+
|
|
|
+Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
|
|
|
+
|
|
|
+SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
+
|
|
|
+**/
|
|
|
+
|
|
|
+#ifndef PEI_FIRMWARE_VOLUME_SHADOW_PPI_H_
|
|
|
+#define PEI_FIRMWARE_VOLUME_SHADOW_PPI_H_
|
|
|
+
|
|
|
+//
|
|
|
+// Firmware Volume Shadow PPI GUID value
|
|
|
+//
|
|
|
+#define EDKII_FIRMWARE_VOLUME_SHADOW_PPI_GUID \
|
|
|
+ { \
|
|
|
+ 0x7dfe756c, 0xed8d, 0x4d77, { 0x9e, 0xc4, 0x39, 0x9a, 0x8a, 0x81, 0x51, 0x16 } \
|
|
|
+ }
|
|
|
+
|
|
|
+/**
|
|
|
+ Copy FV to Destination. Length of copy is FV length from FV Header.
|
|
|
+
|
|
|
+ @param[in] FirmwareVolumeBase Base address of FV to shadow. Length of FV
|
|
|
+ is in FV Header.
|
|
|
+ @param[in] Destination Pointer to the Buffer in system memory to
|
|
|
+ shadow FV.
|
|
|
+ @param[in] DestinationLength Size of Destination buffer in bytes.
|
|
|
+
|
|
|
+ @retval EFI_SUCCESS Shadow complete
|
|
|
+ @retval EFI_INVALID_PARAMETER Destination is NULL
|
|
|
+ @retval EFI_INVALID_PARAMETER DestinationLength = 0.
|
|
|
+ @retval EFI_INVALID_PARAMETER FV does not have valid FV Header.
|
|
|
+ @retval EFI_INVALID_PARAMETER FV overlaps Destination.
|
|
|
+ @retval EFI_INVALID_PARAMETER Destination + DestinationLength rolls over 4GB
|
|
|
+ for 32-bit or 64-bit rollover.
|
|
|
+ @retval EFI_BUFFER_TOO_SMALL DestinationLength less than FV length from FV
|
|
|
+ Header.
|
|
|
+ @retval EFI_UNSUPPORTED FirmwareVolumeBase to FVBase + FVLength does
|
|
|
+ not support shadow. Caller should fallback to
|
|
|
+ CopyMem().
|
|
|
+
|
|
|
+**/
|
|
|
+typedef
|
|
|
+EFI_STATUS
|
|
|
+(EFIAPI *EDKII_PEI_FIRMWARE_VOLUME_SHADOW)(
|
|
|
+ IN EFI_PHYSICAL_ADDRESS FirmwareVolumeBase,
|
|
|
+ IN VOID *Destination,
|
|
|
+ IN UINTN DestinationLength
|
|
|
+ );
|
|
|
+
|
|
|
+///
|
|
|
+/// This PPI provides a service to shadow a FV from one location to another
|
|
|
+///
|
|
|
+typedef struct {
|
|
|
+ EDKII_PEI_FIRMWARE_VOLUME_SHADOW FirmwareVolumeShadow;
|
|
|
+} EDKII_PEI_FIRMWARE_VOLUME_SHADOW_PPI;
|
|
|
+
|
|
|
+extern EFI_GUID gEdkiiPeiFirmwareVolumeShadowPpiGuid;
|
|
|
+
|
|
|
+#endif
|