commit | 8290e0f3297a2c5cbaa8d872d5cf8e19166ca177 | [log] [tgz] |
---|---|---|
author | Jonathan Doman <jonathan.doman@intel.com> | Wed Nov 23 15:04:17 2022 -0800 |
committer | Jonathan Doman <jonathan.doman@intel.com> | Tue Dec 13 10:48:57 2022 -0800 |
tree | 726ac4f5392fb8fab8a55443e0e53a92eba5375e | |
parent | c7fed5ca79cfb6b08d5023633072ee8885c4d62f [diff] |
Use binary serialization instead of JSON The binary format is much more efficient than JSON in terms of computational speed and disk space consumption. The former is important in case the host is sending a constant stream of POST codes. post-code-manager can fall behind because it takes too long to store each new POST code on disk, causing D-Bus messages to pile up and increase memory consumption inside dbus-broker. Tested: Rebooted the host a few times and observed that POST code history is populated normally in Redfish. After upgrading to this change, old POST code history stored in JSON format is lost, but remains on disk until it gets overwritten during subsequent host boots. Signed-off-by: Jonathan Doman <jonathan.doman@intel.com> Change-Id: Id55909a55d950e6e62b78b3333df687b4c582c42
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