| 9c1455c0 | 12-Jan-2026 |
Andrew Jeffery <andrew@codeconstruct.com.au> |
pldmtool: pldm_bios_cmd: Migrate away from libpldm/utils.h
Be more precise where we can.
Change-Id: Id9d3f7a6140efe668ed61b6ee7b05b6d266687af Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com
pldmtool: pldm_bios_cmd: Migrate away from libpldm/utils.h
Be more precise where we can.
Change-Id: Id9d3f7a6140efe668ed61b6ee7b05b6d266687af Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
show more ...
|
| f9090f37 | 15-Jul-2025 |
Eric Yang <eric.yang.wiwynn@gmail.com> |
pldm: Use std::expected for instance ID allocation
Refactor InstanceIdDb::next() to return std::expected<uint8_t, InstanceIdError> instead of throwing exceptions. With this change, errors are no lon
pldm: Use std::expected for instance ID allocation
Refactor InstanceIdDb::next() to return std::expected<uint8_t, InstanceIdError> instead of throwing exceptions. With this change, errors are no longer thrown by default. Instead, the caller can inspect allocation errors as values, extract the error message or code as needed, or explicitly throw the error further up the stack if appropriate. This approach allows for more flexible and explicit error handling, and reduces reliance on exception-based control flow.
Motivation: This change aims to improve robustness by enabling explicit error handling and reducing the risk of uncaught exceptions that could lead to a pldmd core dump if an instance ID allocation fails for a single EID. Such a core dump could disrupt ongoing operations such as sensor polling or firmware updates for other EIDs
Note: Currently, some call sites are still void-returning functions and cannot propagate errors via return values. As a result, errors from InstanceIdDb::next() are thrown as InstanceIdError at these locations to avoid silent failures. Ideally, it would be preferable for these functions to propagate errors by value (for example, using std::expected), so that errors can always be handled explicitly without relying on exceptions.
Change-Id: I7189e97f206bae1eed5c8db44ebbbcd4393c8f8d Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>
show more ...
|
| 94657ece | 26-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
common/utils: use PDI definitions
Use PDI symbols instead of string literals for property names, method names, signal names and interface names.
Tested: Inspection only.
Change-Id: I6062c13cb68ea5
common/utils: use PDI definitions
Use PDI symbols instead of string literals for property names, method names, signal names and interface names.
Tested: Inspection only.
Change-Id: I6062c13cb68ea5fe62aa3db4ed948964c04e098f Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| 364275c7 | 11-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
BIOSConfig.Manager: use PDI constants
Pull property names, interface name, ... from PDI and drop a bunch of local definitions.
The instance path is still remaining as a local definition, patch [1]
BIOSConfig.Manager: use PDI constants
Pull property names, interface name, ... from PDI and drop a bunch of local definitions.
The instance path is still remaining as a local definition, patch [1] has been raised.
Tested: Inspection only.
References: [1] https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/85118
Change-Id: Ia6601f1fcbe84802820f610ffc717715b85ca7ba Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| 70015ec5 | 11-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
common: use PDI constants for ObjectMapper
Pull the method names from PDI.
Tested: Inspection only.
Change-Id: I9d1dcd297cfb624c592e3cd58bfa877b5dc44530 Signed-off-by: Alexander Hansen <alexander.
common: use PDI constants for ObjectMapper
Pull the method names from PDI.
Tested: Inspection only.
Change-Id: I9d1dcd297cfb624c592e3cd58bfa877b5dc44530 Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| 74bccf6b | 04-Nov-2025 |
Patrick Williams <patrick@stwcx.xyz> |
use sdbusplus unpack syntax
Rather than defining a variable and then reading it from a message, sdbusplus also supports directly unpack-ing from the message. Use this syntax instead as it is more e
use sdbusplus unpack syntax
Rather than defining a variable and then reading it from a message, sdbusplus also supports directly unpack-ing from the message. Use this syntax instead as it is more efficient and succinct.
Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: Ied6b99a59bba28d1b0f2cea7896dbdaccb651f11
show more ...
|
| 97a0f482 | 10-Mar-2025 |
Archana Kakani <archana.kakani@ibm.com> |
oem-ibm: Sync boot side file with bios attributes
This change adds support to update the boot side file to keep it in sync with boot side bios attributes
Change-Id: I2bea293500c69a883f400ddaadc4367
oem-ibm: Sync boot side file with bios attributes
This change adds support to update the boot side file to keep it in sync with boot side bios attributes
Change-Id: I2bea293500c69a883f400ddaadc436705bbe5ab4 Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
show more ...
|
| 3419e180 | 29-Jul-2025 |
Chau Ly <chaul@amperecomputing.com> |
platform-mc: Enlist common types for Terminus
platform_mc::Terminus class is using its own defined types for generic types of PDR fields that are already defined in common/types.hpp. This commit rem
platform-mc: Enlist common types for Terminus
platform_mc::Terminus class is using its own defined types for generic types of PDR fields that are already defined in common/types.hpp. This commit removes those redundantly defined types and enlists common types.
This commit also moves all the newly defined types in terminus.hpp to common/types.hpp for wider uses.
Change-Id: I2f3fb4adc99235aa530eb338787f66eee4bc3aa2 Signed-off-by: Chau Ly <chaul@amperecomputing.com>
show more ...
|
| e7ae804d | 11-Sep-2025 |
Amithash Prasad <amithash@meta.com> |
pldmtool: Use a non-listening transport for command access
pldmtool does not really need to create a listening (bind) transport to do a simple send/receive transaction. Hence refactor PldmTransport
pldmtool: Use a non-listening transport for command access
pldmtool does not really need to create a listening (bind) transport to do a simple send/receive transaction. Hence refactor PldmTransport allowing a user to specify if the required transport is expected to be listening or non-listening and switch pldmtool to use a non-listening transport.
Change-Id: I390298397d71c0ea27234880b844898c7a100ca5 Signed-off-by: Amithash Prasad <amithash@meta.com>
show more ...
|
| 7ad45b40 | 18-Aug-2025 |
Unive Tien <unive.tien.wiwynn@gmail.com> |
fw_update: Introduce FirmwareInventory
Spec reference: [1]
Description: FirmwareInventory is a class that manages all of the D-Bus utilities for the firmware update functionality of each entry, Fir
fw_update: Introduce FirmwareInventory
Spec reference: [1]
Description: FirmwareInventory is a class that manages all of the D-Bus utilities for the firmware update functionality of each entry, FirmwareInventoryManager is used to manage multiple FirmwareInventory instances.
Flow of the routine when one or more firmware device is added: 1. When one or more firmware device is added, the InventoryManager instance will try to create a FirmwareInventory entry for the added device, to accomplish this, it will need to fetch the necessary information from various source (e.g. EM, device descriptors).
2. After the information is gathered, the InventoryManager will try to obtain a Name for each firmware devices, to fit the different platform condition, the name will be reference by the order below: 1. From Entity Manager (EM), if the endpoint has a specific EM configuration with "Name" property listed. 2. From device descriptors, if the device descriptor contains a vendor defined descriptor with "OpenBMC.Name" titled. 3. Spawn a default one, named "Firmware_Device_<Endpoint ID>".
3. The InventoryManager will then invoke `FirmwareInventoryManager::createFirmwareInventory` to create a firmware inventory entry.
Properties managed by firmware Inventory: 1. Version Version object that represents the firmware version 2. Association Association object that represents the associations for the firmware
The object path pattern of the firmware inventory entry is: `/xyz/openbmc_project/software/<BoardName>_<SoftwareName>_<SoftwareID>`
Where: - `<BoardName>` represents the board the device is on. - `<SoftwareName>` is the name of the firmware device obtained from the InventoryManager. - `<SoftwareID>` is a 4-byte random number to help consumer distinguish from the new/old objects of a inventory item. For example: `server_board_slot_1_VR_2603` The new Activation object and its related interfaces needs to resides on a new objectPath, hence the softwareId is appended to the path.
Test results: - Build passed - Successfully create firmware inventory entries on Yosemite V4
[1]: https://github.com/openbmc/docs/blob/master/designs/code-update.md
Change-Id: Idebd7d013c82c60f08309a1860d5de1deeb3829a Signed-off-by: Unive Tien <unive.tien.wiwynn@gmail.com> Signed-off-by: Carter Chen <carter.chen.wiwynn@gmail.com>
show more ...
|
| e26d13fc | 09-Mar-2025 |
Archana Kakani <archana.kakani@ibm.com> |
oem-ibm: Maintain bootside Mapping and Set bios attribute
This commit adds code to maintain a mapping between running, non-running and Temp, Perm side which would help the bmc and remote PLDM termin
oem-ibm: Maintain bootside Mapping and Set bios attribute
This commit adds code to maintain a mapping between running, non-running and Temp, Perm side which would help the bmc and remote PLDM terminus determine at any point in time if the code update was successful and that remote PLDM terminus knows exactly which side it is running on.
In the event the code update failed, then for that case the new added bios attribute "fw_boot_side", which will be set in the event. If BMC tries to boot from the new "Temp" side (other side), and if it fails, then BMC must update fw_boot_side to "Perm".
Change-Id: I9f1edad1e36850742aba88d93f8cf0fc8b9d8c8d Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
show more ...
|
| a206b604 | 21-Aug-2025 |
Pavithra Barithaya <pavithrabarithaya07@gmail.com> |
common: Add util APIs to find all the effecter IDs and PDRs
This util API is used to find all the effecter IDs based on the pldm_entity given. Another util API is added to get all the PDRs based on
common: Add util APIs to find all the effecter IDs and PDRs
This util API is used to find all the effecter IDs based on the pldm_entity given. Another util API is added to get all the PDRs based on the entity type.
Change-Id: I4f5b0ca05dfbad641f1ecfbaec5ebf63f54e500d Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
show more ...
|
| a9eacffb | 24-Aug-2025 |
George Liu <liuxiwei@ieisystem.com> |
utils: optimize split function
- Initialize start to 0 to avoid uninitialized variable warning. - Use emplace_back instead of push_back to construct strings in place, improving performance and red
utils: optimize split function
- Initialize start to 0 to avoid uninitialized variable warning. - Use emplace_back instead of push_back to construct strings in place, improving performance and reducing unnecessary copies.
Change-Id: Ief54025f2114359e55bfc4312adc5220642f14a3 Signed-off-by: George Liu <liuxiwei@ieisystem.com>
show more ...
|
| a8231fd1 | 06-Aug-2025 |
Sora Su <baxiche@gmail.com> |
utils: Add support for D-Bus property signature as
Add support for setting a D-Bus property of type array of strings. This is for recording the boot order on D-Bus.
Change-Id: Iaa22d867501f8a2a905b
utils: Add support for D-Bus property signature as
Add support for setting a D-Bus property of type array of strings. This is for recording the boot order on D-Bus.
Change-Id: Iaa22d867501f8a2a905bad27f869dea2ba0917cd Signed-off-by: Zoey YJ Chung <zoey.yj.chung.wiwynn@gmail.com> Signed-off-by: Sora Su <baxiche@gmail.com>
show more ...
|
| 36ac559e | 16-Jun-2025 |
Pavithra Barithaya <pavithrabarithaya07@gmail.com> |
common: Add util APIs to find all the sensor IDs and PDRs
This util API is used to find all the sensor IDs based on the pldm_entity given. Another util API is added to get all the PDRs based on the
common: Add util APIs to find all the sensor IDs and PDRs
This util API is used to find all the sensor IDs based on the pldm_entity given. Another util API is added to get all the PDRs based on the entity type.
Change-Id: I5a82e64c664b3ff8b981e09abe8ee610ba5ae98a Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
show more ...
|
| 581ac2b4 | 06-Aug-2025 |
Konstantin Aladyshev <aladyshev22@gmail.com> |
common: utils: Don't output error on empty FRU field
According to the 'Platform Level Data Model (PLDM) for FRU Data Specification': """ All strings shall be preceded by a length variable where a le
common: utils: Don't output error on empty FRU field
According to the 'Platform Level Data Model (PLDM) for FRU Data Specification': """ All strings shall be preceded by a length variable where a length of zero indicates that the field is not used. """ This means that the length of zero is legit and the parsing code shouldn't output error on such FRU fields.
Change-Id: I73a72069549fe47071adec50d569122c9a0764d5 Signed-off-by: Konstantin Aladyshev <aladyshev22@gmail.com>
show more ...
|
| 22bcb07d | 11-Jul-2025 |
ManojKiran Eda <manojkiran.eda@gmail.com> |
Revert "pldm: use std::expected for instance ID allocation"
This reverts commit 70262ed7bf854b25d4b65628bc3c892ddfe9380f.
Change-Id: I1f54d6b60bf3cfa9f00764140eec6167e1e182d6 Signed-off-by: Manojki
Revert "pldm: use std::expected for instance ID allocation"
This reverts commit 70262ed7bf854b25d4b65628bc3c892ddfe9380f.
Change-Id: I1f54d6b60bf3cfa9f00764140eec6167e1e182d6 Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com>
show more ...
|
| 70262ed7 | 02-Jul-2025 |
Eric Yang <eric.yang.wiwynn@gmail.com> |
pldm: use std::expected for instance ID allocation
Refactor InstanceIdDb::next() to return std::expected<uint8_t, InstanceIdError> instead of throwing exceptions. This change enables callers to expl
pldm: use std::expected for instance ID allocation
Refactor InstanceIdDb::next() to return std::expected<uint8_t, InstanceIdError> instead of throwing exceptions. This change enables callers to explicitly handle allocation errors via value inspection, rather than relying on exception handling.
This approach prevents core dumps from uncaught exceptions and eliminates the need for pervasive try-catch blocks. Callers can now access the error code and message directly, improving clarity and control of error propagation.
Note: Errors from InstanceIdDb::next() are currently handled via early return, which may silently discard failures. This is a temporary solution; APIs and callers will need to be updated in the future to propagate and handle errors explicitly.
Change-Id: Ibf2e0034b0ee725cb59adfd93b74e48db8c42cba Signed-off-by: Eric Yang <eric.yang.wiwynn@gmail.com>
show more ...
|
| 93ad795e | 15-May-2025 |
Manojkiran Eda <manojkiran.eda@gmail.com> |
utils: Add unit tests for getNumPadBytes()
Change-Id: Iaafdfd4a9851dbf10e72e4a948f8527370634e2c Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com> |
| c40d4a68 | 11-Mar-2025 |
Unive Tien <unive.tien.wiwynn@gmail.com> |
requester: associate Entity Manager configs with MCTP endpoints
Currently, pldmd listens for new MCTP endpoint exposed by mctpd, but they only shows their EID, Network Id, and SupportedMessageTypes,
requester: associate Entity Manager configs with MCTP endpoints
Currently, pldmd listens for new MCTP endpoint exposed by mctpd, but they only shows their EID, Network Id, and SupportedMessageTypes, which cannot fulfill some requirements, e.g., get the device's name or which board it belongs to.
In openbmc, the additional information are exposed by Entity Manager[1][2], so add this ability to `MctpDiscovery, it queries the association between MCTP endpoints and Entity Manager configurations from MCTP Reactor, when a new MCTP endpoint has been register by mctpd.
Added unit test for this commit to validate the association does work, passed.
[1]: https://github.com/openbmc/entity-manager/blob/master/schemas/mctp.json [2]: https://gerrit.openbmc.org/c/openbmc/dbus-sensors/+/69111
Change-Id: Ibf1717f1840e527f21bd8397e747ae121e2dcd25 Signed-off-by: Unive Tien <unive.tien.wiwynn@gmail.com>
show more ...
|
| 5ea72377 | 04-Feb-2025 |
Pavithra Barithaya <pavithrabarithaya07@gmail.com> |
tests: Migrate to placement_new from reinterpret casting
reinterpret_cast is prohibited by the C++ core guidelines because it takes the behavior outside the language definition and gives problems wi
tests: Migrate to placement_new from reinterpret casting
reinterpret_cast is prohibited by the C++ core guidelines because it takes the behavior outside the language definition and gives problems with type safety. Placement-new on the other-hand allows to control the object storage while still properly instantiating an object,keeping the behavior inside the C++ language specification.
Change-Id: Ifab9ea58b932db11d7af0b9def119bed1bfdc44d Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
show more ...
|
| 39d13b77 | 30-Jan-2025 |
Pavithra Barithaya <pavithrabarithaya07@gmail.com> |
common : Migrate to placement_new from reinterpret casting
reinterpret_cast is prohibited by the C++ core guidelines because it takes the behavior outside the language definition and gives problems
common : Migrate to placement_new from reinterpret casting
reinterpret_cast is prohibited by the C++ core guidelines because it takes the behavior outside the language definition and gives problems with type safety. Placement-new on the other-hand allows to control the object storage while still properly instantiating an object,keeping the behavior inside the C++ language specification.
Change-Id: I9147096ac333b2ec02f137b19d13566cc0ede105 Signed-off-by: Pavithra Barithaya <pavithrabarithaya07@gmail.com>
show more ...
|
| 8fa40dbe | 02-Apr-2024 |
Chau Ly <chaul@amperecomputing.com> |
platform-mc: Call MCTP `.Recover` in the request timeout
In the current implementation, `pldmd` will register the request messages to sendRecvPldmMsg. This API will returns the return error code fro
platform-mc: Call MCTP `.Recover` in the request timeout
In the current implementation, `pldmd` will register the request messages to sendRecvPldmMsg. This API will returns the return error code from sendRecvPldmMsgOverMctp directly to the caller but not handle the timeout error code. From Mctp codeConstruct version 2.0 [1], the MCTP D-Bus interface `au.com.codeconstruct.MCTP.Endpoint1` supports `.Recover` method to recover the communication to one terminus. The `pldmd` should call this method in time out.
[1] https://github.com/CodeConstruct/mctp/blob/v2.0/docs/endpoint-recovery.md#recover-method-design-considerations
Supports handling the timeout error code by calling to the `.Recover` method under `au.com.codeconstruct.MCTP.Endpoint1` brought by mctpd. This action will check if the endpoint is still available. pldm will handle accordingly by continuing to communicate or removing the endpoint based on mctpd upcoming behaviors.
Signed-off-by: Chau Ly <chaul@amperecomputing.com> Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com> Change-Id: I71cc33a3630b5adbd65c485fe98148669ce635f6
show more ...
|
| 549e4bc8 | 05-Mar-2024 |
Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com> |
common: utils: Add get ancestors mapper function
Add get ancestors mapper function. A use case is getting an inventory item's parent path for its board or chassis[1][2].
[1]: https://gerrit.openbmc
common: utils: Add get ancestors mapper function
Add get ancestors mapper function. A use case is getting an inventory item's parent path for its board or chassis[1][2].
[1]: https://gerrit.openbmc.org/c/openbmc/pldm/+/73512/46/fw-update/inventory_item_manager.cpp#83 [2]: https://gerrit.openbmc.org/c/openbmc/pldm/+/67050/27/oem/meta/libpldmresponder/oem_meta_file_io_type_post_code.cpp#29
Change-Id: I7a25c8e11f7662fd07147b7da3b8db9fbff5e00e Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
show more ...
|
| 8b169dc5 | 24-Nov-2024 |
Unive Tien <unive.tien.wiwynn@gmail.com> |
fw_update: InventoryManager: Add Downstream Devices Support
In DSP0267_1.1.0, a Firmware Device can supports one or more Downstream Devices to perform get firmware version or firmware update. Add di
fw_update: InventoryManager: Add Downstream Devices Support
In DSP0267_1.1.0, a Firmware Device can supports one or more Downstream Devices to perform get firmware version or firmware update. Add discovery of Downstream Devices, query the Downstream Devices Descriptor if the Firmware Device support it.
The code is developed based on DSP0267_1.1.0 Section 10.3 QueryDownstreamDevices command format, Section 10.4 QueryDownstreamIdentifiers command format.
Tested: Add unit tests for the new command handlers.
Change-Id: Iad28b898b5a0799b2b145d38958bba78e9719f4e Signed-off-by: Unive Tien <unive.tien.wiwynn@gmail.com>
show more ...
|