> -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Xu, > Wei6 > Sent: Wednesday, June 05, 2019 11:42 PM > To: devel@edk2.groups.io > Cc: Wang, Jian J; Wu, Hao A; Zhang, Chao B; Xu, Wei6 > Subject: [edk2-devel][Patch v2 2/7] MdeModulePkg: Add Capsule On Disk > related definition. > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1852 > > This patch will add Capsule On Disk related definition, including > GUID, PPI and PCDs: > The Capsule On Disk Name GUID indicates the capsule is to store > Capsule On Disk file names. > The Pei Capsule On Disk PPI provides service to retrieve capsules > from Capsule On Disk temp relocation file on mass storage devices > and create capsule hob for these capsules. > PcdCapsuleOnDiskSupport is used to enable/disable Capsule On Disk. > PcdCapsuleInRamSupport is used to enabble/disable Capsule In Ram.
enabble -> enable May I know the reason that PcdCapsuleOnDiskSupport is listed under section '[PcdsFixedAtBuild, PcdsPatchableInModule]' while PcdCapsuleInRamSupport is listed under '[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]'? Best Regards, Hao Wu > PcdCoDRelocationFileName specifies the Capsule On Disk temp > relocation file name. > PcdCodRelocationDevPath specifies platform specific device to store > Capsule On Disk tem relocation file. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Chao B Zhang <chao.b.zh...@intel.com> > Signed-off-by: Wei6 Xu <wei6...@intel.com> > --- > MdeModulePkg/Include/Ppi/CapsuleOnDisk.h | 48 > ++++++++++++++++++++++++++++++++ > MdeModulePkg/MdeModulePkg.dec | 43 > ++++++++++++++++++++++++++++ > MdeModulePkg/MdeModulePkg.uni | 32 +++++++++++++++++++++ > 3 files changed, 123 insertions(+) > create mode 100644 MdeModulePkg/Include/Ppi/CapsuleOnDisk.h > > diff --git a/MdeModulePkg/Include/Ppi/CapsuleOnDisk.h > b/MdeModulePkg/Include/Ppi/CapsuleOnDisk.h > new file mode 100644 > index 0000000000..28be6e42be > --- /dev/null > +++ b/MdeModulePkg/Include/Ppi/CapsuleOnDisk.h > @@ -0,0 +1,48 @@ > +/** @file > + This file declares Capsule On Disk PPI. This PPI is used to find and load > the > + capsule on files that are relocated into a temp file under rootdir. > + > + Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#ifndef __PEI_CAPSULE_ON_DISK_PPI_H__ > +#define __PEI_CAPSULE_ON_DISK_PPI_H__ > + > +#define EFI_PEI_CAPSULE_ON_DISK_PPI_GUID \ > + { \ > + 0x71a9ea61, 0x5a35, 0x4a5d, {0xac, 0xef, 0x9c, 0xf8, 0x6d, 0x6d, 0x67, > 0xe0 } \ > + } > + > +typedef struct _EFI_PEI_CAPSULE_ON_DISK_PPI > EFI_PEI_CAPSULE_ON_DISK_PPI; > + > +/** > + Loads a DXE capsule from some media into memory and updates the HOB > table > + with the DXE firmware volume information. > + > + @param PeiServices General-purpose services that are available to every > PEIM. > + @param This Indicates the EFI_PEI_RECOVERY_MODULE_PPI instance. > + > + @retval EFI_SUCCESS The capsule was loaded correctly. > + @retval EFI_DEVICE_ERROR A device error occurred. > + @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found. > + > +**/ > +typedef > +EFI_STATUS > +(EFIAPI *EFI_PEI_LOAD_CAPSULE_ON_DISK)( > + IN EFI_PEI_SERVICES **PeiServices, > + IN EFI_PEI_CAPSULE_ON_DISK_PPI *This > + ); > + > +/// > +/// Finds and loads the recovery files. > +/// > +struct _EFI_PEI_CAPSULE_ON_DISK_PPI { > + EFI_PEI_LOAD_CAPSULE_ON_DISK LoadCapsuleOnDisk; ///< Loads a DXE > binary capsule into memory. > +}; > + > +extern EFI_GUID gEdkiiPeiCapsuleOnDiskPpiGuid; > + > +#endif > diff --git a/MdeModulePkg/MdeModulePkg.dec > b/MdeModulePkg/MdeModulePkg.dec > index 6cba729982..d80b728313 100644 > --- a/MdeModulePkg/MdeModulePkg.dec > +++ b/MdeModulePkg/MdeModulePkg.dec > @@ -394,10 +394,13 @@ > gEdkiiS3SmmInitDoneGuid = { 0x8f9d4825, 0x797d, 0x48fc, { 0x84, 0x71, > 0x84, 0x50, 0x25, 0x79, 0x2e, 0xf6 } } > > ## Include/Guid/S3StorageDeviceInitList.h > gS3StorageDeviceInitListGuid = { 0x310e9b8c, 0xcf90, 0x421e, { 0x8e, 0x9b, > 0x9e, 0xef, 0xb6, 0x17, 0xc8, 0xef } } > > + ## GUID indicates the capsule is to store Capsule On Disk file names. > + gEdkiiCapsuleOnDiskNameGuid = { 0x98c80a4f, 0xe16b, 0x4d11, { 0x93, > 0x9a, 0xab, 0xe5, 0x61, 0x26, 0x3, 0x30 } } > + > [Ppis] > ## Include/Ppi/AtaController.h > gPeiAtaControllerPpiGuid = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, > 0x7a, > 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }} > > ## Include/Ppi/UsbHostController.h > @@ -464,10 +467,13 @@ > gEdkiiPeiAtaPassThruPpiGuid = { 0xa16473fd, 0xd474, 0x4c89, > { 0xae, > 0xc7, 0x90, 0xb8, 0x3c, 0x73, 0x86, 0x9 } } > > ## Include/Ppi/Debug.h > gEdkiiDebugPpiGuid = { 0x999e699c, 0xb013, 0x475e, > { 0xb1, > 0x7b, 0xf3, 0xa8, 0xae, 0x5c, 0x48, 0x75 } } > > + ## Include/Ppi/CapsuleOnDisk.h > + gEdkiiPeiCapsuleOnDiskPpiGuid = {0x71a9ea61, 0x5a35, 0x4a5d, > {0xac, 0xef, 0x9c, 0xf8, 0x6d, 0x6d, 0x67, 0xe0}} > + > [Protocols] > ## Load File protocol provides capability to load and unload EFI image into > memory and execute it. > # Include/Protocol/LoadPe32Image.h > # This protocol is deprecated. Native EDKII module should NOT use this > protocol to load/unload image. > # If developer need implement such functionality, they should use > BasePeCoffLib. > @@ -1473,10 +1479,26 @@ > > ## Indicates the allowable maximum number of Reset Filters, Reset > Notifications or Reset Handlers in PEI phase. > # @Prompt Maximum Number of PEI Reset Filters, Reset Notifications or > Reset Handlers. > > gEfiMdeModulePkgTokenSpaceGuid.PcdMaximumPeiResetNotifies|0x10|UI > NT32|0x0000010A > > + ## Capsule On Disk is to deliver capsules via files on Mass Storage > device.<BR><BR> > + # This PCD indicates if the Capsule On Disk is supported.<BR> > + # TRUE - Capsule On Disk is supported.<BR> > + # FALSE - Capsule On Disk is not supported.<BR> > + # If platform does not use this feature, this PCD should be set to > FALSE.<BR><BR> > + # Two sulotions to deliver Capsule On Disk:<BR> > + # a) If PcdCapsuleInRamSupport = TRUE, Load Capsule On Disk image out > of TCB, and reuse > + # Capsule In Ram to deliver capsule.<BR> > + # b) If PcdCapsuleInRamSupport = FALSE, Relocate Capsule On Disk image > to RootDir out > + # of TCB, and reuse FatPei to load capsules from external > storage.<BR> > + # Note:<BR> > + # If Both Capsule In Ram and Capsule On Disk are provisioned at the same > time, the Capsule > + # On Disk will be bypassed. > + # @Prompt Enable Capsule On Disk support. > + > gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleOnDiskSupport|FALSE|BOO > LEAN|0x0000002d > + > [PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx] > ## This PCD defines the Console output row. The default value is 25 > according to UEFI spec. > # This PCD could be set to 0 then console output would be at max column > and max row. > # @Prompt Console output row. > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow|25|UINT32|0x4000000 > 6 > @@ -1932,10 +1954,17 @@ > # The file name must be the 8.3 format. > # The PCD data must be in UNICODE format. > # @Prompt Recover file name in PEI phase > > gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"FVMAIN.FV"| > VOID*|0x30001045 > > + ## This is Capsule Temp Relocation file name in PEI phase. > + # The file must be in the root directory. > + # The file name must be the 8.3 format. > + # The PCD data must be in UNICODE format. > + # @Prompt Capsule On Disk Temp Relocation file name in PEI phase > + > gEfiMdeModulePkgTokenSpaceGuid.PcdCoDRelocationFileName|L"TempCo > d.tmp"|VOID*|0x30001048 > + > ## This PCD hold a list GUIDs for the ImageTypeId to indicate the > # FMP capsule is a system FMP. > # @Prompt A list of system FMP ImageTypeId GUIDs > > gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGu > id|{0x0}|VOID*|0x30001046 > > @@ -1943,10 +1972,24 @@ > # enabled on AMD processors supporting the Secure Encrypted > Virtualization (SEV) feature. > # This mask should be applied when creating 1:1 virtual to physical > mapping > tables. > # @Prompt The address mask when memory encryption is enabled. > > gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrM > ask|0x0|UINT64|0x30001047 > > + ## Capsule In Ram is to use memory to deliver the capsules that will be > processed after system > + # reset.<BR><BR> > + # This PCD indicates if the Capsule In Ram is supported.<BR> > + # TRUE - Capsule In Ram is supported.<BR> > + # FALSE - Capsule In Ram is not supported. > + # @Prompt Enable Capsule In Ram support. > + > gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleInRamSupport|TRUE|BOOL > EAN|0x0000002e > + > + ## Full device path of plaform specific device to store Capsule On Disk > temp relocation file.<BR> > + # If this PCD is set, Capsule On Disk temp relocation file will be stored > in > the device specified > + # by this PCD, instead of the EFI System Partition that stores capsule > image > file. > + # @Prompt Capsule On Disk relocation device path. > + > gEfiMdeModulePkgTokenSpaceGuid.PcdCodRelocationDevPath|{0xFF}|VOI > D*|0x0000002f > + > [PcdsPatchableInModule] > ## Specify memory size with page number for PEI code when > # Loading Module at Fixed Address feature is enabled. > # The value will be set by the build tool. > # @Prompt LMFA PEI code page number. > diff --git a/MdeModulePkg/MdeModulePkg.uni > b/MdeModulePkg/MdeModulePkg.uni > index ed8ac9eadc..85c6beae0d 100644 > --- a/MdeModulePkg/MdeModulePkg.uni > +++ b/MdeModulePkg/MdeModulePkg.uni > @@ -1064,10 +1064,17 @@ > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryFileName_HELP > #language en-US "This is recover file name in PEI phase.\n" > > "The file must be in the root > directory.\n" > > "The file name must be the 8.3 > format.\n" > > "The PCD data must be in > UNICODE format." > > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCoDRelocationFileName_PRO > MPT #language en-US "Capsule On Disk Temp Relocation file name in PEI > phase" > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCoDRelocationFileName_HELP > #language en-US "This is Capsule Temp Relocation file name in PEI phase.\n" > + > "The file must be in the root > directory.\n" > + > "The file name must be the 8.3 > format.\n" > + > "The PCD data must be in > UNICODE format." > + > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemFmpCapsuleImageTyp > eIdGuid_PROMPT #language en-US "A list of system FMP ImageTypeId > GUIDs" > > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemFmpCapsuleImageTyp > eIdGuid_HELP #language en-US "This PCD hold a list GUIDs for the > ImageTypeId to indicate the\n" > > "FMP capsule is a system > FMP." > > @@ -1129,10 +1136,35 @@ > > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPteMemoryEncryptionAddres > sOrMask_HELP #language en-US "This PCD holds the address mask for page > table entries when memory encryption is\n" > > "enabled on AMD > processors supporting the Secure Encrypted Virtualization (SEV) feature.\n" > > "This mask should be > applied when creating 1:1 virtual to physical mapping tables." > > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleOnDiskSupport_PRO > MPT #language en-US "Enable Capsule On Disk support" > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleOnDiskSupport_HELP > #language en-US "Capsule On Disk is to deliver capsules via files on Mass > Storage device.<BR><BR>" > + > "This PCD indicates if the > Capsule On Disk is supported.<BR>" > + > " TRUE - Capsule On Disk is > supported.<BR>" > + > " FALSE - Capsule On Disk is not > supported.<BR>" > + > "If platform does not use this > feature, this PCD should be set to FALSE.<BR><BR>" > + > "Two sulotions to deliver > Capsule On Disk:<BR>" > + > " a) If > PcdCapsuleInRamSupport = TRUE, Load Capsule On Disk image out of TCB, > and reuse Capsule In Ram to deliver capsule.<BR>" > + > " b) If > PcdCapsuleInRamSupport = FALSE, Relocate Capsule On Disk image to > RootDir out of TCB, and reuse FatPei to load capsules from external > storage.<BR>" > + > "Note:<BR>" > + > "If Both Capsule In Ram and > Capsule On Disk are provisioned at the same time, the Capsule On Disk will > be bypassed." > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleInRamSupport_PROM > PT #language en-US "Enable Capsule In Ram support" > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleInRamSupport_HELP > #language en-US "Capsule In Ram is to use memory to deliver the capsules > that will be processed after system reset.<BR><BR>" > + > "This PCD indicates if the > Capsule In Ram is supported.<BR>" > + > " TRUE - Capsule In Ram is > supported.<BR>" > + > " FALSE - Capsule In Ram is not > supported." > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCodRelocationDevPath_PRO > MPT #language en-US "Capsule On Disk relacation device path." > + > +#string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCodRelocationDevPath_HELP > #language en-US "Full device path of plaform specific device to store > Capsule On Disk temp relocation file.<BR>" > + > "If this PCD is set, Capsule On > Disk temp relocation file will be stored in the device specified by this PCD, > instead of the EFI System Partition that stores capsule image file." > + > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNullPointerDetectionProperty > Mask_PROMPT #language en-US "Enable NULL pointer detection" > > #string > STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNullPointerDetectionProperty > Mask_HELP #language en-US "Mask to control the NULL address detection > in code for different phases.\n" > > " If enabled, accessing > NULL address in UEFI or SMM code can be caught.\n\n" > > " BIT0 - Enable NULL > pointer detection for UEFI.\n" > -- > 2.16.2.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#42263): https://edk2.groups.io/g/devel/message/42263 Mute This Topic: https://groups.io/mt/31938576/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-