--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Filename: DistributionPackage.xsd
+
+Copyright (c) 2008, Intel Corp. All rights reserved.
+
+This program and the accompanying materials are licensed and made available
+under the terms and conditions of the BSD License which may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified" targetNamespace="http://www.uefi.org/2008/1.0"
+ xmlns="http://www.uefi.org/2008/1.0">
+ <xs:element name="DistributionPackage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This schema defines the UEFI/PI
+ Distribution Package description (PKG) file. It describes the content
+ of:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Package descriptions with
+ definitions and headers.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) Modules in either source or binary
+ format. (Note that Binary format is for FFS leaf section file types
+ only, complete FFS files cannot be distributed using this distribution
+ format.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) The distribution of custom tools
+ used to modify the binary images to create UEFI/PI compliant images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Finally, it can be used to
+ distribute other miscellaneous content that is not specific to UEFI/PI
+ images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The Package Surface Area describes the
+ content of packages, while the Module Surface Area provides information
+ relevant to source and/or binary distributions. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="DistributionHeader" minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This header contains (legal)
+ information usually required for distributing both binary and/or
+ source code. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="PackageSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of packages in this
+ distribution. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are groups of files
+ and/or modules that are similar in nature.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> Packages are uniquely identified
+ by a package GUID and a package version. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can declare public
+ mappings of C names to GUID values. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can provide header
+ files for library classes and/or other industry standard
+ definitions. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> A package can also declare
+ public mappings of platform configuration database (PCD)
+ "knobs" to control features and operation of
+ modules within a platform. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Finally, a package lists the
+ library instances and/or modules that are provided in a
+ distribution package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The listing of UEFI/PI compliant
+ modules in this distribution that are NOT part of a Package. Every
+ module that is provided as part of a package needs to be described
+ in a PackageSurfaceArea.Modules section. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The ModuleSurfaceArea section
+ describes how each module in a distribution is coded, or, in the
+ case of a binary module distribution, how it was built. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> UEFI/PI compliant libraries and
+ modules are uniquely identified by the Module's GUID and version
+ number. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This section will typically be
+ used for modules that don't require any additional files that
+ would be included in a package. For example, the Enhanced FAT
+ driver binary does not need to have a package description, as no
+ additional files are provided. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="Tools" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is for distributing
+ vendor specific executable tools, tool source code and/or
+ configuration files. These tools are primarily for manipulating
+ code and/or binary images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Tools in this section
+ can:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Parse build meta-data files
+ to create source code files and build scripts. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) Modify image files to conform
+ to UEFI/PI specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) Generate binary files from
+ certain types of text/unicode files. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 4) Generate PCI Option Roms or
+ Firmware Device images. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 5) Implement external
+ encoding/decoding/signature/GUIDed tools. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 6) Distribution Package
+ create/install/remove tools. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="MiscellaneousFiles" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The list of miscellaneous files
+ in this distribution. Any files that are not listed in either the
+ Package, Module or Tools sections can be listed here. This section
+ can be used to distribute specifications for packages and modules
+ that are not "industry standards" such as a
+ specification for a chipset or a video device. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="UserExtensions" minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The UserExtensions section is
+ used to disseminate processing instructions that may be custom to
+ the content provided by the distribution. This section contains
+ information that is common to all aspects of this disribution.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionPackage Description -->
+
+ <xs:element name="DistributionHeader">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the content of
+ the UEIF/PI compliant Distribution Package Header. This is the only
+ required element of a UEFI/PI compliant distribution package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface Name
+ for this Distribution Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Each Distribution Package is
+ uniquely identified by it's GUID and Version number.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The reference name of
+ the Distribution Package file. This single word name can
+ be used by tools as a keyword or for directory and/or file
+ creation. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> White space and special
+ characters (dash and underscore characters may be used)
+ are not permitted in this name. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This 128-bit GUID and the
+ Version attribute uniquely identify this Distribution Package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward compatible releases of
+ a distribution package need only change the version number, while
+ non-backward compatible changes require the GUID to change
+ (resetting the version number to 1.0 is optional.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along with
+ the GUID, is used to uniquely identify this object. The
+ higher the number, the more recent the content.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Vendor"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string identifying who created
+ this distribution package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Date" type="xs:dateTime">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The date and time this
+ distribution was created. The format is: YYYY-MM-DDThh:mm:ss, for
+ example: 2001-01-31T13:30:00 (note the T character separator
+ between the calendar date and the time. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The copyright for this file that
+ is generated by the creator of the distribution. If a derivative
+ work is generated from an existing distribution, then the existing
+ copyright must be maintained, and additional copyrights may be
+ appended to the end of this element. It may also be the primary
+ copyright for all code provided in the Distribution Package.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="License" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A license that describes any
+ restrictions on the use of this distribution. If a derivative work
+ is allowed by the original license and a derivative work is
+ generated from an existing distribution, then the existing license
+ must be maintained, and additional licenses may be appended to the
+ end of this element. It may also be the primary license for all
+ code provided in the distribution file. Alternatively, this may
+ point to a filename that contains the License. The file (included
+ in the content zip file) will be stored in the same location as
+ the distribution package’s .pkg file. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of the
+ Distribution Package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of the
+ Distribution Package. This description may include the release
+ name of the file, the version of the file, and a complete
+ description of the file contents and/or features including a
+ description of the updates since the previous file release.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Signature" type="Md5Sum">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The packaging utilities will use
+ this MD5 sum value of the included ZIP file containing files
+ and/or code. If this element is not present, then installation
+ tools should assume that the content is correct, or that other
+ methods may be needed to verify content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="XmlSpecification"
+ type="xs:decimal" default="1.0">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This version of this XML Schema
+ is 1.0 </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ReadOnly" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, all content within
+ this Distribution Package should NOT be modified. The default
+ permits modification of all content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="RePackage" type="xs:boolean" default="false"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If set to true, then the content
+ can be repackaged into another distribution package. The default
+ prohibits repackaging the Distribution content. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the DistributionHeader element. -->
+
+ <xs:element name="PackageSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A package is a collection of related
+ objects - Includes, Libraries and Modules. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Each package is uniquely identified by
+ it's GUID and Version number. Backward compatible releases of a package
+ need only change the version number, while non-backward compatible
+ changes require the GUID to change (resetting the version number to 1.0
+ is optional.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface
+ Name for this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single
+ word BaseName of the package. This BaseName can be
+ used by tools as a keyword and for directory/file
+ creation. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify a given package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along
+ with the GUID, is used to uniquely identify this
+ object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward
+ compatible changes must make sure this number is
+ incremented from the most recent version.
+ Non-backward compatible changes require a new GUID,
+ and the version can be reset. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If the package requires a
+ different copyright than the distribution package, this
+ element can list one or more copyright lines.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If the package requires
+ licenses that are different from the distribution package
+ license, this element can contain one or more license text
+ paragraphs (or license filenames.) </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of
+ this package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of
+ a package. This description may include the release name of
+ the package, the version of the package, and a complete
+ description of the package contents and/or features
+ including a description of the updates since the previous
+ package’s release. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="PackagePath"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is the
+ location (in the ZIP file) for the root directory of a
+ package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Header element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The term cloned is used here to
+ indicate that this package as been copied and modified to a
+ completely different package. An example might be for a new
+ generation of chipsets that have few or no elements in common with
+ the original. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify the Package that this Package
+ was copied from. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along
+ with the GUID, is used to uniquely identify the
+ package that this package was cloned from.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ClonedFrom element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="LibraryClassDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Library Classes are public
+ interfaces that can be used by modules. One or more library
+ instances can implement a library class, however only one library
+ instance can be linked to an individual module. This provides the
+ platform integrator with the flexibility of choosing one library
+ instance's implementation over a different library instance.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="LibraryClass">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The header file
+ provides definitions and function prototypes for a
+ library class. Modules can be coded against these
+ functions, using the definitions in this header,
+ without concerning themselves about the libraries'
+ implementation details. This is a PackagePath relative
+ path and filename for the include file.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="RecommendedInstance">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and
+ the Version attribute uniquely identify the
+ Recommended Library Instance.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This
+ value, along with the GUID, is used to
+ uniquely identify this object. If this
+ value is not specified, then any version
+ of the library instance is recommended.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="Keyword" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The single word name
+ of the Library Class that module developers will use to
+ identify a library class dependency. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea LibraryClassDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="IndustryStandardIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to list
+ header files for industry standards not under the auspices of
+ UEFI.org. For example, headers that contain definitions and data
+ structures for the USB specifications. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="IndustryStandardHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The package relative
+ path and filename (in the content zip file) of the
+ industry standard include file. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea IndustryStdIncludes element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PackageIncludes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> All top level header files that
+ are included by a package that are not listed above. They cannot
+ be:</xs:documentation>
+ <xs:documentation xml:lang="en-us"> 1) Local to a module (module
+ specific.) </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 2) An industry standard header. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> 3) A library class header.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="PackageHeader">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="HeaderFile">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the Package
+ relative path and filename location within the content
+ ZIP file. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PackageIncluces element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="Modules">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="ModuleSurfaceArea" minOccurs="1"
+ maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section lists the
+ Module Surface Area for all modules provided with this
+ package. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Modules element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="GuidDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping
+ of GUID C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these GUIDs
+ must specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual GUID
+ Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName" />
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid" />
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
+ <xs:attribute name="GuidTypes" type="GuidListType"
+ use="optional" />
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea GuidDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ProtocolDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping
+ of Protocol C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Protocols
+ must specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual Protocol
+ Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName" />
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid" />
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea ProtocolDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PpiDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section defines the mapping
+ of Ppi C names to GUID values as a Registry Format GUID. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these Ppis must
+ specify their dependency on this package. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Individual PPI
+ Declarations </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName" />
+ <xs:element minOccurs="1" maxOccurs="1" name="GuidValue"
+ type="RegistryFormatGuid" />
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="UiName" type="xs:normalizedString" use="optional" />
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PpiDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdDeclarations">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to declare
+ platform configuration knobs that are defined by this package. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Modules that use these PCD
+ values must specify their dependency on this package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="TokenSpaceGuidCname" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Specifies the C name
+ of the Token Space GUID of which this PCD Entry is a
+ member. This C name should also be listed in the GUIDs
+ section, (specified above,) where the C name is
+ assigned to a GUID value. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Token">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Specifies the 32-bit
+ token value for this PCD Entry. The Token number must
+ be unique to the Token Space that declares the PCD. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3
+ is required to handle the "0x" prefix to the hex
+ number. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3" />
+ <xs:maxLength value="10" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="CName"
+ type="xs:NCName" />
+ <xs:element minOccurs="1" maxOccurs="1" name="DatumType"
+ type="PcdDatumTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string that
+ contains the data type of this PCD Entry. PCD data
+ types are restricted to the following set:UINT8,
+ UINT16, UINT32, UINT64, VOID*, BOOLEAN.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage"
+ type="PcdItemListType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A string that
+ contains one or more PCD Item types separated by
+ spaces. The PCD Item types are restricted to
+ FeaturePcd, FixedPcd, PatchPcd, Pcd and/or PcdEx.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="DefaultValue"
+ type="xs:normalizedString" />
+ <xs:element minOccurs="0" maxOccurs="1" name="MaxDatumSize">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a
+ recommended maximum data size for VOID* data types,
+ the actual value should be defined by the Platform
+ Integrator. It is not required for the other data
+ types. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength of 3
+ is required to handle the "0x" prefix to the hex
+ number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="PcdError">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Valid Error messages
+ that may be implemented in a module for the PCD Entry.
+ Only One Error Number per PcdError, (multiple
+ ErrorMessage entries are permitted) and multiple
+ PcdError elements are permitted. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the
+ following types of comparisons, which must be
+ able to evaluate to either true or false.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="ValidValueList">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD
+ Value must be space separated list of values.
+ Values are restricted to the data type of this
+ PCD. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="Lang" type="xs:language"
+ use="optional" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="ValidValueRange" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The PCD must
+ be within a specifed range of numeric values.
+ Restricted to C style Relational, Equality and
+ Logicial Operators and parenthesis are valid.
+ Only the CName for this PCD is permitted in
+ the ValidValueRange expression. All other
+ values must be numeric.</xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op
+ RValue)+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="Expression" type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A in-fix
+ logical expression using C style logical
+ operators. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:choice>
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="ErrorNumber">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A hexadecimal
+ value for the error message as defined by
+ specifications. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> The minLength
+ of 3 is required to handle the "0x" prefix to
+ the hex number. </xs:documentation>
+
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="HexNumber">
+ <xs:minLength value="3" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded"
+ name="ErrorMessage">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This string
+ should be defined by specifications. There are
+ pre-defined error number ranges in the UEFI/PI
+ specificaiton. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Lang" type="xs:language"
+ default="en-us" use="optional" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attributeGroup ref="SupportedArchMod" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea PcdDeclarations element. -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdRelationshipChecks">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used to describe
+ any PCD interdependencies or relationships. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdCheck"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This entry must used
+ TokenSpaceGuidCName.PcdCname for every named PCD. Restricted
+ to Relational, Equality and Logical Operators (NOT, AND, OR,
+ GT, GE, EQ, LE, LT and XOR) and parenthesis are valid. Only
+ the TokenSpaceGuidCName.PcdCname us permitted to name PCDs
+ in the expression. All other values must be numeric. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> LValue (op RValue)+
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="MiscellaneousFiles">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section contains files that
+ are not part of the code distributed with this package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different
+ from the Package Copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Only required if different
+ from the Package License. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A one line description of
+ this section's content. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of
+ the files in this section. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the PackagePath
+ relative path and filename location within the ZIP file.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attribute name="Executable" type="xs:boolean"
+ default="false" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> If true, used by
+ installation tools to ensure that a file that must
+ be executable has the correct properties to permit
+ execution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea Misc element. -->
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="UserExtensions">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This section is used for any
+ processing instructions that may be custom to the content provided
+ by this package that are common to this package.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence>
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="1" />
+ </xs:sequence>
+ <xs:attribute name="UserId" type="xs:NCName" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single word
+ identifier for grouping similar content that does not fit into
+ previously defined sections or other sections of the
+ Distribution. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="Identifier" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This can be used to
+ differentiate multiple sections with a grouping. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> For example, a PRE_PROCESS
+ Identifier might indicate specific steps and tools required
+ before processing module content, while a different
+ UserExtensions section with a POST_PROCESS Identifier might
+ describe steps that need to be executed after operations on
+ the modules in this package. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute processContents="lax" />
+ </xs:complexType>
+ </xs:element>
+ <!-- End of PackageSurfaceArea UserExtensions element. -->
+
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of the PackageSurfaceArea element. -->
+
+ <xs:element name="ModuleSurfaceArea">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Each module is uniquely identified by
+ it's GUID and Version number. Backward compatible releases of a module
+ need only change the version number, while non-backward compatible
+ changes require the GUID to change (resetting the version number to 1.0
+ is optional.) </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element minOccurs="1" maxOccurs="1" name="Header">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="Name">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is the User Interface
+ Name for this Module. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:normalizedString">
+ <xs:attribute name="BaseName" type="xs:NCName"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a single
+ word BaseName that will be used to create a module
+ meta-data file. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> This name should
+ also be used to create output file names and
+ directories. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="GUID">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This GUID and the Version
+ attribute uniquely identify a given Module.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="RegistryFormatGuid">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This value, along
+ with the GUID, is used to uniquely identify this
+ object. </xs:documentation>
+ <xs:documentation xml:lang="en-us"> Backward
+ compatible changes must make sure this number is
+ incremented from the most recent version.
+ Non-backward compatible changes require a new GUID,
+ and the version can be reset. </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Copyright"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if
+ the Copyright is different from either the Package or
+ Distribution copyright. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="License"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is only required if
+ the license is different from either the Package or
+ Distribution license. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Abstract"
+ type="xs:normalizedString">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A brief text description
+ of the module. </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="Description"
+ type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> A complete description of
+ the module contents and/or features including a description
+ of the updates since the previous module release.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <!-- End of Module Surface Area Header Section -->
+
+ <xs:element minOccurs="0" maxOccurs="1" name="ModuleProperties">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> List general information about a
+ module, including the Supported Architectures, this module's type,
+ specifications the module is coded against, and other
+ informational content. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="ModuleType"
+ type="ModuleTypes">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> One of the Enumerated
+ module types that limit the use of a module.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="1" name="Path"
+ type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> For stand-alone modules
+ that are NOT part of any package, this is the path to the
+ root of the module as listed in the ZIP file. For modules
+ included in a package, this is the location, relative to the
+ root of the package (PackagePath) this module belongs to.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This element is only
+ required for the PEIM that produces the PCD PPI or the DXE
+ Driver that produces the PCD Protocol. </xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="PEI_PCD_DRIVER" />
+ <xs:enumeration value="DXE_PCD_DRIVER" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="UefiSpecificationVersion" type="xs:decimal" />
+
+ <xs:element minOccurs="0" maxOccurs="1"
+ name="PiSpecificationVersion" type="xs:decimal" />
+
+ <xs:element minOccurs="0" maxOccurs="unbounded"
+ name="Specification">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> This is a list of other
+ specifications that this module is written against. These
+ entries can be used in #define statements (depending on the
+ build system implementation, they may be autogenerated.)
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:NCName">
+ <xs:attribute name="Version" type="xs:decimal"
+ use="required" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="BootMode">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> Different firmware
+ execution paths may be taken based on a given state of the
+ hardware, firmware, or through feature settings. A BootMode
+ may be declared (PRODUCES) or discovered (CONSUMES) based on
+ these states and feature settings. The supported boot modes
+ map to the PI specification Boot Modes. The boot modes
+ listed with Recovery are to indicate that the BootMode is
+ valid during a recovery boot. </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs="0">
+ <xs:element minOccurs="1" maxOccurs="1"
+ name="SupportedBootModes">
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="FULL" />
+ <xs:enumeration value="MINIMAL" />
+ <xs:enumeration value="NO_CHANGE" />
+ <xs:enumeration value="DIAGNOSTICS" />
+ <xs:enumeration value="DEFAULT" />
+ <xs:enumeration value="S2_RESUME" />
+ <xs:enumeration value="S3_RESUME" />
+ <xs:enumeration value="S4_RESUME" />
+ <xs:enumeration value="S5_RESUME" />
+ <xs:enumeration value="FLASH_UPDATE" />
+ <xs:enumeration value="RECOVERY_FULL" />
+ <xs:enumeration value="RECOVERY_MINIMAL" />
+ <xs:enumeration value="RECOVERY_NO_CHANGE" />
+ <xs:enumeration value="RECOVERY_DIAGNOSTICS" />
+ <xs:enumeration value="RECOVERY_DEFAULT" />
+ <xs:enumeration value="RECOVERY_S2_RESUME" />
+ <xs:enumeration value="RECOVERY_S3_RESUME" />
+ <xs:enumeration value="RECOVERY_S4_RESUME" />
+ <xs:enumeration value="RECOVERY_S5_RESUME" />
+ <xs:enumeration value="RECOVERY_FLASH_UPDATE" />
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element ref="HelpText" minOccurs="0"
+ maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="Usage" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module
+ always supports the given boot modes.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIMES_CONSUMES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module may
+ support a given mode on some execution paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will
+ change the boot mode. </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ <xs:enumeration value="SOMETIME_PRODUCES">
+ <xs:annotation>
+ <xs:documentation xml:lang="en-us"> The module will
+ change the boot mode on some exection paths.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="SupArchList" type="ArchListType"
+ use="optional" />
+ &nbs