f5402197 | 16-Aug-2024 |
Patrick Williams <patrick@stwcx.xyz> |
clang-format: re-format for clang-18
clang-format-18 isn't compatible with the clang-format-17 output, so we need to reformat the code with the latest version. The way clang-18 handles lambda forma
clang-format: re-format for clang-18
clang-format-18 isn't compatible with the clang-format-17 output, so we need to reformat the code with the latest version. The way clang-18 handles lambda formatting also changed, so we have made changes to the organization default style format to better handle lambda formatting.
See I5e08687e696dd240402a2780158664b7113def0e for updated style. See Iea0776aaa7edd483fa395e23de25ebf5a6288f71 for clang-18 enablement.
Change-Id: I7b90380845efee6bf6a1fe342a793d71aa9ff181 Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
show more ...
|
3828e951 | 07-Aug-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
Move format_utils.hpp to root directory
Move format_utils.hpp to the root directory of this repository so that it serves as common code. Change the namespace to reflect the directory change. Move
Move format_utils.hpp to root directory
Move format_utils.hpp to the root directory of this repository so that it serves as common code. Change the namespace to reflect the directory change. Move automated tests to the test directory for common code.
Change-Id: Id1af4b8f6da3e3b4f86231599a19d70ca6164f12 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
b9d4fb71 | 29-Jul-2024 |
Andrew Geissler <geissonator@yahoo.com> |
gcc14: continue dangling-reference workaround
The latest yocto is moving to gcc14 and the workaround to ignore dangling references is still needed with gcc14.
Tested: - Confirmed phosphor-power bui
gcc14: continue dangling-reference workaround
The latest yocto is moving to gcc14 and the workaround to ignore dangling references is still needed with gcc14.
Tested: - Confirmed phosphor-power builds with latest yocto rebase
Change-Id: I900cb11d66730a74bb5860769214dfa93f83a40d Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
show more ...
|
768d2269 | 09-Jul-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
Move to std::format
The OpenBMC project is moving from the fmt project to the built-in std::format() support.
Update source files and meson files to move to std::format().
Tested: * Verified build
Move to std::format
The OpenBMC project is moving from the fmt project to the built-in std::format() support.
Update source files and meson files to move to std::format().
Tested: * Verified builds cleanly in local CI * Verified all automated tests run successfully * Verified builds cleanly in bitbake * Verified an affected phosphor-psu-monitor journal message still works correctly. * Verified an affected phosphor-power-sequencer journal message still works correctly.
Change-Id: I97b63cf9d132e2b6f173afb30953a9083d68133f Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
dd6c3661 | 03-Jul-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Update documentation
Update the phosphor-power-sequencer documentation to reflect recent enhancements: * New JSON configuration file format * PowerSequencerDevice class hierarchy * Enhanced pg
pseq: Update documentation
Update the phosphor-power-sequencer documentation to reflect recent enhancements: * New JSON configuration file format * PowerSequencerDevice class hierarchy * Enhanced pgood isolation support * Automated tests
Change-Id: I8a7b76f4685cf9d55f1147658cc703b6d558f94b Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
d1b8b1b0 | 28-Jun-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Remove deprecated files
Remove C++ and JSON files that are no longer needed by the phosphor-power-sequencer application.
Over the past few months, several large enhancements have been impleme
pseq: Remove deprecated files
Remove C++ and JSON files that are no longer needed by the phosphor-power-sequencer application.
Over the past few months, several large enhancements have been implemented in this application: * New JSON file format that merges pin and rail elements, defines power on sequence order of rails, defines PMBus PAGEs, and provides an additional type of pgood fault checking based on output voltage. * New pgood fault detection algorithm that is device independent, checks rails in power on sequence order, ignores PAGEs that are not voltage rails, and checks for faults using new output voltage method. * New Device class hierarchy and Rail class that support automated testing.
Remove the old C++ classes that are no longer used. Also remove the configuration files that use the old JSON format.
Tested: * Verified repository builds without errors * Verified automated tests run without errors * Verified application can successfully power the system on and off without errors
Change-Id: I4473c01a30cfd898ffd11c75d537c2c3c95e945f Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
1f8b1103 | 21-Jun-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Switch to new pgood isolation support
Switch to the new C++ implementation of pgood isolation support. When a pgood fault occurs, this support attempts to find the voltage rail that caused th
pseq: Switch to new pgood isolation support
Switch to the new C++ implementation of pgood isolation support. When a pgood fault occurs, this support attempts to find the voltage rail that caused the fault.
The new implementation includes the following: * PowerSequencerDevice class hierarchy * Rail class * Services class * CompatibleSystemTypesFinder class * DeviceFinder class * config_file_parser functions * New JSON configuration files
Tested: * Verified all automated tests ran successfully. * Verified all new/modified code in this commit via manual testing. * Tested on Rainier and Everest systems * Verified system powered on and off without errors. * Tested with pgood injection in every rail both during and after the power on sequence. Verified rail was identified and correct error was logged.
Change-Id: I83d7fdc45bd0a000a31d98f67ecdd5a54f24b939 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
16275831 | 27-Jun-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Check STATUS_VOUT first to find pgood fault
Enhance the support for finding the correct voltage rail when a pgood fault occurs.
First check the PMBus STATUS_VOUT register for all rails. Chec
pseq: Check STATUS_VOUT first to find pgood fault
Enhance the support for finding the correct voltage rail when a pgood fault occurs.
First check the PMBus STATUS_VOUT register for all rails. Check the rails in power-on-sequence order.
Checking STATUS_VOUT is usually the most accurate method. For example, if a pgood fault occurs, the power sequencer device may automatically shut off related rails. Ideally the device will only set fault bits in STATUS_VOUT for the rail with the pgood fault. However, all the related rails will likely appear to be faulted by the other methods.
If no fault is found by checking STATUS_VOUT, then check the GPIOs and output voltage for all rails. Check the rails in power-on-sequence order.
Tested: * Verified all automated test cases run successfully.
Change-Id: Ida8732db573013f1b72edac8ed54e3cfc38da146 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
1838dbf9 | 05-Jun-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
Move D-Bus finder class constructors
Three classes in this repository search for D-Bus interfaces and call a callback when interfaces are found: - DBusInterfacesFinder - CompatibleSystemTypesFinder
Move D-Bus finder class constructors
Three classes in this repository search for D-Bus interfaces and call a callback when interfaces are found: - DBusInterfacesFinder - CompatibleSystemTypesFinder - DeviceFinder
The constructors of these three classes may immediately call the callback. For this reason, these constructors should not be used in the initialization list of constructors in other classes. Otherwise the callback may be called before the other class is fully initialized, leading to unpredictable behavior.
Move usage of these three constructors from initialization lists to constructor bodies.
Tested: + CompatibleSystemTypesFinder + Test where compatible system types interface already exists on D-Bus + Verify callback is called immediately + Test where compatible system types interface does not already exist on D-Bus + Verify callback is called later when interface is added + Verify callback is passed the correct data + DeviceFinder + Test where device interface already exists on D-Bus + Verify callback is called immediately + Test where device interface does not already exist on D-Bus + Verify callback is called later when interface is added + Verify callback is passed the correct data
Change-Id: If089f4720012d837b464137b5d3c8fba5dbdc335 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
452de22e | 30-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Create class for finding devices
Create class for finding power sequencer devices in the system.
Tested: * See test plan at https://gist.github.com/smccarney/115a90a26a04e28c226d4e86eaf84cb
pseq: Create class for finding devices
Create class for finding power sequencer devices in the system.
Tested: * See test plan at https://gist.github.com/smccarney/115a90a26a04e28c226d4e86eaf84cbf
Change-Id: I024eb6ccf82ea30c08c558194c19afcba8dcf5a2 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
3a11d632 | 23-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add BMC dump method to Services class
Add a method to the Services class to create a BMC dump.
Tested: * Delete all BMC dumps on system * Verify no BMC dumps exist * Call method to create a B
pseq: Add BMC dump method to Services class
Add a method to the Services class to create a BMC dump.
Tested: * Delete all BMC dumps on system * Verify no BMC dumps exist * Call method to create a BMC dump * Verify dump is created * Expand dump * Verify dump has expected contents * Call method to create a BMC dump again * Verify a second dump is created
Change-Id: Ia4b9753e9ba15ed61bf5446006713875e738b3dd Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
e9144ab4 | 22-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Find config file using new compatible intf
Add support for finding the JSON configuration file using a list of compatible names from the new xyz.openbmc_project.Inventory.Decorator.Compatible
pseq: Find config file using new compatible intf
Add support for finding the JSON configuration file using a list of compatible names from the new xyz.openbmc_project.Inventory.Decorator.Compatible D-Bus interface.
Change-Id: Ic24bafd1d77413015aa8eac7b312dbd604a10995 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
b5451447 | 03-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Create UCD90160Device class
Create the UCD90160Device class in the phosphor-power-sequencer application.
This class represents the UCD90160 power sequencer device.
Change-Id: If61ccef83b5262
pseq: Create UCD90160Device class
Create the UCD90160Device class in the phosphor-power-sequencer application.
This class represents the UCD90160 power sequencer device.
Change-Id: If61ccef83b52625f3ebe9fdea88f5f80a5e61f9f Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
fec38334 | 02-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Create UCD90320Device class
Create the UCD90320Device class in the phosphor-power-sequencer application.
This class represents the UCD90320 power sequencer device.
Change-Id: I697644d4c52019
pseq: Create UCD90320Device class
Create the UCD90320Device class in the phosphor-power-sequencer application.
This class represents the UCD90320 power sequencer device.
Change-Id: I697644d4c52019be045286a5598023602b7fc4d6 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
71d7fe43 | 02-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Create UCD90xDevice class
Create the UCD90xDevice class in the phosphor-power-sequencer application.
This is a base class for the UCD90x family of power sequencer devices.
Tested: * Performe
pseq: Create UCD90xDevice class
Create the UCD90xDevice class in the phosphor-power-sequencer application.
This is a base class for the UCD90x family of power sequencer devices.
Tested: * Performed the following tests on Rainier and Everest systems * MFR_STATUS value obtained successfully * Verified error paths and exceptions thrown
Change-Id: I430ffb95d96e228ce0245ae1c9cb63db72d590c5 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
fe78c178 | 02-May-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Refactor storage of debug data
After a pgood fault is detected, debug data is collected from the power sequencer device. This data is stored in the additional data map used to log an error.
pseq: Refactor storage of debug data
After a pgood fault is detected, debug data is collected from the power sequencer device. This data is stored in the additional data map used to log an error. The data is also written to the journal.
Previously the debug data was stored by one virtual method declared in the StandardDevice class. This method stored all the debug data including the GPIO values.
GPIO values are device-specific, so it is likely that subclasses will need to override this method to provide better formatting of the GPIO values. However, this means they will also be overriding other data storage performed by an ancestor class. This will likely lead to duplicated code.
Refactor the storage of GPIO values to a separate virtual method. This will allow child classes to override just that functionality while inheriting and reusing other data storage from ancestor classes.
Tested: * Verified automated tests ran successfully
Change-Id: I654a6a6a2f5386e06f9e7887cecfbb74523b715f Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
b89395b1 | 23-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Create PMBusDriverDevice class
Create the PMBusDriverDevice class in the phosphor-power-sequencer application.
This class is used for power sequencer devices that are bound to a PMBus device
pseq: Create PMBusDriverDevice class
Create the PMBusDriverDevice class in the phosphor-power-sequencer application.
This class is used for power sequencer devices that are bound to a PMBus device driver. It obtains PMBus information from sysfs/hwmon files created by the driver.
Tested: * Performed all of the following tests on Rainier and Everest systems * Correct sysfs/hwmon files and directories found * GPIO values obtained successfully * STATUS_WORD values obtained successfully * STATUS_VOUT values obtained successfully * READ_VOUT values obtained successfully * VOUT_UV_FAULT_LIMIT values obtained successfully * Mapping built from PMBus PAGE numbers to hwmon file numbers * Verified error paths and exceptions thrown
Change-Id: I2efd3146fa08d3584857c94c2bbbf691b1e2ad7d Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
fc3f31fb | 23-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add Services parameter to getGPIOValues()
Add a Services parameter to the PowerSequencerDevice::getGPIOValues() method in the phosphor-power-sequencer application.
The Services object impleme
pseq: Add Services parameter to getGPIOValues()
Add a Services parameter to the PowerSequencerDevice::getGPIOValues() method in the phosphor-power-sequencer application.
The Services object implements reading GPIO values in the standard way using the libgpiod interface.
Change-Id: Ia6d1f1a0919aa6f45405cbe8375f8cc37800b002 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
472101c5 | 17-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Standard pgood fault detection algorithm
Create a StandardDevice class for the phosphor-power-sequencer application. This class implements the standard pgood (power good) fault detection algo
pseq: Standard pgood fault detection algorithm
Create a StandardDevice class for the phosphor-power-sequencer application. This class implements the standard pgood (power good) fault detection algorithm.
When adding support for a new power sequencer device type, a sub-class of StandardDevice should be created if possible. This will ensure that pgood fault detection works consistently across device types.
Tested: * Verified all new and existing gtests ran successfully
Change-Id: I80c0b36429f1d84fa1e317889803429927797fdc Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
f47a7a72 | 18-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add getRails() method to device hierarchy
Add a method to get the voltage rails that are being enabled/monitored by a power sequencer device.
Tested: * Verified all gtests ran successfully
C
pseq: Add getRails() method to device hierarchy
Add a method to get the voltage rails that are being enabled/monitored by a power sequencer device.
Tested: * Verified all gtests ran successfully
Change-Id: I04b3e9b0854c110858daf30dbf35dc44ab4ade0e Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
fe44e836 | 18-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add format_utils namespace
Add a namespace containing utility functions for formatting data.
The initial utility function converts a span of container elements into a string.
This function i
pseq: Add format_utils namespace
Add a namespace containing utility functions for formatting data.
The initial utility function converts a span of container elements into a string.
This function is a temporary solution until g++ implements the C++23 std::format() support for formatting ranges.
fmt::format() supports formatting spans, but the OpenBMC project is converting to use of std::format() instead.
Tested: * Ran all new and existing gtests.
Change-Id: Ie84b59db35bb49e3f1bb529490aaa05af434b6fd Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
df4e0e7e | 12-Apr-2024 |
Konstantin Aladyshev <aladyshev22@gmail.com> |
meson: Fix local meson build
Currently local meson build fails with the error message: """ In file included from ../phosphor-power-sequencer/src/services.cpp:17: ../phosphor-power-sequencer/src/serv
meson: Fix local meson build
Currently local meson build fails with the error message: """ In file included from ../phosphor-power-sequencer/src/services.cpp:17: ../phosphor-power-sequencer/src/services.hpp:19:10: fatal error: xyz/openbmc_project/Logging/Entry/server.hpp: No such file or directory 19 | #include "xyz/openbmc_project/Logging/Entry/server.hpp" """ Provide missing meson dependency to fix the issue.
Tested: "meson setup build && cd build && meson compile" finishes successfully.
Change-Id: I0c13a6bfc8014d201b2cf6364c87059726d0c464 Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
show more ...
|
24956598 | 19-Feb-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add pgood fault detection to Rail class
Add power good (pgood) fault detection to the Rail class in the phosphor-power-sequencer application.
Implement the checking defined in the JSON config
pseq: Add pgood fault detection to Rail class
Add power good (pgood) fault detection to the Rail class in the phosphor-power-sequencer application.
Implement the checking defined in the JSON configuration file: * Check for fault bits set in STATUS_VOUT * Check for a GPIO with the wrong value * Check if the output voltage (READ_VOUT) is below the undervoltage limit (VOUT_UV_FAULT_LIMIT)
If a pgood fault is detected, capture the relevant debug information such as the rail name and STATUS_WORD value.
Tested: * Added gtests for the new code * Ran all gtests and verified they passed
Change-Id: I09c3ed6c504fe907a7854a4ac462a2bc4a8b806f Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
e4fef0fc | 05-Apr-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Add presence caching to Services
Add caching of hardware presence data to the Services class in the phosphor-power-sequencer application. Obtaining hardware presence from D-Bus is a slow oper
pseq: Add presence caching to Services
Add caching of hardware presence data to the Services class in the phosphor-power-sequencer application. Obtaining hardware presence from D-Bus is a slow operation. During pgood fault isolation, multiple rails may need the same hardware presence information. Cache this information to improve performance.
Provide a method to clear the cached data since it is only valid for a short period of time. For example, power supplies are hot-pluggable, so their presence may change while a system is powered on.
Tested: * BMCServices * createPMBus() * Verify correct sysfs path passed to PMBus constructor * isPresent() * Test where hardware is present * Test where value is not cached * Verify value is cached after data obtained from D-Bus * Test where value is cached * Test where hardware is not present * Test where value is not cached * Verify value is cached after data obtained from D-Bus * Test where value is cached * Test where D-Bus method call fails with an expected exception * Verify false is stored in cache * Verify false is returned * Test where D-Bus method call fails with an unexpected exception * Verify nothing is cached * Verify exception is re-thrown * clearCache() * Verify clears all cached data * MockServices * Verify all methods can be called from an automated test * Run existing automated tests
Change-Id: I3e92be3ded1ed333acbedc970409176cabe98c09 Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|
9ec0d43d | 09-Feb-2024 |
Shawn McCarney <shawnmm@us.ibm.com> |
pseq: Remove output voltage comparison to OV limit
The pgood isolation algorithm for the phosphor-power-sequencer application is being enhanced to handle more error scenarios.
One major enhancement
pseq: Remove output voltage comparison to OV limit
The pgood isolation algorithm for the phosphor-power-sequencer application is being enhanced to handle more error scenarios.
One major enhancement is the option to determine the pgood status of a voltage rail by comparing the output voltage to a fault limit.
The original design was to compare the output voltage to both the overvoltage limit (VOUT_OV_FAULT_LIMIT) and the undervoltage limit (VOUT_UV_FAULT_LIMIT).
After discussions with subject matter experts, the design has been changed to remove the comparison with the overvoltage limit. While this is important status information, it is not necessarily indicative of a pgood fault and could lead to false positives.
Change-Id: I664e4b16fcaf32900798c59aeb4e4ed48db964bf Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
show more ...
|