mu_tiano_platforms icon indicating copy to clipboard operation
mu_tiano_platforms copied to clipboard

Project Mu Virtual Platform Firmware

============================ Mu Tiano Platform Repository

|Latest Mu Tiano Platform Release Version (latest SemVer)| |Commits Since Last Release|

=========================== =================== ================== Host and Toolchain Build Status Test Status =========================== =================== ================== Windows Visual Studio_ |WindowsCiBuild| |WindowsCiTest| Ubuntu GCC5_ |UbuntuCiBuild| |UbuntuCiTest| =========================== =================== ==================

============================= ================= Platform and Toolchain Status ============================= ================= Q35 Visual Studio_ |Q35VsBuild| Q35 GCC5_ |Q35GccBuild| SBSA GCC5_ |SBSAGccBuild| ============================= =================

.. |Latest Mu Tiano Platform Release Version (latest SemVer)| image:: https://img.shields.io/github/v/release/microsoft/mu_tiano_platforms?label=Latest%20Release :target: https://github.com/microsoft/mu_tiano_platforms/releases/latest

.. |Commits Since Last Release| image:: https://img.shields.io/github/commits-since/microsoft/mu_tiano_platforms/latest/main?include_prereleases :target: https://github.com/microsoft/mu_tiano_platforms/releases


Quick Links

  • Build Instructions <https://github.com/microsoft/mu_tiano_platforms/blob/main/Platforms/Docs/Common/building.md>_
  • Contribution Instructions <https://github.com/microsoft/mu_tiano_platforms/blob/main/CONTRIBUTING.md>_
  • Questions and Other Discussion <https://github.com/microsoft/mu_tiano_platforms/discussions>_
  • Releases <https://github.com/microsoft/mu_tiano_platforms/releases>_
  • Submit and View Bugs, Doc Requests, Feature Requests <https://github.com/microsoft/mu_tiano_platforms/issues>_
  • Security Issue Reporting Procedure <https://github.com/microsoft/mu_tiano_platforms/security/policy>_

About This Repo

Mu Tiano Platform is a public repository of Project Mu_ based firmware that targets the open-source QEMU_ processor emulator.

This repository provides readily available, free, and feature rich platforms that serve as an example for feature enablement and validation, demonstrating how a single firmware codebase can be shared across multiple products and architectures, promoting serviceable, maintainable, up-to-date and secure firmware.

A goal of this repository is to reduce the overhead of testing and evaluating common functionality before deployment to physical hardware.

Current Platforms Supported

  • QemuQ35Pkg_

    • QemuQ35Pkg Detailed Info_

    • Intel Q35 chipset with ICH9 south bridge

  • QemuSbsaPkg_

    • QemuSbsaPkg Detailed Info_

    • ARM Server Base System Architecture

.. _Project Mu: https://microsoft.github.io/mu .. _QEMU: https://www.qemu.org/ .. _QemuQ35Pkg: https://github.com/microsoft/mu_tiano_platforms/tree/main/Platforms/QemuQ35Pkg .. _QemuQ35Pkg Detailed Info: https://github.com/microsoft/mu_tiano_platforms/blob/main/Platforms/Docs/Q35/QemuQ35_ReadMe.md .. _QemuSbsaPkg: https://github.com/microsoft/mu_tiano_platforms/tree/main/Platforms/QemuSbsaPkg .. _QemuSbsaPkg Detailed Info: https://github.com/microsoft/mu_tiano_platforms/blob/main/Platforms/Docs/SBSA/QemuSbsa_ReadMe.md

Getting Started

Individual platforms are maintained in the Platforms directory. Each platform directory has a readme file and a Docs folders with more detailed platform-specific information.

Build Instructions

  1. If you are new to the "stuart" build system in general refer to the following for a general overview How to Build in edk2 with Stuart_.

  2. For instructions specific to this repo refer to building QemuQ35Pkg_.

You can then apply that knowledge to build the platform you're interested in with the PlatformBuild.py files located in the platform directory.

.. _Building QemuQ35Pkg: https://github.com/microsoft/mu_tiano_platforms/blob/main/Platforms/Docs/Common/building.md .. _How to Build in edk2 with Stuart: https://github.com/tianocore/tianocore.github.io/wiki/How-to-Build-With-Stuart

Releases

It is recommended to consume binaries built from the code in this repo (outside of development purposes) through a release.

Releases are tagged in the repository and are available for download from the Releases_ page. Each release contains release notes describing the changes since the last release that highlight important changes such as breaking changes.

A semantic versioning process (version is <major.minor.patch>) is followed with the following rules:

  • Major Version

    • A major version change indicates a breaking change. This means that the release is not backward compatible with the previous release. This is typically a change to the API or ABI of a component.
  • Minor Version

    • A minor version change indicates a new feature or enhancement. This means that the release is backward compatible with the previous release but includes new functionality or a major rework of existing functionality.
  • Patch Version

    • A patch version change indicates a bug fix or any other change. This means that the release is backward compatible with the previous release and contains no new functionality.

Every release includes DEBUG and RELEASE binaries for all supported platforms. DEBUG is recommended to debug a release and RELEASE used for non-debug scenarios. If you file a bug and a "debug log" is requested, that needs to be produced from the DEBUG build of the release.

Every release is published as both a NuGet_ package and a zip file. Both formats contain the exact same content and both can be manually downloaded or used in an automated build environment.

NuGet packages are published in the Mu Tiano Platforms GitHub NuGet Feed_ and zip files are attached as "assets" to the release on GitHub.

  • Zip File Usage Example: Scroll to the bottom of the v1.0.0_ release page and you will see an "Assets" section that contains the zip files for that release. You can manually download the appropriate zip file there.

  • NuGet Package Usage Example: A tool like dependabot_ can easily hook into the NuGet feed to automatically download releases into a project based on the semantic versioning rules described above.

Outside of topics that should be filed as an issue, please feel free to ask questions about the project in general or a particular release in the Discussions_ area.

.. _v1.0.0: https://github.com/microsoft/mu_tiano_platforms/releases/tag/v1.0.0 .. _dependabot: https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates .. _Discussions: https://github.com/microsoft/mu_tiano_platforms/discussions/categories/general .. _Mu Tiano Platforms GitHub NuGet Feed: https://github.com/orgs/microsoft/packages?repo_name=mu_tiano_platforms .. _NuGet: https://learn.microsoft.com/nuget/what-is-nuget

Feature Branches

  1. Create a branch for involved feature development on your fork of the repository.

  2. When the feature is ready, submit a pull request.

You can choose to squash all commits into one feature commit into mu_tiano_platforms/main or prepare a series of commits exactly as you would like them to appear and the pull request will be rebased on top of the mu_tiano_platforms/main branch.

A template for Branch_ReadMe.md can be found in docs/BranchReadMe_template.md

Features must be "on by default" in all applicable platforms to avoid build switch complexity that leads to stale feature coverage.

Repository Origin

QemuQ35Pkg in this repository was originally derived from OvmfPkg in TianoCore. The package is considered stable so regular syncing is not performed with the upstream package. Select changes are cherry-picked based on functional or security importance. Additional cherry picks are welcome if they are necessary for you to be productive with the platform in this repository.

⚠️ Security Warning

This repository and all code within it is not part of an officially supported customer facing product and therefore long term servicing is not supported. All code in this repository is provided as-is and is not intended to be used in a production system and may not be suitable in a production system.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct https://opensource.microsoft.com/codeofconduct/

For more information see the Code of Conduct FAQ https://opensource.microsoft.com/codeofconduct/faq/ or contact [email protected] <mailto:[email protected]>_. with any additional questions or comments.

Copyright & License

| Copyright (C) Microsoft Corporation | SPDX-License-Identifier: BSD-2-Clause-Patent

Upstream License (TianoCore)

Copyright (c) 2022, TianoCore and contributors. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form 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.

Subject to the terms and conditions of this license, each copyright holder and contributor hereby grants to those receiving rights under this license a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except for failure to satisfy the conditions of this license) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer this software, where such license applies only to those patent claims, already acquired or hereafter acquired, licensable by such copyright holder or contributor that are necessarily infringed by:

(a) their Contribution(s) (the licensed copyrights of copyright holders and non-copyrightable additions of contributors, in source or binary form) alone; or

(b) combination of their Contribution(s) with the work of authorship to which such Contribution(s) was added by such copyright holder or contributor, if, at the time the Contribution is added, such addition causes such combination to be necessarily infringed. The patent license shall not apply to any other combinations which include the Contribution.

Except as expressly stated above, no rights or licenses from any copyright holder or contributor is granted under this license, whether expressly, by implication, estoppel or otherwise.

DISCLAIMER

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT HOLDERS OR CONTRIBUTORS 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.. =================================================================== .. This is a bunch of directives to make the README file more readable .. ===================================================================

.. _Windows Visual Studio: https://dev.azure.com/projectmu/mu/_build/latest?definitionId=58&&branchName=main .. |WindowsCiBuild| image:: https://dev.azure.com/projectmu/mu/_apis/build/status/CI/Mu%20Tiano%20Platforms/Mu%20Tiano%20Platforms%20CI%20VS?branchName=main .. |WindowsCiTest| image:: https://img.shields.io/azure-devops/tests/projectmu/mu/58.svg

.. _Ubuntu GCC5: https://dev.azure.com/projectmu/mu/_build/latest?definitionId=57&branchName=main .. |UbuntuCiBuild| image:: https://dev.azure.com/projectmu/mu/_apis/build/status/CI/Mu%20Tiano%20Platforms/Mu%20Tiano%20Platforms%20CI%20Ubuntu%20GCC5?branchName=main .. |UbuntuCiTest| image:: https://img.shields.io/azure-devops/tests/projectmu/mu/57.svg

.. _Q35 Visual Studio: https://dev.azure.com/projectmu/mu/_build/latest?definitionId=59&&branchName=main .. |Q35VsBuild| image:: https://dev.azure.com/projectmu/mu/_apis/build/status/CI/Mu%20Tiano%20Platforms/Mu%20Tiano%20Platforms%20Q35%20Plat%20CI%20VS?branchName=main .. _Q35 GCC5: https://dev.azure.com/projectmu/mu/_build/latest?definitionId=60&&branchName=main .. |Q35GccBuild| image:: https://dev.azure.com/projectmu/mu/_apis/build/status/CI/Mu%20Tiano%20Platforms/Mu%20Tiano%20Platforms%20Q35%20Plat%20CI%20GCC5?branchName=main

.. _SBSA GCC5: https://dev.azure.com/projectmu/mu/_build/latest?definitionId=138&&branchName=main .. |SBSAGccBuild| image:: https://dev.azure.com/projectmu/mu/_apis/build/status/CI/Mu%20Tiano%20Platforms/Mu%20Tiano%20Platforms%20SBSA%20Plat%20CI%20GCC5?branchName=main