Platform Initialization (PI) Specification Definitions and Support Code
OTHER License
Bot releases are visible (Hide)
Published by github-actions[bot] 25 days ago
Updates the crate version in anticipation of a v4.0 tagged release.
Add definitions for PI Status Codes from PI Spec 1.8A, Volume 3: Shared Architectural Elements, Chapter 6.6.
Built an external project using some items defined in this module.
N/A
Add definitions for PI Status Codes from PI Spec 1.8A, Volume 3: Shared Architectural Elements, Chapter 6.6.
Built an external project using some items defined in this module.
N/A
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v3.0.2...v4.0.0
Published by github-actions[bot] about 1 month ago
Added unit test to verify SectionMetadata correctness.
N/A
</blockquote>
<hr>
</details>
Add CompressionType defines per PI spec 1.9 3.2.5.2
N/A - only const definitions, no functional code.
N/A
</blockquote>
<hr>
</details>
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v3.0.1...v3.0.2
Adds a definition for MEMORY_TYPE_INFO_HOB_GUID
and related structure.
Verified new structure definition locally.
N/A
</blockquote>
<hr>
</details>
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v3.0.0...v3.0.1
Published by github-actions[bot] about 2 months ago
For details on how to complete to complete these options and their meaning refer to CONTRIBUTING.md.
N/A
This patch adds support for accessing the data for Guid Extension HOB types.
Unit tests, also incorporated into prototype code and confirmed can access data as expected.
Code using the previous definition of Hob::GuidHob(&'a GuidHob)
will need to be adjusted to use Hob::GuidHob(&'a GuidHob, &'a [u8])
</blockquote>
<hr>
</details>
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v2.0.1...v3.0.0
Published by github-actions[bot] 2 months ago
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v2.0.0...v2.0.1
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v2.0.0...v2.0.1
Published by github-actions[bot] 3 months ago
This PR is a significant refactor of the FFS support to allow for section extraction and caching. A significant change of the design is to adjust the FFS Section
implementation so that the backing data for the section is always on the heap. Since encapsulation sections are extracted into buffers on the heap while non-encapsulation sections come from the slice that backs the FV/FFS that contains the sections, unifying the data model by copying all section data to the hep significantly simplifies the ownership model for the memory used in the implementation.
FirmwareVolume
and File
instances are still tied to the slice reference used to initialize them, and do not incur heap allocations when instantiating them.
This PR also adds section extraction capability - when enumerating Section
s from a File
, the caller can provide an implementation of the SectionExtractor
trait to provide support for section extraction, and the PR includes an example implementation for extracting Brotli-compressed section as a demonstration of that capability.
Unit tests and Brotli example execute as expected.
Consumers of the FFS abstractions will need to be modified to support the new API.
This PR is a significant refactor of the FFS support to allow for section extraction and caching. A significant change of the design is to adjust the FFS Section
implementation so that the backing data for the section is always on the heap. Since encapsulation sections are extracted into buffers on the heap while non-encapsulation sections come from the slice that backs the FV/FFS that contains the sections, unifying the data model by copying all section data to the hep significantly simplifies the ownership model for the memory used in the implementation.
FirmwareVolume
and File
instances are still tied to the slice reference used to initialize them, and do not incur heap allocations when instantiating them.
This PR also adds section extraction capability - when enumerating Section
s from a File
, the caller can provide an implementation of the SectionExtractor
trait to provide support for section extraction, and the PR includes an example implementation for extracting Brotli-compressed section as a demonstration of that capability.
Unit tests and Brotli example execute as expected.
Consumers of the FFS abstractions will need to be modified to support the new API.
This PR is a significant refactor of the FFS support to allow for section extraction and caching. A significant change of the design is to adjust the FFS Section
implementation so that the backing data for the section is always on the heap. Since encapsulation sections are extracted into buffers on the heap while non-encapsulation sections come from the slice that backs the FV/FFS that contains the sections, unifying the data model by copying all section data to the hep significantly simplifies the ownership model for the memory used in the implementation.
FirmwareVolume
and File
instances are still tied to the slice reference used to initialize them, and do not incur heap allocations when instantiating them.
This PR also adds section extraction capability - when enumerating Section
s from a File
, the caller can provide an implementation of the SectionExtractor
trait to provide support for section extraction, and the PR includes an example implementation for extracting Brotli-compressed section as a demonstration of that capability.
Unit tests and Brotli example execute as expected.
Consumers of the FFS abstractions will need to be modified to support the new API.
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v1.0.0...v2.0.0
Published by github-actions[bot] 4 months ago
Format only. Formatting changes from running with nightly rustfmt to fully apply all rules specified in rustfmt.toml
. No functional changes.
No functional change.
N/A
This is a refactor of the FFS support to add support for large files/sections (i.e. EFI_FIRMWARE_FILESYSTEM_3). The previous implementation only supported small (less than 16MB) files/sections (i.e. EFI_FIRMWARE_FILESYSTEM_2).
Unit tests pass.
Consumers of the affected modules will need to update to use the new APIs.
This is a refactor of the FFS support to add support for large files/sections (i.e. EFI_FIRMWARE_FILESYSTEM_3). The previous implementation only supported small (less than 16MB) files/sections (i.e. EFI_FIRMWARE_FILESYSTEM_2).
Unit tests pass.
Consumers of the affected modules will need to update to use the new APIs.
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/v0.1.0...v1.0.0
Published by github-actions[bot] 5 months ago
The primary focus is to provide rust types and constants to build
a PI Specification compliant firmware, functionality is allowed to
be implemented around those types as well. Code implementation must
be applicable to any PI spec compliant firmware that may need the
associated functionality.
Refer to the Platform Initialization (PI) Specification for more
background on the specification https://uefi.org/specs/PI/1.8A/.
The PI Specification describes a number of boot phases and concepts
used across those boot phases referred to as "Shared Architectural
Elements". The implementation predominantly focuses on the DXE phase
at this time. This includes shared elements used in other stages such
as the HOBs and firmware storage. Contributions to expand coverage of
the specification are welcome.
The overall structure and design of the crate is subject to breaking
changes at this time. The code is being shared for wider feedback and
collaboration that might result in fundamental changes to the
organization of content. These details will be documented and managed
using appropriately versioned releases of the crate to reflect the
degree of change.
Full Changelog: https://github.com/microsoft/mu_rust_pi/compare/...v0.1.0