## Description
The Project Mu submodules have moved to release/202405 and as the final
step in qualifying that, we move mu_tiano_platforms to the new
submodules. Below is the list of major changes for this repo to
accommodate the new submodules:
SBSA Dropping ArmVirtPkg Dependency
--
QemuSbsaPkg was dependent on ArmVirtPkg for two libraries and a set of
device tree PCDs. These device tree PCDs were moved to OvmfPkg in edk2,
which we do not carry in Project Mu. In general, ArmVirtPkg allows
dependencies on OvmfPkg, which makes it not a good candidate for Project
Mu to depend on. The PCDs were moved to QemuSbsaPkg, QemuVirtMemInfoLib
was copied there, and the HobLib was pointed to the mu_basecore version,
as the ArmVirtPkg version was not needed, thus breaking the dependency
on ArmVirtPkg. Some other ArmVirtPkg unused PCDs were dropped entirely.
MM_SUPV Updates
--
There were a lot of MM_SUPV updates in release/202405, which led to
needing to copy an instance of SmmRelocationLib from OvmfPkg to
QemuQ35Pkg. There was debt from previous integrations where changes from
MmFeatureLib were not picked up, which were required to work with the
new supervisor.
SourceLevelDebugPkg Dropped
--
Project Mu no longer carries SourceLevelDebugPkg, so all references and
hooks were dropped from the repo.
Non-NX Compat Images Allowed to be Loaded
--
Previously, on Windows built FW's, we would block loading non-NX compat
binaries. This prevents booting most modern Linuxes as shim/grub do not
have the NX_COMPAT flag set for released versions. This was changed to
not block loading non-NX Compat images so that Linux can boot on
Q35/SBSA on Windows.
SBSA Qemu run without SME and SVE
--
Similar to requiring SSE support on Q35, Windows and Linux have started
using SVE instructions on ARM64. However, TF-A in the SP_MM
configuration does not support SME or SVE instructions, so TF-A would
crash when one of those instructions occurred. Qemu is now configured to
run without support for SME and SVE so that the OSes do not attempt to
use them. It was also discovered that Qemu 9.0.2 or newer is required
for booting an OS on SBSA now, it is not clear what changed.
Cleanups and Old References Dropped
--
- As part of debugging some of the changes needed for release/202405,
some DSC cleanups were made.
- MemoryOverrideBinLib was not carried forward to release/202405, so it
was dropped from DSCs.
- AdvLoggerAccessLibNull is used for VariableStandaloneMmLib.inf in
QemuSbsaPkg now instead of the actual instance, as we are not using
AdvLogger there.
For each item, place an "x" in between `[` and `]` if true. Example:
`[x]`.
_(you can also check items in the GitHub UI)_
- [x] Impacts functionality?
- **Functionality** - Does the change ultimately impact how firmware
functions?
- Examples: Add a new library, publish a new PPI, update an algorithm,
...
- [x] Impacts security?
- **Security** - Does the change have a direct security impact on an
application,
flow, or firmware?
- Examples: Crypto algorithm change, buffer overflow fix, parameter
validation improvement, ...
- [x] Breaking change?
- **Breaking change** - Will anyone consuming this change experience a
break
in build or boot behavior?
- Examples: Add a new library class, move a module to a different repo,
call
a function in a new library class in a pre-existing module, ...
- [ ] Includes tests?
- **Tests** - Does the change include any explicit test code?
- Examples: Unit tests, integration tests, robot tests, ...
- [ ] Includes documentation?
- **Documentation** - Does the change contain explicit documentation
additions
outside direct code modifications (and comments)?
- Examples: Update readme file, add feature readme file, link to
documentation
on an a separate Web page, ...
## How This Was Tested
Booted Q35 and SBSA to Windows and Linux
## Integration Instructions
Qemu 9.0.2 is required for Linux builds to boot into an OS now, it is
unclear exactly what is broken with older versions.
---------
Co-authored-by: Kun Qin <kuqin@microsoft.com>