Fix pldm query to prevent truncating container id
The entity instance map uses a key that combines container_id and
entity_instance. The map used was truncating the key to uint16
(EntityInstance).
Sample trace of the key/values:
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00130000,21897)
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00130001,21899)
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00140000,21901)
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00140001,21903)
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00150000,21905)
openpower-occ-control[4668]: PLDM: fetchEffecterInfo() emplace(key 0x00150001,21907)
This prevented resets for OCCs other than instance 0 / 1.
Tested on Everest HW
Change-Id: I58c3bdd398ea99e3eeaebfe5f4474507ec8b767e
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
diff --git a/pldm.cpp b/pldm.cpp
index 43b86ab..28236c3 100644
--- a/pldm.cpp
+++ b/pldm.cpp
@@ -246,7 +246,7 @@
return;
}
- std::map<EntityInstance, EffecterID> entityInstMap{};
+ std::map<uint32_t, EffecterID> entityInstMap{};
for (auto& pdr : pdrs)
{
auto pdrPtr =
@@ -313,8 +313,10 @@
if (effecterEntry == occInstanceToEffecter.end())
{
log<level::ERR>(
- "pldm: Failed to find a matching effecter for OCC instance",
- entry("OCC_INSTANCE_ID=%d", occInstanceId));
+ fmt::format(
+ "pldm: Failed to find a matching effecter for OCC instance {}",
+ occInstanceId)
+ .c_str());
return;
}