commit | 37c2612b4497f4065a810187e3f99cfaccca368c | [log] [tgz] |
---|---|---|
author | Shawn McCarney <shawnmm@us.ibm.com> | Thu Oct 24 13:58:31 2024 -0500 |
committer | Shawn McCarney <shawnmm@us.ibm.com> | Fri Oct 25 09:03:11 2024 -0500 |
tree | 16db558af117d1402aaebab227ee3c17cb4a70c2 | |
parent | a3ff7e71b1e044bfe4edcbb338e335b45a624715 [diff] |
psutils: Do not pad PSU version with blanks When `psutils --get-version <inventory_path>` is run, it returns the firmware version for the specified PSU inventory path. If no psu.json file is found, the PSU I2C bus and address are obtained from D-Bus. The PSU version is then obtained from a file in sysfs. The contents of the sysfs file are currently treated as VPD. Invalid characters are replaced with spaces, and the value is padded with spaces if needed to reach an expected VPD length. If an error occurs trying to read the sysfs file, the version is initially set to "". However, since it is being treated as VPD it is later padded with blanks. Since the version is not an empty string, it is treated as valid by psutils and the PSU code update application. This causes subsequent code update issues. Modify psutils so that the contents of the sysfs file are treated as a simple string. If an error occurs, set the version to "". This will cause psutils and the PSU code update application to correctly conclude that an error occurred and the version is not valid. Tested: * psutils --get-version * psu.json file exists * Test where getting the version works * Verify file contents are obtained * Verify psutils prints out the version * Verify psutils exits with a return code of 0 * Test where getting the version fails * Verify exception is written to the journal * Verify psutils prints out an empty string * Verify psutils exits with a return code of 1 * psu.json file does not exist; PSU information is obtained from D-Bus * Test where getting the version works * Verify file contents are obtained * Verify psutils prints out the version * Verify psutils exits with a return code of 0 * Test where getting the version fails * Verify exception is written to the journal * Verify psutils prints out an empty string * Verify psutils exits with a return code of 1 Change-Id: I131ba1b73f5ee96606bcfe86943da258196eca62 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
This repository contains applications for configuring and monitoring devices that deliver power to the system.
Actively-maintained applications:
Legacy applications:
To build all applications in this repository:
meson setup build ninja -C build
To clean the repository and remove all build output:
rm -rf build
You can specify meson options to customize the build process. For example, you can specify:
Several applications in this repository require a PSU JSON config to run. The JSON config file provides information for:
There is an example psu.json to describe the necessary configurations.
inventoryPMBusAccessType
defines the pmbus access type, which tells the service which sysfs type to use to read the attributes. The possible values are:
/sys/bus/i2c/devices/3-0069/
/sys/bus/i2c/devices/3-0069/hwmon/hwmonX/
/sys/kernel/debug/pmbus/hwmonX/
/sys/kernel/debug/<driver>.<instance>/
/sys/kernel/debug/pmbus/hwmonX/cffps1/
fruConfigs
defines the mapping between the attribute file and the FRU inventory interface and property. The configuration example below indicates that the service will read part_number
attribute file from a directory specified by the above pmbus access type, and assign to PartNumber
property in xyz.openbmc_project.Inventory.Decorator.Asset
interface.
"fruConfigs": [ { "propertyName": "PartNumber", "fileName": "part_number", "interface": "xyz.openbmc_project.Inventory.Decorator.Asset" } ]
psuDevices
defines the kernel device dir for each PSU in inventory. The configuration example below indicates that powersupply0
's device is located in /sys/bus/i2c/devices/3-0069
.
"psuDevices": { "/xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0" : "/sys/bus/i2c/devices/3-0069", }