commit | 13cb853751aa2468247ad170aea29f0561204130 | [log] [tgz] |
---|---|---|
author | Bonnie Lo <Bonnie_Lo@wiwynn.com> | Thu Dec 15 17:00:40 2022 +0800 |
committer | Bonnie Lo <Bonnie_Lo@wiwynn.com> | Wed Dec 21 17:20:05 2022 +0800 |
tree | a05206fc232713baadece407896ec0dab538c5e7 | |
parent | 8290e0f3297a2c5cbaa8d872d5cf8e19166ca177 [diff] |
Add one second timer to save POST codes to file A lot of POST codes are sent to BMC from BIC in a short time. In BMC, there is an ipmi handler to get POST codes and upload to dbus property. The xyz.openbmc_project.State.Boot@.PostCode service listens the PropertiesChanged signal and saves to POST codes history file. The xyz.openbmc_project.State.Boot@.PostCode service is hanged if there are too many POST codes in a short time. At this time, the memory usage of dbus-broker increases, and the out-of-memory(OOM) issue happens. The processes are killed when OOM happens, and BMC may reset unexpected. Test Case: Check the frequency for post code file getting larger Signed-off-by: Bonnie Lo <Bonnie_Lo@wiwynn.com> Change-Id: Ic5a397cfa7f053e196cc3d0eeae3e2b2fa5089b7
This phosphor-post-code-manager repository provides an infrastructure to persist the POST codes in BMC filesystem & it also owns the systemd services that are responsible for exposing the BIOS Post Codes to rest of the world via redfish.
To build phosphor-post-code-manager package , do the following steps:
meson <build directory> ninja -C <build directory>
This repository ships xyz.openbmc_project.State.Boot.PostCode.service
systemd service along with its template version and a tiny binary that exposes the necessary dbus interfaces & methods to extract the POST codes per boot cycle.
This repository is tightly coupled with phosphor-host-postd OpenBMC respository which is responsible for emitting the dbus signals for every new POST Code.
phosphor-post-code-manager is architected to look for the property changed signals which are being emitted from the service that hosts Value property on xyz.openbmc_project.State.Boot.Raw
interface & archive them per boot on the filesystem, so that those can be exposed over redfish