public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [tianocore-docs][PATCH V1 1/1] edk2-MinimumPlatformSpecification: Advanced Feature section updates
@ 2020-01-28  9:16 Kubacki, Michael A
  2020-01-30  9:28 ` Chaganty, Rangasai V
  0 siblings, 1 reply; 2+ messages in thread
From: Kubacki, Michael A @ 2020-01-28  9:16 UTC (permalink / raw)
  To: devel; +Cc: Sai Chaganty, Nate DeSimone

This change makes the following updates to Section 8 - Stage VI
Advanced Feature Selection:

* Remove the advanced feature template
  * This is no longer provided in the specification but maintained
    in the Readme.md file in edk2-platforms/Features/Intel/Readme.md

* Remove the following advanced feature examples:
  1. Network stack feature
  2. Signed capsule update feature

  * These examples are maintained in edk2-platforms/Features/Intel

* Update the Advanced Feature description in Section 8.1 to align
  with the description in edk2-platforms/Features/Intel/Readme.md

Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
---
 8_stage_6_advanced_feature_selection/85_advanced_feature_template.md              |  54 --------
 8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md          | 136 -------------------
 8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md | 137 --------------------
 8_stage_6_advanced_feature_selection/README.md                                    | 113 ++++------------
 SUMMARY.md                                                                        |   3 -
 5 files changed, 25 insertions(+), 418 deletions(-)

diff --git a/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md b/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md
deleted file mode 100644
index 428c731..0000000
--- a/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--- @file
-  8.5 Advanced Feature Template
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.5 Advanced Feature Template
-
-Define an advanced feature using the following template. The template is
-roughly equivalent to preceding stage description sections within this
-document, with the addition of common optimization opportunities. This
-template should be included in feature review and placed in the feature
-root directory as README.md.
-
-| `Overview`                     | `An overview of the feature`                                                                                                                                     |
-| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Firmware Volumes**           | The binary containers needed for the feature.                                                                                                                    |
-| **Modules**                    | The EDK II component binaries and static libraries required.                                                                                                     |
-| **Required Functions**         | Functions that are useful for understanding, porting, or debugging the feature and how these key functions are integrated into the Stage I-V required functions. |
-| **Configuration**              | The configurable parameters for a given feature.                                                                                                                 |
-| **Data Flows**                 | The architecturally defined data structures and flows for a given feature.                                                                                       |
-| **Control Flows**              | Key control flows for the feature.                                                                                                                               |
-| **Build Files**                | The DSC/FDF for integrating the feature.                                                                                                                         |
-| **Test Point Results**         | The test that can verify porting is complete for the feature.                                                                                                    |
-| **Functional Exit Criteria**   | The testable functionality for the feature.                                                                                                                      |
-| **Feature Enabling Checklist** | The required activities to achieve desired functionality for the feature.                                                                                        |
-| **Common Optimizations**       | Common size or performance tuning options for this feature.                                                                                                      |
-
-###### Table 70 Advanced Feature Template
diff --git a/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md b/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md
deleted file mode 100644
index a4d6ddd..0000000
--- a/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md
+++ /dev/null
@@ -1,136 +0,0 @@
-<!--- @file
-  8.6 Network Stack Feature Example
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.6 Network Stack Feature Example
-***
-**Note:** The network stack example is presently incomplete and
-no longer accurately represents the latest vision for advanced features.
-This section will be updated to provide more accurate examples in the future.
-***
-### 8.6.1 Overview
-
-The UEFI network stack supports IP4 and IP6, UDP, TCP/IP, MFTP, iSCSI, ARP,
-DHCP, and PXE. Refer to the UEFI specification for related interfaces. More
-details on UEFI networking can be found online such as the following resource
-[UEFI Driver Network Boot Devices Guide](https://www.intel.com/content/dam/doc/guide/uefi-driver-networkboot-devices-guide.pdf).
-
-### 8.6.2 Firmware Volumes
-
-| `Name`    | `Content` | `Compressed` | `Parent FV` |
-| --------- | --------- | ------------ | ----------- |
-| FvNetwork | Network   | Yes          | FvAdvanced  |
-
-#### 8.6.3 Modules
-
-The network stack can be considered a relatively complicated UEFI Driver Model
-compliant feature stack. The majority of the modules are board and silicon
-independent so no porting is expected for the following components.
-
-##### 8.6.3.1 UEFI Components (DXE)
-
-| `Item`             | `Producing Package` | `Libraries Consumed` |
-| ------------------ | ------------------- | -------------------- |
-| SnpDxe.inf         | MdeModulePkg        |                      |
-| DcpDxe.inf         | MdeModulePkg        |                      |
-| MnpDxe.inf         | MdeModulePkg        |                      |
-| VlanConfigDxe.inf  | MdeModulePkg        |                      |
-| ArpDxe.inf         | MdeModulePkg        |                      |
-| Dhcp4Dxe.inf       | MdeModulePkg        |                      |
-| Ip4Dxe.inf         | MdeModulePkg        |                      |
-| Mtftp4Dxe.inf      | MdeModulePkg        |                      |
-| Tcp4Dxe.inf        | MdeModulePkg        |                      |
-| Udp4Dxe.inf        | MdeModulePkg        |                      |
-| UefiPxeBcDxe.inf   | NetworkPkg          |                      |
-| IScsiDxe.inf       | MdeModulePkg        |                      |
-| Ip6Dxe.inf         | NetworkPkg          |                      |
-| TcpDxe.inf         | NetworkPkg          |                      |
-| Udp6Dxe.inf        | NetworkPkg          |                      |
-| Dhcp6Dxe.inf       | NetworkPkg          |                      |
-| Mtftp6Dxe.inf      | NetworkPkg          |                      |
-| UndiRuntimeDxe.inf | OptionRomPkg        |                      |
-
-##### 8.6.3.2 Platform Architecture Libraries
-
-None
-
-#### 8.6.4 Required Functions
-
-None
-
-### 8.6.5 Configuration
-
-None. `PcdEfiNetworkSupport` exists to allow user or build to disable network
-option ROM dispatch by the PCI Bus driver. That PCD is enabled by default and
-is detailed in Common Optimizations.
-
-### 8.6.6 Data Flows
-
-None
-
-### 8.6.7 Control Flows
-
-None
-
-### 8.6.8 Build Files
-
-These are the advanced feature module build files (i.e. INF files) included in
-a board to build and include the FvNetwork.fv in the FvAdvanced firmware
-volume.
-
-### 8.6.9 Test Point Results
-
-There are currently no test points defined for the network stack.
-
-### 8.6.10 Functional Exit Criteria
-
-TBD
-
-### 8.6.11 Feature Enabling Checklist
-
-TBD
-
-### 8.6.12 Common Optimizations
-
-#### 8.6.12.1 Performance
-
-| `PCD`                                                | `Default` | `Purpose`                                                                  |
-| ---------------------------------------------------- | --------- | -------------------------------------------------------------------------- |
-| gEfiMdeModulePkgTokenSpaceGuid.PcdEfiNetworkSupport  | TRUE      | This causes PciBus driver to skip loading network option ROM if set FALSE. |
-
-#### 8.6.12.2 Size
-
-1. Remove IPv4
-
-2. Remove PXE
-
-3. Remove iSCSI
-
-4. ...
diff --git a/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md b/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md
deleted file mode 100644
index 9bce739..0000000
--- a/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md
+++ /dev/null
@@ -1,137 +0,0 @@
-<!--- @file
-  8.7 Signed Capsule Update Enabling Example
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.7 Signed Capsule Update Enabling Example
-***
-**Note:** The signed capsule update example is presently incomplete and
-no longer accurately represents the latest vision for advanced features. 
-This section will be updated to provide more accurate examples in the future.
-***
-
-### 8.7.1 Overview
-
-The Signed Capsule Update stack supports capsule update functionality. Refer
-to the UEFI specification for related interfaces. More details on UEFI Signed
-Capsule Update can be found online such as the following resource
-[A Tour Beyond BIOS - Capsule Update and Recovery in EDK II](https://github.com/tianocoredocs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Capsule_Update_and_Recovery_in_EDK_II.pdf)
-
-### 8.7.2 Firmware Volumes
-
-TBD
-
-### 8.7.3 Modules
-
-The signed capsule update stack is a relatively simple feature stack. The
-majority of the modules are board and silicon independent so minimal
-porting is required.
-
-#### 8.7.3.1 UEFI Components (DXE)
-
-The libraries consumed are the subset of libraries required by this
-specification. Some libraries are defined in this specification, some are
-defined in EDK II documentation.
-
-| `Item`                   | `Producing Package` | `Libraries Consumed`   |
-| ------------------------ | ------------------- | ---------------------- |
-| CapsuleRuntime.inf       | MdeModulePkg        |                        |
-| SystemFirmwareUpdate.inf | SignedCapsulePkg    | PlatformFlashAccessLib |
-
-#### 8.7.3.2 Platform Architecture Libraries
-
-Board porting will require creation of libraries identified as produced by the
-BoardPkg. Depending on the board, there may be existing libraries that are
-sufficient for a board, so it is important to assess the utility of existing
-library instances when developing board support.
-
-| `Item`                    | `API Definition Package` | `Producing Package` | `Description`                 |
-| ------------------------- | ------------------------ | ------------------- | ----------------------------- |
-| `PlatformFlashAccessLib`  | SignedCapsule Pkg        | BoardPkg            | Signed Capsule Update details |
-
-### 8.7.4 Required Functions
-
-None
-
-### 8.7.5 Configuration
-
-| `PCD`                                                        | `Purpose`                                                                                           |
-| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdSupportUpdateCapsuleReset | Indicates if the platform can support update capsule across a system reset.                         |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdMaxSizeNonPopulateCapsule | Indicates the maximum size of the capsule image without a reset flag that the platform can support. |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdMaxSizePopulateCapsule    | Indicates the maximum size of the capsule image with a reset flag that the platform can support.    |
-
-### 8.7.6 Data Flows
-
-None
-
-### 8.7.7 Control Flows
-
-None
-
-### 8.7.8 Build Files
-
-These are the advanced feature module build files (i.e. INF files) included in
-a board to build and include the FvSignedCapsuleUpdate.fv in the FvAdvanced
-firmware volume.
-
-### 8.7.9 Test Point Results
-
-There are currently no test points defined for the signed capsule update stack.
-
-### 8.7.10 Functional Exit Criteria
-
-TBD
-
-### 8.7.11 Feature Enabling Checklist
-
-The following steps should be followed to enable a platform for enabling the
-Signed Capsule Update feature stack:
-
-1. Create a BoardCapsuleLib library class instance
-
-2. Include BoardCapsuleLib
-
-3. Include SecureCapsuleUpdate.dsc
-
-4. Include SecureCapsuleUpdate.fdf
-
-5. Add FvSecureCapsuleUpdate.fv
-
-6. Set Set `gMinPlatformPkgTokenSpaceGuid.PcdBootStage` = 6
-
-7. Verify if reset is required or optional
-
-8. Verify PCD default sizes cover required firmware image sizes
-
-9. Verify functionality as per whitepaper referenced in Overview
-
-### 8.7.12 Common Optimizations
-
-None
diff --git a/8_stage_6_advanced_feature_selection/README.md b/8_stage_6_advanced_feature_selection/README.md
index 9bdd812..2e38dfe 100644
--- a/8_stage_6_advanced_feature_selection/README.md
+++ b/8_stage_6_advanced_feature_selection/README.md
@@ -1,7 +1,7 @@
 <!--- @file
   8 Stage VI: Advanced Feature Selection
 
-  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2019 - 2020, 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
@@ -55,39 +55,33 @@ Organizing advanced features in the platform architecture enables better
 realization of the benefits in UEFI specification compliant firmware with
 highly cohesive and lowly coupled component interactions.
 
-This chapter provides guidance and some brief informative examples on how to
-define and integrate advanced features. These example are not implied as a
-mandatory requirement and only serve for information purposes. Advanced
-features are not required to be implemented with any particular design allowing
-flexibility for various organizations and projects to develop advanced features
-that meet their overall firmware design objectives. Furthermore, the source
-code layout and other maintenance details are outside the scope of this
+This chapter provides guidance on how to design and integrate advanced features.
+The source code layout and other maintenance details are outside the scope of this
 specification.
 
 The core advanced feature requirements that must be met:
-* Advanced features must be a complete feature.
-    * Fractions of functionality such as libraries that plug into a module defined in another package are not features.
-* Advanced features may only depend on packages in edk2.
-    * DEC files outside edk2 shall not be referenced in an advanced feature.
-* Advanced features shall be organized in cohesive packages related to the feature domain.
-    * *Informative examples: DebugFeaturePkg, IoFeaturePkg, PowerManagementFeaturePkg*
-    * New feature packages must be proposed as an RFC to the community mailing list.
-    The proposal shall include the package name, purpose, maintainers and reviewers, 
-    and identify any pre-existing packages that will be moved to the feature. The 
-    maintainers of any packages affected by the proposal must be included in the RFC 
-    notification list. If the feature proposal is well received, it must be ratified 
-    in the TianoCore Design Meeting. If approved, the RFC author should follow through 
-    to implement the change.
-* Advanced features must be mutually independent.
-* Advanced features must support being enabled on an individual basis when Stage VI is enabled.
-* Advanced features must be distributed in a binary independent manner such that the feature 
-  can be added and removed at the binary level (recommendation is with a single FeaturePcd).
-* Advanced features must be self-documenting. Each feature must include a ReadMe.md in the
-  root directory that describes the feature using the template described in this section.
-* Advanced features must fail in a graceful and developer friendly manner. 
-
-For all advanced features, complete and maintain a human readable copy of the 
-Advanced Feature Template provided in this chapter.
+* _Cohesive_, the feature should not contain any functionality unrelated to the feature.
+* _Complete_, the feature must have a complete design that minimizes dependencies. A feature package cannot directly
+  depend on another feature package.
+* _Easy to Integrate_, the feature should expose well-defined software interfaces to use and configure the feature.
+  * It should also present a set of simple and well-documented standard EDK II configuration options such as PCDs to
+  configure the feature.
+  * In general, features should be self-contained and started by the dispatcher. The board firmware should
+    be required to perform as few steps as possible to enable the feature.
+  * All features are required to have a feature enable PCD (`PcdFeatureEnable`). Any effort to enable the feature
+    besides this PCD should be carefully considered. Default configuration values should apply to the common case.
+* _Portable_, the feature is not allowed to depend on other advanced feature or board source code packages. For example,
+  if Feature A depends on output Feature B, a board integration module should use a generic interface in Feature A
+  to get the output and pass it to a generic interface in Feature B. Structures should not be shared between feature
+  packages. Most structures should be defined in a common package such as MdePkg if the structure is industry standard,
+  IntelSiliconPkg if the structure is specific to Intel silicon initialization, etc. Feature-specific structures are
+  of course allowed to be defined within a feature package and used by libraries and modules in that package.
+* _Self Documenting_, the feature should follow software best practices to allow others to debug the code and
+  contribute changes. In addition to source code, advanced features must have a Readme.md with sufficient
+  information for a newcomer to understand the feature.
+* _Single Instance_, the feature should not have more than one instance of a source solution. If an existing feature
+  package does not solve a specific instance of a problem for the feature, the feature package should be re-worked
+  to consider new requirements instead of duplicating feature code.
 
 ### 8.1.1 Major Execution Activities
 
@@ -95,63 +89,6 @@ Advanced Feature Template provided in this chapter.
 | ------------------------------------- |
 | Execute the Enabled Advanced Features |
 
-### 8.1.2 Examples
-
-Provided below are high-level examples of advanced features. The number of
-"advanced features" in a platform should be limited to what is required and
-reasonable to reduce the required level of design and validation complexity.
-
-* Core Features
-    * Signed Capsule update
-    * Signed Recovery
-    * Source Debug Enable
-    * NVMe (secondary storage)
-    * eMMC (secondary storage)
-    * S3 resume
-    * Network
-
-* Platform Features
-    * SMBIOS
-    * Intel&reg; Active Management Technology (AMT)
-
-* Board Features
-    * SMBIOS
-    * EC
-    * Setup (policy)
-
-In this chapter, two advanced features are described in detail and each of them
-represents a typical type of advanced feature, fully modular and embedded.
-***
-**Note:** The network stack and signed capsule update examples are incomplete and
-no longer accurately represent the latest vision for advanced features. These sections
-will be updated to provide more accurate examples in the future.
-***
-#### 8.1.2.1 Network stack - Fully Modular Feature
-
-For this type of feature, all the necessary code can be included in the
-platform build by defining the necessary sources the .dsc/.fdf. The feature
-enabling is modular enough to support binary enabling as there are no strong
-board dependencies.
-
-In this Network stack case, the necessary changes are:
-
-* Include EDK II core network related modules in .dsc/.fdf
-* Include Option Rom for the network device (e.g. Intel&reg; NIC) in the flash
-  image
-
-#### 8.1.2.2 Signed Capsule update - Embedded Feature
-
-For this type of feature, in addition to the necessary code/module inclusion,
-existing code that supports this feature should be embedded in the minimum
-platform code.
-
-In the signed capsule update case, the necessary changes are:
-
-* Include necessary modules in .dsc/.fdf
-* Define the necessary library class implementation in .dsc
-* Use PCD or other configuration method to enable the feature in the existing
-  code
-
 The number of embedded features must be minimized in order to support the
 broadest compatibility of the minimal platform. Features should be designed to
 define an API that can be used to integrate the feature into generic platform
diff --git a/SUMMARY.md b/SUMMARY.md
index e3a266b..5e63469 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -73,9 +73,6 @@
   * [8.2 Firmware Volumes](8_stage_6_advanced_feature_selection/82_firmware_volumes.md#82-firmware-volumes)
   * [8.3 Configuration](8_stage_6_advanced_feature_selection/83_configuration.md#83-configuration)
   * [8.4 Advanced Feature Design](8_stage_6_advanced_feature_selection/84_advanced_feature_design.md#84-advanced-feature-design)
-  * [8.5 Advanced Feature Template](8_stage_6_advanced_feature_selection/85_advanced_feature_template.md#85-advanced-feature-template)
-  * [8.6 Network Stack Feature Example](8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md#86-network-stack-feature-example)
-  * [8.7 Signed Capsule Update Enabling Example](8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md#87-signed-capsule-update-enabling-example)
 * [9 Stage VII: Tuning](9_stage_7_tuning/README.md#9-stage-7-tuning)
 * [Appendix A Full Maps](appendix_a_full_maps/README.md#appendix-a-full-maps)
   * [A.1 Firmware Volume Layout](appendix_a_full_maps/a1_firmware_volume_layout.md#a1-firmware-volume-layout)
-- 
2.16.2.windows.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [tianocore-docs][PATCH V1 1/1] edk2-MinimumPlatformSpecification: Advanced Feature section updates
  2020-01-28  9:16 [tianocore-docs][PATCH V1 1/1] edk2-MinimumPlatformSpecification: Advanced Feature section updates Kubacki, Michael A
@ 2020-01-30  9:28 ` Chaganty, Rangasai V
  0 siblings, 0 replies; 2+ messages in thread
From: Chaganty, Rangasai V @ 2020-01-30  9:28 UTC (permalink / raw)
  To: Kubacki, Michael A, devel@edk2.groups.io; +Cc: Desimone, Nathaniel L

Reviewed-by: Sai Chaganty <rangasai.v.chaganty@intel.com>

-----Original Message-----
From: Kubacki, Michael A <michael.a.kubacki@intel.com> 
Sent: Tuesday, January 28, 2020 1:17 AM
To: devel@edk2.groups.io
Cc: Chaganty, Rangasai V <rangasai.v.chaganty@intel.com>; Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>
Subject: [tianocore-docs][PATCH V1 1/1] edk2-MinimumPlatformSpecification: Advanced Feature section updates

This change makes the following updates to Section 8 - Stage VI Advanced Feature Selection:

* Remove the advanced feature template
  * This is no longer provided in the specification but maintained
    in the Readme.md file in edk2-platforms/Features/Intel/Readme.md

* Remove the following advanced feature examples:
  1. Network stack feature
  2. Signed capsule update feature

  * These examples are maintained in edk2-platforms/Features/Intel

* Update the Advanced Feature description in Section 8.1 to align
  with the description in edk2-platforms/Features/Intel/Readme.md

Cc: Sai Chaganty <rangasai.v.chaganty@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
---
 8_stage_6_advanced_feature_selection/85_advanced_feature_template.md              |  54 --------
 8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md          | 136 -------------------
 8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md | 137 --------------------
 8_stage_6_advanced_feature_selection/README.md                                    | 113 ++++------------
 SUMMARY.md                                                                        |   3 -
 5 files changed, 25 insertions(+), 418 deletions(-)

diff --git a/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md b/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md
deleted file mode 100644
index 428c731..0000000
--- a/8_stage_6_advanced_feature_selection/85_advanced_feature_template.md
+++ /dev/null
@@ -1,54 +0,0 @@
-<!--- @file
-  8.5 Advanced Feature Template
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.5 Advanced Feature Template
-
-Define an advanced feature using the following template. The template is -roughly equivalent to preceding stage description sections within this -document, with the addition of common optimization opportunities. This -template should be included in feature review and placed in the feature -root directory as README.md.
-
-| `Overview`                     | `An overview of the feature`                                                                                                                                     |
-| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Firmware Volumes**           | The binary containers needed for the feature.                                                                                                                    |
-| **Modules**                    | The EDK II component binaries and static libraries required.                                                                                                     |
-| **Required Functions**         | Functions that are useful for understanding, porting, or debugging the feature and how these key functions are integrated into the Stage I-V required functions. |
-| **Configuration**              | The configurable parameters for a given feature.                                                                                                                 |
-| **Data Flows**                 | The architecturally defined data structures and flows for a given feature.                                                                                       |
-| **Control Flows**              | Key control flows for the feature.                                                                                                                               |
-| **Build Files**                | The DSC/FDF for integrating the feature.                                                                                                                         |
-| **Test Point Results**         | The test that can verify porting is complete for the feature.                                                                                                    |
-| **Functional Exit Criteria**   | The testable functionality for the feature.                                                                                                                      |
-| **Feature Enabling Checklist** | The required activities to achieve desired functionality for the feature.                                                                                        |
-| **Common Optimizations**       | Common size or performance tuning options for this feature.                                                                                                      |
-
-###### Table 70 Advanced Feature Template diff --git a/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md b/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md
deleted file mode 100644
index a4d6ddd..0000000
--- a/8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md
+++ /dev/null
@@ -1,136 +0,0 @@
-<!--- @file
-  8.6 Network Stack Feature Example
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.6 Network Stack Feature Example
-***
-**Note:** The network stack example is presently incomplete and -no longer accurately represents the latest vision for advanced features.
-This section will be updated to provide more accurate examples in the future.
-***
-### 8.6.1 Overview
-
-The UEFI network stack supports IP4 and IP6, UDP, TCP/IP, MFTP, iSCSI, ARP, -DHCP, and PXE. Refer to the UEFI specification for related interfaces. More -details on UEFI networking can be found online such as the following resource -[UEFI Driver Network Boot Devices Guide](https://www.intel.com/content/dam/doc/guide/uefi-driver-networkboot-devices-guide.pdf).
-
-### 8.6.2 Firmware Volumes
-
-| `Name`    | `Content` | `Compressed` | `Parent FV` |
-| --------- | --------- | ------------ | ----------- |
-| FvNetwork | Network   | Yes          | FvAdvanced  |
-
-#### 8.6.3 Modules
-
-The network stack can be considered a relatively complicated UEFI Driver Model -compliant feature stack. The majority of the modules are board and silicon -independent so no porting is expected for the following components.
-
-##### 8.6.3.1 UEFI Components (DXE)
-
-| `Item`             | `Producing Package` | `Libraries Consumed` |
-| ------------------ | ------------------- | -------------------- |
-| SnpDxe.inf         | MdeModulePkg        |                      |
-| DcpDxe.inf         | MdeModulePkg        |                      |
-| MnpDxe.inf         | MdeModulePkg        |                      |
-| VlanConfigDxe.inf  | MdeModulePkg        |                      |
-| ArpDxe.inf         | MdeModulePkg        |                      |
-| Dhcp4Dxe.inf       | MdeModulePkg        |                      |
-| Ip4Dxe.inf         | MdeModulePkg        |                      |
-| Mtftp4Dxe.inf      | MdeModulePkg        |                      |
-| Tcp4Dxe.inf        | MdeModulePkg        |                      |
-| Udp4Dxe.inf        | MdeModulePkg        |                      |
-| UefiPxeBcDxe.inf   | NetworkPkg          |                      |
-| IScsiDxe.inf       | MdeModulePkg        |                      |
-| Ip6Dxe.inf         | NetworkPkg          |                      |
-| TcpDxe.inf         | NetworkPkg          |                      |
-| Udp6Dxe.inf        | NetworkPkg          |                      |
-| Dhcp6Dxe.inf       | NetworkPkg          |                      |
-| Mtftp6Dxe.inf      | NetworkPkg          |                      |
-| UndiRuntimeDxe.inf | OptionRomPkg        |                      |
-
-##### 8.6.3.2 Platform Architecture Libraries
-
-None
-
-#### 8.6.4 Required Functions
-
-None
-
-### 8.6.5 Configuration
-
-None. `PcdEfiNetworkSupport` exists to allow user or build to disable network -option ROM dispatch by the PCI Bus driver. That PCD is enabled by default and -is detailed in Common Optimizations.
-
-### 8.6.6 Data Flows
-
-None
-
-### 8.6.7 Control Flows
-
-None
-
-### 8.6.8 Build Files
-
-These are the advanced feature module build files (i.e. INF files) included in -a board to build and include the FvNetwork.fv in the FvAdvanced firmware -volume.
-
-### 8.6.9 Test Point Results
-
-There are currently no test points defined for the network stack.
-
-### 8.6.10 Functional Exit Criteria
-
-TBD
-
-### 8.6.11 Feature Enabling Checklist
-
-TBD
-
-### 8.6.12 Common Optimizations
-
-#### 8.6.12.1 Performance
-
-| `PCD`                                                | `Default` | `Purpose`                                                                  |
-| ---------------------------------------------------- | --------- | -------------------------------------------------------------------------- |
-| gEfiMdeModulePkgTokenSpaceGuid.PcdEfiNetworkSupport  | TRUE      | This causes PciBus driver to skip loading network option ROM if set FALSE. |
-
-#### 8.6.12.2 Size
-
-1. Remove IPv4
-
-2. Remove PXE
-
-3. Remove iSCSI
-
-4. ...
diff --git a/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md b/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md
deleted file mode 100644
index 9bce739..0000000
--- a/8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md
+++ /dev/null
@@ -1,137 +0,0 @@
-<!--- @file
-  8.7 Signed Capsule Update Enabling Example
-
-  Copyright (c) 2019, 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.
-
--->
-
-## 8.7 Signed Capsule Update Enabling Example
-***
-**Note:** The signed capsule update example is presently incomplete and -no longer accurately represents the latest vision for advanced features. 
-This section will be updated to provide more accurate examples in the future.
-***
-
-### 8.7.1 Overview
-
-The Signed Capsule Update stack supports capsule update functionality. Refer -to the UEFI specification for related interfaces. More details on UEFI Signed -Capsule Update can be found online such as the following resource -[A Tour Beyond BIOS - Capsule Update and Recovery in EDK II](https://github.com/tianocoredocs/Docs/raw/master/White_Papers/A_Tour_Beyond_BIOS_Capsule_Update_and_Recovery_in_EDK_II.pdf)
-
-### 8.7.2 Firmware Volumes
-
-TBD
-
-### 8.7.3 Modules
-
-The signed capsule update stack is a relatively simple feature stack. The -majority of the modules are board and silicon independent so minimal -porting is required.
-
-#### 8.7.3.1 UEFI Components (DXE)
-
-The libraries consumed are the subset of libraries required by this -specification. Some libraries are defined in this specification, some are -defined in EDK II documentation.
-
-| `Item`                   | `Producing Package` | `Libraries Consumed`   |
-| ------------------------ | ------------------- | ---------------------- |
-| CapsuleRuntime.inf       | MdeModulePkg        |                        |
-| SystemFirmwareUpdate.inf | SignedCapsulePkg    | PlatformFlashAccessLib |
-
-#### 8.7.3.2 Platform Architecture Libraries
-
-Board porting will require creation of libraries identified as produced by the -BoardPkg. Depending on the board, there may be existing libraries that are -sufficient for a board, so it is important to assess the utility of existing -library instances when developing board support.
-
-| `Item`                    | `API Definition Package` | `Producing Package` | `Description`                 |
-| ------------------------- | ------------------------ | ------------------- | ----------------------------- |
-| `PlatformFlashAccessLib`  | SignedCapsule Pkg        | BoardPkg            | Signed Capsule Update details |
-
-### 8.7.4 Required Functions
-
-None
-
-### 8.7.5 Configuration
-
-| `PCD`                                                        | `Purpose`                                                                                           |
-| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdSupportUpdateCapsuleReset | Indicates if the platform can support update capsule across a system reset.                         |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdMaxSizeNonPopulateCapsule | Indicates the maximum size of the capsule image without a reset flag that the platform can support. |
-| gEfiMdeModulePkgTokenSpaceGuid. PcdMaxSizePopulateCapsule    | Indicates the maximum size of the capsule image with a reset flag that the platform can support.    |
-
-### 8.7.6 Data Flows
-
-None
-
-### 8.7.7 Control Flows
-
-None
-
-### 8.7.8 Build Files
-
-These are the advanced feature module build files (i.e. INF files) included in -a board to build and include the FvSignedCapsuleUpdate.fv in the FvAdvanced -firmware volume.
-
-### 8.7.9 Test Point Results
-
-There are currently no test points defined for the signed capsule update stack.
-
-### 8.7.10 Functional Exit Criteria
-
-TBD
-
-### 8.7.11 Feature Enabling Checklist
-
-The following steps should be followed to enable a platform for enabling the -Signed Capsule Update feature stack:
-
-1. Create a BoardCapsuleLib library class instance
-
-2. Include BoardCapsuleLib
-
-3. Include SecureCapsuleUpdate.dsc
-
-4. Include SecureCapsuleUpdate.fdf
-
-5. Add FvSecureCapsuleUpdate.fv
-
-6. Set Set `gMinPlatformPkgTokenSpaceGuid.PcdBootStage` = 6
-
-7. Verify if reset is required or optional
-
-8. Verify PCD default sizes cover required firmware image sizes
-
-9. Verify functionality as per whitepaper referenced in Overview
-
-### 8.7.12 Common Optimizations
-
-None
diff --git a/8_stage_6_advanced_feature_selection/README.md b/8_stage_6_advanced_feature_selection/README.md
index 9bdd812..2e38dfe 100644
--- a/8_stage_6_advanced_feature_selection/README.md
+++ b/8_stage_6_advanced_feature_selection/README.md
@@ -1,7 +1,7 @@
 <!--- @file
   8 Stage VI: Advanced Feature Selection
 
-  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2019 - 2020, 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 @@ -55,39 +55,33 @@ Organizing advanced features in the platform architecture enables better  realization of the benefits in UEFI specification compliant firmware with  highly cohesive and lowly coupled component interactions.
 
-This chapter provides guidance and some brief informative examples on how to -define and integrate advanced features. These example are not implied as a -mandatory requirement and only serve for information purposes. Advanced -features are not required to be implemented with any particular design allowing -flexibility for various organizations and projects to develop advanced features -that meet their overall firmware design objectives. Furthermore, the source -code layout and other maintenance details are outside the scope of this
+This chapter provides guidance on how to design and integrate advanced features.
+The source code layout and other maintenance details are outside the 
+scope of this
 specification.
 
 The core advanced feature requirements that must be met:
-* Advanced features must be a complete feature.
-    * Fractions of functionality such as libraries that plug into a module defined in another package are not features.
-* Advanced features may only depend on packages in edk2.
-    * DEC files outside edk2 shall not be referenced in an advanced feature.
-* Advanced features shall be organized in cohesive packages related to the feature domain.
-    * *Informative examples: DebugFeaturePkg, IoFeaturePkg, PowerManagementFeaturePkg*
-    * New feature packages must be proposed as an RFC to the community mailing list.
-    The proposal shall include the package name, purpose, maintainers and reviewers, 
-    and identify any pre-existing packages that will be moved to the feature. The 
-    maintainers of any packages affected by the proposal must be included in the RFC 
-    notification list. If the feature proposal is well received, it must be ratified 
-    in the TianoCore Design Meeting. If approved, the RFC author should follow through 
-    to implement the change.
-* Advanced features must be mutually independent.
-* Advanced features must support being enabled on an individual basis when Stage VI is enabled.
-* Advanced features must be distributed in a binary independent manner such that the feature
-  can be added and removed at the binary level (recommendation is with a single FeaturePcd).
-* Advanced features must be self-documenting. Each feature must include a ReadMe.md in the
-  root directory that describes the feature using the template described in this section.
-* Advanced features must fail in a graceful and developer friendly manner. 
-
-For all advanced features, complete and maintain a human readable copy of the -Advanced Feature Template provided in this chapter.
+* _Cohesive_, the feature should not contain any functionality unrelated to the feature.
+* _Complete_, the feature must have a complete design that minimizes 
+dependencies. A feature package cannot directly
+  depend on another feature package.
+* _Easy to Integrate_, the feature should expose well-defined software interfaces to use and configure the feature.
+  * It should also present a set of simple and well-documented standard 
+EDK II configuration options such as PCDs to
+  configure the feature.
+  * In general, features should be self-contained and started by the dispatcher. The board firmware should
+    be required to perform as few steps as possible to enable the feature.
+  * All features are required to have a feature enable PCD (`PcdFeatureEnable`). Any effort to enable the feature
+    besides this PCD should be carefully considered. Default configuration values should apply to the common case.
+* _Portable_, the feature is not allowed to depend on other advanced 
+feature or board source code packages. For example,
+  if Feature A depends on output Feature B, a board integration module 
+should use a generic interface in Feature A
+  to get the output and pass it to a generic interface in Feature B. 
+Structures should not be shared between feature
+  packages. Most structures should be defined in a common package such 
+as MdePkg if the structure is industry standard,
+  IntelSiliconPkg if the structure is specific to Intel silicon 
+initialization, etc. Feature-specific structures are
+  of course allowed to be defined within a feature package and used by libraries and modules in that package.
+* _Self Documenting_, the feature should follow software best practices 
+to allow others to debug the code and
+  contribute changes. In addition to source code, advanced features 
+must have a Readme.md with sufficient
+  information for a newcomer to understand the feature.
+* _Single Instance_, the feature should not have more than one instance 
+of a source solution. If an existing feature
+  package does not solve a specific instance of a problem for the 
+feature, the feature package should be re-worked
+  to consider new requirements instead of duplicating feature code.
 
 ### 8.1.1 Major Execution Activities
 
@@ -95,63 +89,6 @@ Advanced Feature Template provided in this chapter.
 | ------------------------------------- |  | Execute the Enabled Advanced Features |
 
-### 8.1.2 Examples
-
-Provided below are high-level examples of advanced features. The number of -"advanced features" in a platform should be limited to what is required and -reasonable to reduce the required level of design and validation complexity.
-
-* Core Features
-    * Signed Capsule update
-    * Signed Recovery
-    * Source Debug Enable
-    * NVMe (secondary storage)
-    * eMMC (secondary storage)
-    * S3 resume
-    * Network
-
-* Platform Features
-    * SMBIOS
-    * Intel&reg; Active Management Technology (AMT)
-
-* Board Features
-    * SMBIOS
-    * EC
-    * Setup (policy)
-
-In this chapter, two advanced features are described in detail and each of them -represents a typical type of advanced feature, fully modular and embedded.
-***
-**Note:** The network stack and signed capsule update examples are incomplete and -no longer accurately represent the latest vision for advanced features. These sections -will be updated to provide more accurate examples in the future.
-***
-#### 8.1.2.1 Network stack - Fully Modular Feature
-
-For this type of feature, all the necessary code can be included in the -platform build by defining the necessary sources the .dsc/.fdf. The feature -enabling is modular enough to support binary enabling as there are no strong -board dependencies.
-
-In this Network stack case, the necessary changes are:
-
-* Include EDK II core network related modules in .dsc/.fdf
-* Include Option Rom for the network device (e.g. Intel&reg; NIC) in the flash
-  image
-
-#### 8.1.2.2 Signed Capsule update - Embedded Feature
-
-For this type of feature, in addition to the necessary code/module inclusion, -existing code that supports this feature should be embedded in the minimum -platform code.
-
-In the signed capsule update case, the necessary changes are:
-
-* Include necessary modules in .dsc/.fdf
-* Define the necessary library class implementation in .dsc
-* Use PCD or other configuration method to enable the feature in the existing
-  code
-
 The number of embedded features must be minimized in order to support the  broadest compatibility of the minimal platform. Features should be designed to  define an API that can be used to integrate the feature into generic platform diff --git a/SUMMARY.md b/SUMMARY.md index e3a266b..5e63469 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -73,9 +73,6 @@
   * [8.2 Firmware Volumes](8_stage_6_advanced_feature_selection/82_firmware_volumes.md#82-firmware-volumes)
   * [8.3 Configuration](8_stage_6_advanced_feature_selection/83_configuration.md#83-configuration)
   * [8.4 Advanced Feature Design](8_stage_6_advanced_feature_selection/84_advanced_feature_design.md#84-advanced-feature-design)
-  * [8.5 Advanced Feature Template](8_stage_6_advanced_feature_selection/85_advanced_feature_template.md#85-advanced-feature-template)
-  * [8.6 Network Stack Feature Example](8_stage_6_advanced_feature_selection/86_network_stack_feature_example.md#86-network-stack-feature-example)
-  * [8.7 Signed Capsule Update Enabling Example](8_stage_6_advanced_feature_selection/87_signed_capsule_update_enabling_example.md#87-signed-capsule-update-enabling-example)
 * [9 Stage VII: Tuning](9_stage_7_tuning/README.md#9-stage-7-tuning)
 * [Appendix A Full Maps](appendix_a_full_maps/README.md#appendix-a-full-maps)
   * [A.1 Firmware Volume Layout](appendix_a_full_maps/a1_firmware_volume_layout.md#a1-firmware-volume-layout)
--
2.16.2.windows.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-01-30  9:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-01-28  9:16 [tianocore-docs][PATCH V1 1/1] edk2-MinimumPlatformSpecification: Advanced Feature section updates Kubacki, Michael A
2020-01-30  9:28 ` Chaganty, Rangasai V

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox