[edk2] [edk2-FdfSpecification Patch] FILE RAW Multiple binaries and FmpPayload extensions

Michael Kinney posted 1 patch 7 years ago
Failed in applying to current master (apply log)
2_fdf_design_discussion/README.md                    |  8 ++++----
3_edk_ii_fdf_file_format/34_[defines]_section.md     | 17 +++++++++--------
3_edk_ii_fdf_file_format/36_[fv]_sections.md         | 16 ++++++++++++++--
3_edk_ii_fdf_file_format/37_[capsule]_sections.md    |  5 +++--
3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md | 10 ++++++++++
README.md                                            |  5 ++++-
6 files changed, 44 insertions(+), 17 deletions(-)
[edk2] [edk2-FdfSpecification Patch] FILE RAW Multiple binaries and FmpPayload extensions
Posted by Michael Kinney 7 years ago
* Changed the FDF_SPECIFICATION value from 0x0001001A to
  0x0001001B or 1.27
* Extended the FV and Capsule, FILE RAW statement formats to
  support multiple binary files.
* Changed section 3.8 [FmpPayload] to add definitions for
  MONOTONIC_COUNT and CERTIFICATE_GUID, plus some notes about
  how these are used.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Kevin W Shaw <kevin.w.shaw@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
---
 2_fdf_design_discussion/README.md                    |  8 ++++----
 3_edk_ii_fdf_file_format/34_[defines]_section.md     | 17 +++++++++--------
 3_edk_ii_fdf_file_format/36_[fv]_sections.md         | 16 ++++++++++++++--
 3_edk_ii_fdf_file_format/37_[capsule]_sections.md    |  5 +++--
 3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md | 10 ++++++++++
 README.md                                            |  5 ++++-
 6 files changed, 44 insertions(+), 17 deletions(-)

diff --git a/2_fdf_design_discussion/README.md b/2_fdf_design_discussion/README.md
index 37e37c7..3202f56 100644
--- a/2_fdf_design_discussion/README.md
+++ b/2_fdf_design_discussion/README.md
@@ -50,10 +50,10 @@ The EDK II Build generates UEFI and PI specification compliant binary images.
 The tools provided in the EDK and the EdkCompatibilityPkg module support
 earlier versions of the specifications.
 
-This revision of the specification adds support for multiple EDK II Packages
-directories outside of the WORKSPACE. FDF files that use this feature must
-use the new `FDF_SPECIFICATION = 0x00010019` in the `[Defines]` section. Older
-FDF files do not need to update the `FDF_SPECIFICATION` value.
+This revision of the specification adds support for multiple binary files in
+an FV FILE RAW statement. FDF files that use this feature must use the new
+`FDF_SPECIFICATION = 0x0001001B` in the `[Defines]` section. Older FDF files
+do not need to update the `FDF_SPECIFICATION` value.
 
 The EDK II build system has been updated to allow the setting of multiple paths
 that will be searched when attempting to resolve the location of EDK II
diff --git a/3_edk_ii_fdf_file_format/34_[defines]_section.md b/3_edk_ii_fdf_file_format/34_[defines]_section.md
index 789f114..eec7698 100644
--- a/3_edk_ii_fdf_file_format/34_[defines]_section.md
+++ b/3_edk_ii_fdf_file_format/34_[defines]_section.md
@@ -40,14 +40,15 @@ This section describes the defines section content in the FDF files. This file
 can be created by a developer and is an input to the EDK II build tool parsing
 utilities. Elements may appear in any order within this section.
 
-The code for this version of the FDF specification is "0x0001001A" and new
-versions of this specification must increment the minor (001A) portion of the
-specification code for backward compatible changes, and increment the major
-number for non-backward compatible specification changes.
-
-This revision of the specification adds FMP Capsule support. Any FDF file that
-uses this feature must use the 0x0001001A FDF_SPECIFICATION value. Older FDF
-files that do not use this feature do not need to update the value.
+The code for this version of the FDF specification is "0x0001001B". New
+versions of this specification must increment the minor (001B) portion of the
+specification code for backward-compatible changes, and increment the major
+specification number for non-backward-compatible changes.
+
+This revision of the specification adds support for multiple binaries in an
+FV or Capsule RAW FILE statement. Any FDF file that uses this feature must use
+the value `0x0001001B` in the `FDF_SPECIFICATION` statement. Older FDF files
+that do not use this feature do not need to update the value.
 
 Conditional statements may be used anywhere within this section.
 
diff --git a/3_edk_ii_fdf_file_format/36_[fv]_sections.md b/3_edk_ii_fdf_file_format/36_[fv]_sections.md
index b80f6be..f2d34cf 100644
--- a/3_edk_ii_fdf_file_format/36_[fv]_sections.md
+++ b/3_edk_ii_fdf_file_format/36_[fv]_sections.md
@@ -157,11 +157,13 @@ Conditional statements may be used anywhere within this section.
                         {<Filename>} {<SectionData>} <TS> <TS> "}" [<EOL>]
 <Options2>          ::= [<Use>] [<FileOpts>] <MTS>
                         "{" [<EOL>]
-                        {<Filename>} {<SectionData>} <TS> "}" [<EOL>]
+                        <TS> {<Filename>} {<FileList>+} {<SectionData> <EOL>}
+                        "}" <EOL>
+<FileList>          ::= <TS> [<FfsAlignment>] <NormalFile> <EOL>
 <FileOpts>          ::= ["FIXED" <MTS>] ["CHECKSUM" <MTS>]
                         [<FfsAlignment>]
 <FfsAlignment>      ::= "Align" <Eq> <FfsAlignmentValues> <MTS>
-<Filename>          ::= {<FvImage>} {<FdImage>} {<NormalFile>}
+<Filename>          ::= <TS> {<FvImage>} {<FdImage>} {<NormalFile>} <EOL>
 <FvImage>           ::= <TS> "FV" <Eq> <FvUiName> <EOL>
 <FdImage>           ::= <TS> "FD" <Eq> <FdUiName> <EOL>
 <FdUiName>          ::= {<Word>} {"common"}
@@ -415,4 +417,14 @@ INF $(SAMPLE)/Universal/Network/Tcp4/Dxe/Tcp4.inf
 INF $(SAMPLE)/Universal/Network/Dhcp4/Dxe/Dhcp4.inf
 INF $(SAMPLE)/Universal/Network/Mtftp4/Dxe/Mtftp4.inf
 INF $(SAMPLE)/Universal/Network/SnpNt32/Dxe/SnpNt32.inf
+
+FILE RAW = 197DB236-F856-4924-90F8-CDF12FB975F3 {
+  $(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/$PLATFORM_ARCH)/File.bin
+}
+
+FILE RAW = 197DB236-F856-4924-90F8-CDF12FB975F3 {
+  Align=16 $(PLATFORM_PACKAGE)/Binaries/File1.pdb
+  Align=16 $(PLATFORM_PACKAGE)/Binaries/File2.pdb
+  Align=16 $(PLATFORM_PACKAGE)/Binaries/File3.pdb
+}
 ```
diff --git a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
index c912b40..85f65c7 100644
--- a/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
+++ b/3_edk_ii_fdf_file_format/37_[capsule]_sections.md
@@ -121,15 +121,16 @@ Conditional statements may be used anywhere within this section.
                         <EOL>
 <Options2>          ::= [<Use>] [<FileOpts>]
                         "{" [<EOL>]
-                        <TS> {<Filename>} {<SectionData>} [<EOL>]
+                        {<Filename>} {<FileList>+} {<SectionData> <EOL>}
                         <TS> "}" <EOL>
+<FileList>          ::= <TS> [<FfsAlignment>] <NormalFile> <EOL>
 <FileOpts>          ::= ["FIXED" <MTS>] ["CHECKSUM" <MTS>]
                         [<FfsAlignment>]
 <FfsAlignment>      ::= "Align" <Eq> <FfsAlignmentValues>
 <FvAlignment>       ::= [<TS> "FvBaseAddress" <Eq> <UINT64> <EOL>]
                         [<TS> "FvForceRebase" <Eq> <TrueFalse> <EOL>]
                         "FvAlignment" <Eq> <FvAlignmentValues> <EOL>
-<Filename>          ::= {<FvImage>} {<FdImage>} {<NormalFile>}
+<Filename>          ::= <TS> {<FvImage>} {<FdImage>} {<NormalFile>} <EOL>
 <FvImage>           ::= "FV" <Eq> <FvUiName> <EOL>
 <FdImage>           ::= "FD" <Eq> <FdUiName> <EOL>
 <FdUiName>          ::= {<Word>} {"common"}
diff --git a/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md b/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md
index 8368ac3..c1356e8 100644
--- a/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md
+++ b/3_edk_ii_fdf_file_format/38_[fmppayload]_sections.md
@@ -44,9 +44,19 @@ Capsule files.
                   [<TS> "IMAGE_TYPE_ID" <Eq> <RegistryFormatGUID> <EOL>]
                   [<TS> "IMAGE_INDEX" <Eq> <Hex2> <EOL>]
                   [<TS> "HARDWARE_INSTANCE" <Eq> <Hex2> <EOL>]
+                  [<TS> “MONOTONIC_COUNT”<Eq> <NumValUint64> <EOL>]
+                  [<TS> “CERTIFICATE_GUID”<Eq> <RegistryFormatGUID><EOL>]
 <FmpFileData> ::= <TS> "FILE" <Space> "DATA" <Eq> <Filename> <EOL>
 ```
 
+**********
+**Note:** The `CERTIFICATE_GUID` and `MONOTONIC_COUNT` must work as a pair.
+If `CERTIFICATE_GUID` is provided, the FMP payload is processed as UEFI FMP
+Authentication format, and `MONOTONIC_COUNT` **MUST** be provided. If
+`CERTIFICATE_GUID` is not provided, the FMP payload is processed as UEFI FMP
+non-Authentication format, and `MONOTONIC_COUNT` **MUST NOT** be provided.
+**********
+
 #### Example
 
 ```ini
diff --git a/README.md b/README.md
index 23d5201..79643c4 100644
--- a/README.md
+++ b/README.md
@@ -194,4 +194,7 @@ Copyright (c) 2006-2017, Intel Corporation. All rights reserved.
 |            | PACKAGES_PATH and EDK_TOOLS_BIN, used by the build system.                                                                                                                 |               |
 |            | Allow INF statements in FD regions.                                                                                                                                        |               |
 |            | Clarified [UserExtensions] content in chapter 2 (to match implementation)                                                                                                  |               |
-| 1.28       | Convert to GitBooks                                                                                                                                                        | March 2017    |
+| 1.28       | Convert to GitBooks                                                                                                                                                        | April 2017    |
+|            | Changed the FDF_SPECIFICATION value from 0x0001001A to 0x0001001B or 1.27                                                                                                  |               |
+|            | Extended the FV and Capsule, FILE RAW statement formats to support multiple binary files.                                                                                  |               |
+|            | Changed section 3.8 [FmpPayload] to add definitions for MONOTONIC_COUNT and CERTIFICATE_GUID, plus some notes about how these are used.                                    |               |
-- 
2.6.3.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel