Releases: microsoft/mu_feature_ipmi
v2.1.0
What's Changed
🚀 Features & ✨ Enhancements
-
Make PcdIpmiBmcReadyDelayTimer Eligible for Dynamic PCD since it may get updated in C code based on different scenarios. (ex:Normal, BMC absence, Emulator) @MarcChen46 (#171)
Change Details
## Description
Change PcdIpmiBmcReadyDelayTimer to Dynamic PCD since it may get updated in C code based on different scenarios. (ex:Normal, BMC absence, Emulator)
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Verified build and host-based unit test.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2.0.3...v2.1.0
v2.0.3
What's Changed
-
Fixed debug log for gEfiEventReadyToBootGuid. @v-joschang (#163)
Change Details
## Description
Fixed debug log for gEfiEventReadyToBootGuid.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Verified on local platform.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2.0.2...v2.0.3
v2.0.2
What's Changed
-
Change IpmiBaseLibNull to BASE library type @cfernald (#160)
Change Details
## Description
The IpmiBaseLibNull implementation currently restricts its library types and consumes libraries that it does not use. This change cleans up and generalizes the NULL imlementation.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Local build
Integration Instructions
N/A
Full Changelog: v2.0.1...v2.0.2
v2.0.1
What's Changed
-
Correct the API name in IpmiBaseLibDxe.c and link IpmiBaseLibDxe for UEFI\_APPLICATION module type @MarcChen46 (#151)
Change Details
## Description
Correct the API name in IpmiBaseLibDxe.c and link IpmiBaseLibDxe for UEFI_APPLICATION module type.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Verified the API could be called in DXE.
Integration Instructions
N/A
- Impacts functionality?
Full Changelog: v2.0.0...v2.0.1
v2.0.0
What's Changed
⚠️ Breaking Changes
-
Switch IPMI watchdog timer module to use policy for configuration @cfernald (#143)
Change Details
## Description
Switch the IPMI watchdog timer modules to use a policy blob instead of dynamic PCDs. This creates a stronger guarantee of finalized data availability.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
Tested locally on QEMU.
Integration Instructions
Remove IPMI weatchdog PCDs and introduce platform code to produce watchdog timer policy.
🚀 Features & ✨ Enhancements
-
Implement IpmiPowerRestorePolicy module @MarcChen46 (#144)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
Implement IpmiPowerRestorePolicy module for configuring Power Restore Policy via IPMI Chassis Command
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Implement IpmiPowerRestorePolicy module for configuring Power Restore Policy via IPMI Chassis Command, it provides a PlatformPowerRestorePolicyConfigurationLib to retrieve platform setting.
- Includes tests?
- Tests - Does the change include any explicit test code?
- Unit tests
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: add feature readme file
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified the build by pipeline.
- Verified the Power Restore Policy can be configured correctly on real HW.
Integration Instructions
To leverage this feature,
-
Add the following to your platform DSC's PEI section:
IpmiFeaturePkg/IpmiPowerRestorePolicy/IpmiPowerRestorePolicy.inf
-
Add the following to your platform FDF's PEI section:
INF IpmiFeaturePkg/IpmiPowerRestorePolicy/IpmiPowerRestorePolicy.inf </blockquote> <hr> </details>
- Impacts functionality?
📖 Documentation Updates
-
Implement IpmiPowerRestorePolicy module @MarcChen46 (#144)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
Implement IpmiPowerRestorePolicy module for configuring Power Restore Policy via IPMI Chassis Command
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Implement IpmiPowerRestorePolicy module for configuring Power Restore Policy via IPMI Chassis Command, it provides a PlatformPowerRestorePolicyConfigurationLib to retrieve platform setting.
- Includes tests?
- Tests - Does the change include any explicit test code?
- Unit tests
- Includes documentation?
- Documentation - Does the change contain explicit documentation additions
outside direct code modifications (and comments)? - Examples: add feature readme file
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
- Verified the build by pipeline.
- Verified the Power Restore Policy can be configured correctly on real HW.
Integration Instructions
To leverage this feature,
-
Add the following to your platform DSC's PEI section:
IpmiFeaturePkg/IpmiPowerRestorePolicy/IpmiPowerRestorePolicy.inf
-
Add the following to your platform FDF's PEI section:
INF IpmiFeaturePkg/IpmiPowerRestorePolicy/IpmiPowerRestorePolicy.inf </blockquote> <hr> </details>
- Impacts functionality?
Full Changelog: v1.0.0...v2.0.0
v1.0.0
What's Changed
-
ci.yaml: add PrEval entry @Javagedes (#138)
Change Details
## Description
Adds a PrEval entry to all ci.yaml files to enable the new PrEval Policy 5.
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
- Impacts functionality?
⚠️ Breaking Changes
-
202302 introduced IpmiCommandLib.h as part of the MdeModulePkg. @apop5 (#140)
Change Details
## Description
Brought IpmiCommandLib in mu_feature_ipmi into compliance with MdeModulePkg's Updated CI to run with mu_basecore 202302. IpmiGetSystemGuid has been deprecated. It has been replaced with IpmiGetSystemUuid from MdeModulePkg. As such, the returned GUID is now in EFI_GUID format instead of IPMI_GUID format. New Functions: IpmiGetChannelInfo IpmiGetLanConfigurationParameters Modified functions: IpmiSetPowerRestorePolicy Parameter names have changed to match MdeModulePkg ChassisControlResponse Parameters names have been changed to match MdeModulePkg IpmiSetSystemBootOptions A parameter has been removed to match MdeModulePkg IpmiGetSystemBootOptions A Parmeter has been removed to match MdeModulePkg
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Ran Local CI
Integration Instructions
Replace IpmiGetSystemGuid calls with IpmiGetSystemUuid, verify that use of function expects an EFI_GUID to be returned instead of IPMI_GUID. Verify that consumers of functions are updated to match latest IpmiCommandLib IpmiSetPowerRestorePolicy Parameter names have changed to match MdeModulePkg ChassisControlResponse Parameters names have been changed to match MdeModulePkg IpmiSetSystemBootOptions A parameter has been removed to match MdeModulePkg IpmiGetSystemBootOptions A Parmeter has been removed to match MdeModulePkg IpmiCommandLib.h is removed and can be found in MdeModulePkg/Include/Library. </blockquote> <hr> </details>
- Impacts functionality?
Full Changelog: v0.3.2...v1.0.0
v0.3.2
What's Changed
-
Onboarding ARM64 builds on selfhosted Azure pipeline agents @kuqin12 (#118)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
This change added a few new matrix entries to support building mu_tiano_platforms on native ARM64 systems. The PR will cover both microsoft/mu_basecore#369 and microsoft/mu_basecore#305.
The PR should also be incorporated with mu_devops change.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
This was tested on selfhost-agents and existing agents.
Integration Instructions
Pipeline changes, N/A for integration.
</blockquote> <hr> </details>
- Impacts functionality?
📖 Documentation Updates
-
Create IpmiSmbios DXE driver to add SMBIOS Table Type38 by SmbiosProtocol @MarcChen46 (#128)
Change Details
# Preface
Please ensure you have read the contribution docs prior
to submitting the pull request. In particular,
pull request guidelines.Description
Implement IpmiSmbios DXE driver to add SMBIOS Type38 by SmbiosProtocol in ReadyToBoot event
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Add Smbios Table Type38 by IpmiSmbios DXE driver.
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- Includes tests?
- Tests - IpmiSmbiosGoogleTest
- Includes documentation?
- Documentation - ReadMe.md
How This Was Tested
- Verified CI build with VS/GCC compiler.
- Verified the SMBIOS Table Type38 can be created successfully on real platform.
Integration Instructions
Please refer to ReadMe.md
</blockquote> <hr> </details>
- Impacts functionality?
-
Create SpmiTable DXE Driver to initialize SPMI table and install it by AcpiTableProtocol @MarcChen46 (#123)
Change Details
## Description
Create SpmiTable DXE Driver to initialize SPMI table and install it by AcpiTableProtocol.
- Impacts functionality?
- Functionality - Install SPMI Table by AcpiTableProtocol, it is used by ACPI-aware OS for IPMI interface.
- Impacts security?
- Breaking change?
- Includes tests?
- Tests - SpmiTableGoogleTest
- Includes documentation?
- Documentation - Readme.md
How This Was Tested
- Verified by SpmiTableGoogleTest in CI build.
- Verified on a real system.
Integration Instructions
To leverage this feature,
-
Add the following to your platform DSC:
[Components.X64] IpmiFeaturePkg/SpmiTable/SpmiTable.inf
-
Add the following to your platform FDF:
INF IpmiFeaturePkg/SpmiTable/SpmiTable.inf
- Impacts functionality?
Full Changelog: v0.3.1...v0.3.2
v0.3.1
What's Changed
-
Remove variable for debug level causing compiler break @cfernald (#113)
Change Details
## Description
Removes a variable that will cause unused variable compiler breaks when DEBUG statements are optimized out.
- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
N/A
Integration Instructions
N/A
</blockquote> <hr> </details>
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
-
IpmiFeaturePkg/GenericIpmi: Fix CodeQL type comparison issue @makubacki (#92)
Change Details
## Description
Issue:
Comparison between
Index
of typeUINT8
andDataSize
of wider
typeUINT32
.Description:
Comparisons between types of different widths in a loop condition can
cause the loop to behave unexpectedly.Resolution:
Make
Index
aUINT32
so it is the same width asDataSize
.- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
CodeQL CI plugin results.
Integration Instructions
N/A
Signed-off-by: Michael Kubacki [email protected]
- Impacts functionality?
-
Add CodeQL Stuart parameter to this repo @makubacki (#90)
Change Details
## Description
Allows CodeQL to be run locally by specifying
--codeql
when
providingstuart_update
andstuart_ci_build
commands in this
repo.stuart_update
- Automatically downloads the CodeQL CLI application
appropriate for your host operating system- Note: This may take several minutes depending on your Internet
connection speed
- Note: This may take several minutes depending on your Internet
stuart_ci_build
- Automatically runs CodeQL against the packages
built after they are built.
NOTE: Running with CodeQL will increase your overall build time for a
couple of reasons:- Every package must be clean built to get proper results
- The CodeQL analysis phase takes a while to run
(1) happens automatically, you do not need to specify a clean build
manuallyFor more information, such as:
- How to view results
- How to modify the CodeQL rules run
- How to include/exclude files/rules at various levels of granularity
And more...
Go to the CodeQL plugin readme:
https://github.com/microsoft/mu_basecore/blob/HEAD/.pytool/Plugin/CodeQL/Readme.md
- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Verified
--codeql
usage withstuart_update
andstuart_ci_build
locally.Integration Instructions
See earlier PR description and CodeQL plugin readme:
https://github.com/microsoft/mu_basecore/blob/HEAD/.pytool/Plugin/CodeQL/Readme.md
Signed-off-by: Michael Kubacki [email protected]
-
Fix X64 build \& add MU\_BASECORE to gitignore @cfernald (#77)
Change Details
## Description
- Fixes the build by adding the security token for X64.
- Adds MU_BASECORE submodule to the .gitignore file
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Functionality - Does the change ultimately impact how firmware functions?
- Examples: Add a new library, publish a new PPI, update an algorithm, ...
- 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, ...
- Security - Does the change have a direct security impact on an application,
- 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, ...
- Breaking change - Will anyone consuming this change experience a break
- 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, ...
- Documentation - Does the change contain explicit documentation additions
How This Was Tested
Build only change
Integration Instructions
N/A
-
Updating BMC ACPI power state. @purplenogg731 (#54)
Change Details
## Description
Add ExitBootService event and S5 SMI handler for updating BMC ACPI power state.
For each item, place an "x" in between
[
and]
if true. Example:[x]
.
(you can also check items in the GitHub UI)- Impacts functionality?
- Impacts security?
- Breaking change?
- Includes tests?
- Includes documentation?
How This Was Tested
- Power on SUT.
- Check if SUT boot into Shell.
- Change ACPI Power State to S3/D3.
ipmitool -H 10.134.67.13 -U admin -P admin -I lanplus raw 0x6 0x6 0x83 0x83
ipmitool -H 10.134.67.13 -U admin -P admin -I lanplus raw 0x6 0x7
03* 03** - Boot into Windows.
- Check if state has been changed to S0/D0.
ipmitool -H 10.134.67.13 -U admin -P admin -I lanplus raw 0x6 0x7
00* 00** - Shutdown SUT.
- Check if state has been changed to S5/D3.
ipmitool -H 10.134.67.13 -U admin -P admin -I lanplus raw 0x6 0x7
05* 03**
Note:
*00h S0 / G0 working
*03h S3 typically equates to “suspend-to-RAM”
*05h S5 / G2 soft off**00h D0
**03h D3Integration Instructions
N/A
-
Create Sample directory and add sample for using Report Status for SEL logging @cfernald (#41)
Change Details
- Create a sample directory for reference code that cannot be directly used - Create a sample for using the RSC protocol for reporting events to SEL
-
Switch to new container build model for CI @cfernald (#40)
Change Details
switch to use the simple boolean rather then supply the container image for mu_devops.
Requires: microsoft/mu_devops#24
-
Use RFC4122 foramt for IpmiGetSystemGuid @apop5 (#39)
Change Details
IPMI specification calls out reverse GUID format RFC4122 for transmitting data from the Get System Guid and Get Device Guid formats.
Added data structure defining the format, and modified IpmiGetSystemGuid to return that structure instead of an EFI_GUID.
Release 0.2.2
What's Changed
- Move the watchdog logic to library for greater customization by @cfernald in #24
- Create library for querying IPMI boot options by @cfernald in #25
- Improvements to documentation and description files. by @cfernald in #26
- Improvements to the IPMI watchdog implementation by @cfernald in #27
- Switch GCC CI to use container and add local container support by @cfernald in #29
Full Changelog: 0.2.1...0.2.2