Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
---
.../213_[defaultstores]_section_processing.md | 49 ++++++++++++
3_edk_ii_dsc_file_format/310_pcd_sections.md | 86 ++++++++++++++++++++--
.../313_[defaultstores]_section.md | 60 +++++++++++++++
3 files changed, 190 insertions(+), 5 deletions(-)
create mode 100644 2_dsc_overview/213_[defaultstores]_section_processing.md
create mode 100644 3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
diff --git a/2_dsc_overview/213_[defaultstores]_section_processing.md b/2_dsc_overview/213_[defaultstores]_section_processing.md
new file mode 100644
index 0000000..88a7ad2
--- /dev/null
+++ b/2_dsc_overview/213_[defaultstores]_section_processing.md
@@ -0,0 +1,49 @@
+<!--- @file
+ 2.13 [DefaultStores] Section Processing
+
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
+
+ Redistribution and use in source (original document form) and 'compiled'
+ forms (converted to PDF, epub, HTML and other formats) with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1) Redistributions of source code (original document form) must retain the
+ above copyright notice, this list of conditions and the following
+ disclaimer as the first lines of this file unmodified.
+
+ 2) Redistributions in compiled form (transformed to other DTDs, converted to
+ PDF, epub, HTML and other formats) must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL TIANOCORE PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+## 2.13 [DefaultStores] Section Processing
+
+The contents of this section are used to define DefaultStores names. Default
+store is UEFI HII concept. It is used to define HII default setting for the
+different store, such as standard default, manufacturing default. Platform
+can define the supported default store for DynamicHii/DynamicExHii PCD in this
+section, tag name to be used. This section is optional. By default, standard
+default will be used. Each entry below the section header is of the form:
+
+`Number | word`
+
+The following is an example of a `[DefaultStores]` section:
+
+```
+[DefaultStores]
+ 0 | Standard # UEFI Standard default
+ 1 | Manufacturing # UEFI Manufacturing default
+```
diff --git a/3_edk_ii_dsc_file_format/310_pcd_sections.md b/3_edk_ii_dsc_file_format/310_pcd_sections.md
index 18a243d..f79a0fd 100644
--- a/3_edk_ii_dsc_file_format/310_pcd_sections.md
+++ b/3_edk_ii_dsc_file_format/310_pcd_sections.md
@@ -1,7 +1,7 @@
<!--- @file
3.10 PCD Sections
- Copyright (c) 2006-2017, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source (original document form) and 'compiled'
forms (converted to PDF, epub, HTML and other formats) with or without
@@ -457,10 +457,12 @@ sections of the DSC file.
<PdvEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <VpdEntry>}
<PcdsHii> ::= "[PcdsDynamicHii" [<PdhAttribs>] "]" <EOL>
<PcdHiiEntries>*
-<PdhAttribs> ::= <attrs> ["," <TS> "PcdsDynamicHii <attrs>]* <PdvEntries>*
+<PdhAttribs> ::= <phattrs> ["," <TS> "PcdsDynamicHii <phattrs>]* <PdvEntries>*
<PcdHiiEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <HiiEntry>}
<attrs> ::= "." <arch> ["." <SkuIds>]
+<phattrs> ::= "." <arch> ["." <SkuIds>]["." <DefaultStore>]
<SkuIdS> ::= <Keyword> [<FS> <Keyword>]*
+<DefaultStore> ::= <Keyword>
<Keyword> ::= <UiName>
<UiName> ::= <Word>
<MinEntry> ::= <PcdName> [<FS> <PcdValue>] <EOL>
@@ -555,6 +557,42 @@ the `[Defines]` section. Use of the `SkuId` modifier for the `[PcdsDynamic*]`
section tag can be used as a conditional modifier or to groups sets of PCDs
according to the `SkuId` identifier.
+**_DefaultStore_**
+
+`DefaultStore` in the DSC file is used to specify DynamicHii/DynamicExHii PCD
+value as the default EFI variable for which default store. It is only valid in
+DynamicHii/DynamicExHii section. If it is not specified, DynamicHii/DynamicExHii
+PCD value will be used as the standard default EFI variable. For the different
+combination of SKU and DefaultStore, their inheritance is described as the below.
+
+SKU will inherit its parent SKU setting. DEFAULT SKU is the default parent SKU.
+DefaultStore is the subsection of SKU. It will first inherit from the same
+DefaultStore in its parent SKU, then inherit other DefaultStore in the same SKU.
+DefaultStore with the big default store ID will inherit the setting from one with
+the small default store ID. If there are more than one small default store ID,
+it will use the biggest one to be inherit. Here is the example. Four PcdsDynamicHii
+sections are defined.
+
+# Four PcdsDynamicHii section
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+[PcdsDynamicHii.common.Sku1.Standard]
+[PcdsDynamicHii.common.Sku1.Manufacturing]
+
+# DEFAULT Manufacturing setting based on two sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+
+# SKU1 Standard setting based on two sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Sku1.Standard]
+
+# SKU1 Manufacturing setting based on four sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+[PcdsDynamicHii.common.Sku1.Standard]
+[PcdsDynamicHii.common.Sku1.Manufacturing]
+
**_PcdValues_**
PCD values are optional for `[PcdsDynamicDefault]` sections. The PCD values for
@@ -584,7 +622,7 @@ the _UEFI Specification_ for a description of these attributes.
gNoSuchTokenSpaceGuid.PcdOemBootOptionPath|0x2338|100|" " # VOID*
gNoSuchTokenSpaceGuid.PcdEnableFastBoot |0x239C|1 |FALSE # BOOLEAN
-[PcdsDynamicHii.IA32, PcdsDynamicHii.X64.Sku1]
+[PcdsDynamicHii.IA32, PcdsDynamicHii.X64.Sku1.Standard]
gEfiMyModulePkgTokenSpaceGuid.PcdChassisIntrution|0x0053 0x0065 0x0074 0x0075 0x0070|gSysConfigGuid|0x83|0x0
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10 # Variable: L"Timeout"
```
@@ -633,11 +671,13 @@ sections of the DSC file.
{<TS> <VpdEntry>}
<PcdsExHii> ::= "[PcdsDynamicExHii" [<PdhAttribs>] "]" <EOL>
<PcdHiiEntries>*
-<PdhAttribs> ::= <attrs> ["," <TS> "PcdsDynamicExHii <attrs>]*
+<PdhAttribs> ::= <phattrs> ["," <TS> "PcdsDynamicExHii <phattrs>]*
<PdvEntries>*
<PcdHiiEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <HiiEntry>}
<attrs> ::= "." <arch> ["." <SkuIds>]
+<phattrs> ::= "." <arch> ["." <SkuIds>]["." <DefaultStore>]
<SkuIdS> ::= <Keyword> [<FS> <Keyword>]*
+<DefaultStore> ::= <Keyword>
<Keyword> ::= <UiName>
<UiName> ::= <Word>
<MinEntry> ::= <PcdName> [<FS> <PcdValue>] <EOL>
@@ -732,6 +772,42 @@ the `[Defines]` section. Use of the `SkuId` modifier for the `[PcdsDynamic*]`
section tag can be used as a conditional modifier or to groups sets of PCDs
according to the `SkuId` identifier.
+**_DefaultStore_**
+
+`DefaultStore` in the DSC file is used to specify DynamicHii/DynamicExHii PCD
+value as the default EFI variable for which default store. It is only valid in
+DynamicHii/DynamicExHii section. If it is not specified, DynamicHii/DynamicExHii
+PCD value will be used as the standard default EFI variable. For the different
+combination of SKU and DefaultStore, their inheritance is described as the below.
+
+SKU will inherit its parent SKU setting. DEFAULT SKU is the default parent SKU.
+DefaultStore is the subsection of SKU. It will first inherit from the same
+DefaultStore in its parent SKU, then inherit other DefaultStore in the same SKU.
+DefaultStore with the big default store ID will inherit the setting from one with
+the small default store ID. If there are more than one small default store ID,
+it will use the biggest one to be inherit. Here is the example. Four PcdsDynamicExHii
+sections are defined.
+
+# Four PcdsDynamicExHii section
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+[PcdsDynamicExHii.common.Sku1.Standard]
+[PcdsDynamicExHii.common.Sku1.Manufacturing]
+
+# DEFAULT Manufacturing setting based on two sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+
+# SKU1 Standard setting based on two sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Sku1.Standard]
+
+# SKU1 Manufacturing setting based on four sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+[PcdsDynamicExHii.common.Sku1.Standard]
+[PcdsDynamicExHii.common.Sku1.Manufacturing]
+
**_PcdValues_**
PCD values are optional for `[PcdsDynamicExDefault]` sections. The PCD values
@@ -761,7 +837,7 @@ the _UEFI Specification_ for a description of these attributes.
gNoSuchTokenSpaceGuid.PcdOemBootOptionPath|0x2338|100|" " # VOID*
gNoSuchTokenSpaceGuid.PcdEnableFastBoot |0x239C|FALSE # BOOLEAN
-[PcdsDynamicExHii.IA32, PcdsDynamicExHii.X64.Sku1]
+[PcdsDynamicExHii.IA32, PcdsDynamicExHii.X64.Sku1.Standard]
gEfiMyModulePkgTokenSpaceGuid.PcdChassisIntrution|0x0053 0x0065 0x0074 0x0075 0x0070|gSysConfigGuid|0x83|0x0
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0 # Variable: L"Timeout"
```
diff --git a/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md b/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
new file mode 100644
index 0000000..614ed01
--- /dev/null
+++ b/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
@@ -0,0 +1,60 @@
+<!--- @file
+ 3.13 [DefaultStores] Section
+
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
+
+ Redistribution and use in source (original document form) and 'compiled'
+ forms (converted to PDF, epub, HTML and other formats) with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1) Redistributions of source code (original document form) must retain the
+ above copyright notice, this list of conditions and the following
+ disclaimer as the first lines of this file unmodified.
+
+ 2) Redistributions in compiled form (transformed to other DTDs, converted to
+ PDF, epub, HTML and other formats) must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ EVENT SHALL TIANOCORE PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+## 3.13 [DefaultStores] Section
+
+The `[DefaultStores]` section is optional in all EDK II DSC files.
+
+#### Summary
+
+Entries may appear in any order. This section lists numeric mappings to the
+Default Store User Interface Name, only valid values from this list can be
+specified in the PcdsDynamicHii/PcdsDynamicExHii section.
+
+If this section is not specified, the parsing tools will assume standard default
+be applied in PcdsDynamicHii/PcdsDynamicExHii section.
+
+#### Prototype
+
+```c
+<DefaultStore> ::= "[DefaultStores]" <EOL>
+ {<Statement>*}
+<Statement> ::= <TS> <Number> <FS> <UiName> <EOL>
+<UiName> ::= <Word>
+```
+
+#### Example
+
+```ini
+[DefaultStores]
+ 0 | Standard # UEFI Standard default
+ 1 | Manufacturing # UEFI Manufacturing default
+```
--
2.8.0.windows.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
Best Regards,
Zhu Yonghong
-----Original Message-----
From: Gao, Liming
Sent: Friday, March 16, 2018 12:42 PM
To: edk2-devel@lists.01.org
Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Zhu, Yonghong <yonghong.zhu@intel.com>
Subject: [Patch 2/3] DscSpecification: Add DefaultStores section to describe the default setting
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Liming Gao <liming.gao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
---
.../213_[defaultstores]_section_processing.md | 49 ++++++++++++
3_edk_ii_dsc_file_format/310_pcd_sections.md | 86 ++++++++++++++++++++--
.../313_[defaultstores]_section.md | 60 +++++++++++++++
3 files changed, 190 insertions(+), 5 deletions(-) create mode 100644 2_dsc_overview/213_[defaultstores]_section_processing.md
create mode 100644 3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
diff --git a/2_dsc_overview/213_[defaultstores]_section_processing.md b/2_dsc_overview/213_[defaultstores]_section_processing.md
new file mode 100644
index 0000000..88a7ad2
--- /dev/null
+++ b/2_dsc_overview/213_[defaultstores]_section_processing.md
@@ -0,0 +1,49 @@
+<!--- @file
+ 2.13 [DefaultStores] Section Processing
+
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
+
+ Redistribution and use in source (original document form) and 'compiled'
+ forms (converted to PDF, epub, HTML and other formats) with or
+ without modification, are permitted provided that the following conditions are met:
+
+ 1) Redistributions of source code (original document form) must retain the
+ above copyright notice, this list of conditions and the following
+ disclaimer as the first lines of this file unmodified.
+
+ 2) Redistributions in compiled form (transformed to other DTDs, converted to
+ PDF, epub, HTML and other formats) must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TIANOCORE PROJECT BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+## 2.13 [DefaultStores] Section Processing
+
+The contents of this section are used to define DefaultStores names.
+Default store is UEFI HII concept. It is used to define HII default
+setting for the different store, such as standard default,
+manufacturing default. Platform can define the supported default store
+for DynamicHii/DynamicExHii PCD in this section, tag name to be used.
+This section is optional. By default, standard default will be used. Each entry below the section header is of the form:
+
+`Number | word`
+
+The following is an example of a `[DefaultStores]` section:
+
+```
+[DefaultStores]
+ 0 | Standard # UEFI Standard default
+ 1 | Manufacturing # UEFI Manufacturing default
+```
diff --git a/3_edk_ii_dsc_file_format/310_pcd_sections.md b/3_edk_ii_dsc_file_format/310_pcd_sections.md
index 18a243d..f79a0fd 100644
--- a/3_edk_ii_dsc_file_format/310_pcd_sections.md
+++ b/3_edk_ii_dsc_file_format/310_pcd_sections.md
@@ -1,7 +1,7 @@
<!--- @file
3.10 PCD Sections
- Copyright (c) 2006-2017, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source (original document form) and 'compiled'
forms (converted to PDF, epub, HTML and other formats) with or without @@ -457,10 +457,12 @@ sections of the DSC file.
<PdvEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <VpdEntry>}
<PcdsHii> ::= "[PcdsDynamicHii" [<PdhAttribs>] "]" <EOL>
<PcdHiiEntries>*
-<PdhAttribs> ::= <attrs> ["," <TS> "PcdsDynamicHii <attrs>]* <PdvEntries>*
+<PdhAttribs> ::= <phattrs> ["," <TS> "PcdsDynamicHii <phattrs>]* <PdvEntries>*
<PcdHiiEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <HiiEntry>}
<attrs> ::= "." <arch> ["." <SkuIds>]
+<phattrs> ::= "." <arch> ["." <SkuIds>]["." <DefaultStore>]
<SkuIdS> ::= <Keyword> [<FS> <Keyword>]*
+<DefaultStore> ::= <Keyword>
<Keyword> ::= <UiName>
<UiName> ::= <Word>
<MinEntry> ::= <PcdName> [<FS> <PcdValue>] <EOL>
@@ -555,6 +557,42 @@ the `[Defines]` section. Use of the `SkuId` modifier for the `[PcdsDynamic*]` section tag can be used as a conditional modifier or to groups sets of PCDs according to the `SkuId` identifier.
+**_DefaultStore_**
+
+`DefaultStore` in the DSC file is used to specify
+DynamicHii/DynamicExHii PCD value as the default EFI variable for which
+default store. It is only valid in DynamicHii/DynamicExHii section. If
+it is not specified, DynamicHii/DynamicExHii PCD value will be used as
+the standard default EFI variable. For the different combination of SKU and DefaultStore, their inheritance is described as the below.
+
+SKU will inherit its parent SKU setting. DEFAULT SKU is the default parent SKU.
+DefaultStore is the subsection of SKU. It will first inherit from the
+same DefaultStore in its parent SKU, then inherit other DefaultStore in the same SKU.
+DefaultStore with the big default store ID will inherit the setting
+from one with the small default store ID. If there are more than one
+small default store ID, it will use the biggest one to be inherit. Here
+is the example. Four PcdsDynamicHii sections are defined.
+
+# Four PcdsDynamicHii section
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+[PcdsDynamicHii.common.Sku1.Standard]
+[PcdsDynamicHii.common.Sku1.Manufacturing]
+
+# DEFAULT Manufacturing setting based on two sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+
+# SKU1 Standard setting based on two sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Sku1.Standard]
+
+# SKU1 Manufacturing setting based on four sections
+[PcdsDynamicHii.common.Default.Standard]
+[PcdsDynamicHii.common.Default.Manufacturing]
+[PcdsDynamicHii.common.Sku1.Standard]
+[PcdsDynamicHii.common.Sku1.Manufacturing]
+
**_PcdValues_**
PCD values are optional for `[PcdsDynamicDefault]` sections. The PCD values for @@ -584,7 +622,7 @@ the _UEFI Specification_ for a description of these attributes.
gNoSuchTokenSpaceGuid.PcdOemBootOptionPath|0x2338|100|" " # VOID*
gNoSuchTokenSpaceGuid.PcdEnableFastBoot |0x239C|1 |FALSE # BOOLEAN
-[PcdsDynamicHii.IA32, PcdsDynamicHii.X64.Sku1]
+[PcdsDynamicHii.IA32, PcdsDynamicHii.X64.Sku1.Standard]
gEfiMyModulePkgTokenSpaceGuid.PcdChassisIntrution|0x0053 0x0065 0x0074 0x0075 0x0070|gSysConfigGuid|0x83|0x0
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0|10 # Variable: L"Timeout"
```
@@ -633,11 +671,13 @@ sections of the DSC file.
{<TS> <VpdEntry>}
<PcdsExHii> ::= "[PcdsDynamicExHii" [<PdhAttribs>] "]" <EOL>
<PcdHiiEntries>*
-<PdhAttribs> ::= <attrs> ["," <TS> "PcdsDynamicExHii <attrs>]*
+<PdhAttribs> ::= <phattrs> ["," <TS> "PcdsDynamicExHii <phattrs>]*
<PdvEntries>*
<PcdHiiEntries> ::= {<MacroDefinition>} {<IncludeStatement>} {<TS> <HiiEntry>}
<attrs> ::= "." <arch> ["." <SkuIds>]
+<phattrs> ::= "." <arch> ["." <SkuIds>]["." <DefaultStore>]
<SkuIdS> ::= <Keyword> [<FS> <Keyword>]*
+<DefaultStore> ::= <Keyword>
<Keyword> ::= <UiName>
<UiName> ::= <Word>
<MinEntry> ::= <PcdName> [<FS> <PcdValue>] <EOL>
@@ -732,6 +772,42 @@ the `[Defines]` section. Use of the `SkuId` modifier for the `[PcdsDynamic*]` section tag can be used as a conditional modifier or to groups sets of PCDs according to the `SkuId` identifier.
+**_DefaultStore_**
+
+`DefaultStore` in the DSC file is used to specify
+DynamicHii/DynamicExHii PCD value as the default EFI variable for which
+default store. It is only valid in DynamicHii/DynamicExHii section. If
+it is not specified, DynamicHii/DynamicExHii PCD value will be used as
+the standard default EFI variable. For the different combination of SKU and DefaultStore, their inheritance is described as the below.
+
+SKU will inherit its parent SKU setting. DEFAULT SKU is the default parent SKU.
+DefaultStore is the subsection of SKU. It will first inherit from the
+same DefaultStore in its parent SKU, then inherit other DefaultStore in the same SKU.
+DefaultStore with the big default store ID will inherit the setting
+from one with the small default store ID. If there are more than one
+small default store ID, it will use the biggest one to be inherit. Here
+is the example. Four PcdsDynamicExHii sections are defined.
+
+# Four PcdsDynamicExHii section
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+[PcdsDynamicExHii.common.Sku1.Standard]
+[PcdsDynamicExHii.common.Sku1.Manufacturing]
+
+# DEFAULT Manufacturing setting based on two sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+
+# SKU1 Standard setting based on two sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Sku1.Standard]
+
+# SKU1 Manufacturing setting based on four sections
+[PcdsDynamicExHii.common.Default.Standard]
+[PcdsDynamicExHii.common.Default.Manufacturing]
+[PcdsDynamicExHii.common.Sku1.Standard]
+[PcdsDynamicExHii.common.Sku1.Manufacturing]
+
**_PcdValues_**
PCD values are optional for `[PcdsDynamicExDefault]` sections. The PCD values @@ -761,7 +837,7 @@ the _UEFI Specification_ for a description of these attributes.
gNoSuchTokenSpaceGuid.PcdOemBootOptionPath|0x2338|100|" " # VOID*
gNoSuchTokenSpaceGuid.PcdEnableFastBoot |0x239C|FALSE # BOOLEAN
-[PcdsDynamicExHii.IA32, PcdsDynamicExHii.X64.Sku1]
+[PcdsDynamicExHii.IA32, PcdsDynamicExHii.X64.Sku1.Standard]
gEfiMyModulePkgTokenSpaceGuid.PcdChassisIntrution|0x0053 0x0065 0x0074 0x0075 0x0070|gSysConfigGuid|0x83|0x0
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformBootTimeOut|L"Timeout"|gEfiGlobalVariableGuid|0x0 # Variable: L"Timeout"
```
diff --git a/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md b/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
new file mode 100644
index 0000000..614ed01
--- /dev/null
+++ b/3_edk_ii_dsc_file_format/313_[defaultstores]_section.md
@@ -0,0 +1,60 @@
+<!--- @file
+ 3.13 [DefaultStores] Section
+
+ Copyright (c) 2006-2018, Intel Corporation. All rights reserved.<BR>
+
+ Redistribution and use in source (original document form) and 'compiled'
+ forms (converted to PDF, epub, HTML and other formats) with or
+ without modification, are permitted provided that the following conditions are met:
+
+ 1) Redistributions of source code (original document form) must retain the
+ above copyright notice, this list of conditions and the following
+ disclaimer as the first lines of this file unmodified.
+
+ 2) Redistributions in compiled form (transformed to other DTDs, converted to
+ PDF, epub, HTML and other formats) must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS DOCUMENTATION IS PROVIDED BY TIANOCORE PROJECT "AS IS" AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL TIANOCORE PROJECT BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+## 3.13 [DefaultStores] Section
+
+The `[DefaultStores]` section is optional in all EDK II DSC files.
+
+#### Summary
+
+Entries may appear in any order. This section lists numeric mappings to
+the Default Store User Interface Name, only valid values from this list
+can be specified in the PcdsDynamicHii/PcdsDynamicExHii section.
+
+If this section is not specified, the parsing tools will assume
+standard default be applied in PcdsDynamicHii/PcdsDynamicExHii section.
+
+#### Prototype
+
+```c
+<DefaultStore> ::= "[DefaultStores]" <EOL>
+ {<Statement>*}
+<Statement> ::= <TS> <Number> <FS> <UiName> <EOL>
+<UiName> ::= <Word>
+```
+
+#### Example
+
+```ini
+[DefaultStores]
+ 0 | Standard # UEFI Standard default
+ 1 | Manufacturing # UEFI Manufacturing default
+```
--
2.8.0.windows.1
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
© 2016 - 2025 Red Hat, Inc.