From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: hao.a.wu@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Wed, 12 Jun 2019 00:49:45 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jun 2019 00:49:45 -0700 X-ExtLoop1: 1 Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga007.jf.intel.com with ESMTP; 12 Jun 2019 00:49:44 -0700 Received: from fmsmsx163.amr.corp.intel.com (10.18.125.72) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 12 Jun 2019 00:48:25 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx163.amr.corp.intel.com (10.18.125.72) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 12 Jun 2019 00:48:25 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.185]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.104]) with mapi id 14.03.0439.000; Wed, 12 Jun 2019 15:48:23 +0800 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "Xu, Wei6" CC: "Wang, Jian J" , "Zhang, Chao B" Subject: Re: [edk2-devel][Patch v2 2/7] MdeModulePkg: Add Capsule On Disk related definition. Thread-Topic: [edk2-devel][Patch v2 2/7] MdeModulePkg: Add Capsule On Disk related definition. Thread-Index: AQHVG7VQjLMfp6IKbEKHkJcKZmSS/KaV76qw Date: Wed, 12 Jun 2019 07:48:22 +0000 Message-ID: References: <20190605154203.11012-1-wei6.xu@intel.com> <20190605154203.11012-3-wei6.xu@intel.com> In-Reply-To: <20190605154203.11012-3-wei6.xu@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: hao.a.wu@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----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. >=20 > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1852 >=20 > 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. >=20 > Cc: Jian J Wang > Cc: Hao A Wu > Cc: Chao B Zhang > Signed-off-by: Wei6 Xu > --- > 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 >=20 > 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.
> + 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, 0x= 67, > 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 insta= nce. > + > + @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 =3D { 0x8f9d4825, 0x797d, 0x48fc, { 0x84, 0x7= 1, > 0x84, 0x50, 0x25, 0x79, 0x2e, 0xf6 } } >=20 > ## Include/Guid/S3StorageDeviceInitList.h > gS3StorageDeviceInitListGuid =3D { 0x310e9b8c, 0xcf90, 0x421e, { 0x8e= , 0x9b, > 0x9e, 0xef, 0xb6, 0x17, 0xc8, 0xef } } >=20 > + ## GUID indicates the capsule is to store Capsule On Disk file names. > + gEdkiiCapsuleOnDiskNameGuid =3D { 0x98c80a4f, 0xe16b, 0x4d11, { 0x93, > 0x9a, 0xab, 0xe5, 0x61, 0x26, 0x3, 0x30 } } > + > [Ppis] > ## Include/Ppi/AtaController.h > gPeiAtaControllerPpiGuid =3D { 0xa45e60d1, 0xc719, 0x44aa, { 0x= b0, 0x7a, > 0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }} >=20 > ## Include/Ppi/UsbHostController.h > @@ -464,10 +467,13 @@ > gEdkiiPeiAtaPassThruPpiGuid =3D { 0xa16473fd, 0xd474, 0= x4c89, { 0xae, > 0xc7, 0x90, 0xb8, 0x3c, 0x73, 0x86, 0x9 } } >=20 > ## Include/Ppi/Debug.h > gEdkiiDebugPpiGuid =3D { 0x999e699c, 0xb013, 0= x475e, { 0xb1, > 0x7b, 0xf3, 0xa8, 0xae, 0x5c, 0x48, 0x75 } } >=20 > + ## Include/Ppi/CapsuleOnDisk.h > + gEdkiiPeiCapsuleOnDiskPpiGuid =3D {0x71a9ea61, 0x5a35, 0= x4a5d, > {0xac, 0xef, 0x9c, 0xf8, 0x6d, 0x6d, 0x67, 0xe0}} > + > [Protocols] > ## Load File protocol provides capability to load and unload EFI imag= e into > memory and execute it. > # Include/Protocol/LoadPe32Image.h > # This protocol is deprecated. Native EDKII module should NOT use th= is > protocol to load/unload image. > # If developer need implement such functionality, they should use > BasePeCoffLib. > @@ -1473,10 +1479,26 @@ >=20 > ## 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. >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdMaximumPeiResetNotifies|0x10|UI > NT32|0x0000010A >=20 > + ## Capsule On Disk is to deliver capsules via files on Mass Storage > device.

> + # This PCD indicates if the Capsule On Disk is supported.
> + # TRUE - Capsule On Disk is supported.
> + # FALSE - Capsule On Disk is not supported.
> + # If platform does not use this feature, this PCD should be set to > FALSE.

> + # Two sulotions to deliver Capsule On Disk:
> + # a) If PcdCapsuleInRamSupport =3D TRUE, Load Capsule On Disk imag= e out > of TCB, and reuse > + # Capsule In Ram to deliver capsule.
> + # b) If PcdCapsuleInRamSupport =3D FALSE, Relocate Capsule On Disk= image > to RootDir out > + # of TCB, and reuse FatPei to load capsules from external stora= ge.
> + # Note:
> + # If Both Capsule In Ram and Capsule On Disk are provisioned at th= e 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 col= umn > and max row. > # @Prompt Console output row. >=20 > 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 >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName|L"FVMAIN.FV"| > VOID*|0x30001045 >=20 > + ## 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 >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGu > id|{0x0}|VOID*|0x30001046 >=20 > @@ -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. >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrM > ask|0x0|UINT64|0x30001047 >=20 > + ## Capsule In Ram is to use memory to deliver the capsules that will = be > processed after system > + # reset.

> + # This PCD indicates if the Capsule In Ram is supported.
> + # TRUE - Capsule In Ram is supported.
> + # 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 Di= sk > temp relocation file.
> + # If this PCD is set, Capsule On Disk temp relocation file will be s= tored in > the device specified > + # by this PCD, instead of the EFI System Partition that stores capsu= le 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." >=20 > +#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" >=20 > #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." >=20 > @@ -1129,10 +1136,35 @@ >=20 > #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." >=20 > +#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 M= ass > Storage device.

" > + = "This PCD indicates if the > Capsule On Disk is supported.
" > + = " TRUE - Capsule On Disk is > supported.
" > + = " FALSE - Capsule On Disk is not > supported.
" > + = "If platform does not use this > feature, this PCD should be set to FALSE.

" > + = "Two sulotions to deliver > Capsule On Disk:
" > + = " a) If > PcdCapsuleInRamSupport =3D TRUE, Load Capsule On Disk image out of TCB, > and reuse Capsule In Ram to deliver capsule.
" > + = " b) If > PcdCapsuleInRamSupport =3D FALSE, Relocate Capsule On Disk image to > RootDir out of TCB, and reuse FatPei to load capsules from external > storage.
" > + = "Note:
" > + = "If Both Capsule In Ram and > Capsule On Disk are provisioned at the same time, the Capsule On Disk wi= ll > 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 capsul= es > that will be processed after system reset.

" > + = "This PCD indicates if the > Capsule In Ram is supported.
" > + = " TRUE - Capsule In Ram is > supported.
" > + = " 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.
" > + = "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" >=20 > #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 >=20 >=20 >=20