commit | a4d38fad7049a0d1be8de965fc8dfa4154066406 | [log] [tgz] |
---|---|---|
author | Adriana Kobylak <anoo@us.ibm.com> | Tue Oct 05 19:57:47 2021 +0000 |
committer | Shawn McCarney <shawnmm@us.ibm.com> | Thu Oct 07 15:45:56 2021 +0000 |
tree | 13b89e2e92f2953c00a64e920142849e13231d4a | |
parent | b837887c2a18ac326764f0c4950bf14ab8b0ce84 [diff] |
psu-ng: Move psu validation to event timer During a BMC reset at power on, the validation would be performed while the entity manager interfaces are still being added to D-Bus, therefore causing an error log created because the information to determine which power supplies may be present is missing from the configuration information that entity manager publishes on D-Bus. Move the validation to be called on a timer, so that every time an EM interface is added, the timer resets, and the validation is called once no more interfaces are detected. Also call the validation through the timer during a power on in case EM has not started yet (this is less common but still possible). The side effect is that the validation occurs 2s after it's called during a power on, but it doesn't delay the power on as it's scheduled through the timer event. Tested with debug traces: - Reboot at power on performs validation after the EM interfaces are added and does not log an error. Oct 05 14:33:52 p10bmc phosphor-psu-monitor[3472]: EM interface added Oct 05 14:33:52 p10bmc phosphor-psu-monitor[3472]: EM interface added Oct 05 14:33:53 p10bmc phosphor-psu-monitor[3472]: EM interface added: Start timer Oct 05 14:33:53 p10bmc phosphor-psu-monitor[3472]: EM interface added Oct 05 14:33:54 p10bmc phosphor-psu-monitor[3472]: EM interface added Oct 05 14:33:54 p10bmc phosphor-psu-monitor[3472]: EM interface added: Start timer Oct 05 14:33:54 p10bmc phosphor-psu-monitor[3472]: EM interface added Oct 05 14:33:54 p10bmc phosphor-psu-monitor[3472]: EM interface added: Start timer Oct 05 14:33:56 p10bmc phosphor-psu-monitor[3472]: validateConfig() Oct 05 14:33:56 p10bmc phosphor-psu-monitor[3472]: validateConfig() validated - Validation runs when power on is requested. Oct 05 14:43:31 p10bmc phosphor-host-state-manager[714]: Change to Host State: xyz.openbmc_project.State.Host.HostState.TransitioningToRunning Oct 05 14:43:31 p10bmc phosphor-psu-monitor[622]: powerOn: Start timer Oct 05 14:43:33 p10bmc phosphor-psu-monitor[622]: validateConfig Oct 05 14:43:33 p10bmc phosphor-psu-monitor[622]: validateConfig validated - Validation runs when the phosphor-psu-monitor service is restarted at power on: Oct 07 15:15:02 p10bmc phosphor-psu-monitor[19762]: initialize(): Start timer Oct 07 15:15:04 p10bmc phosphor-psu-monitor[19762]: validateConfig Oct 07 15:15:04 p10bmc phosphor-psu-monitor[19762]: validateConfig validated Change-Id: I9f788622754604e5feb10cfec1ddc341c04c52a0 Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
This repository contains applications for configuring and monitoring devices that deliver power to the system.
To build all applications in this repository:
meson 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/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", }