Implement processor throttle dbus properties
- create processor throttle dbus objects for each OCC (processor)
- update throttle properties based on OCC poll response data
or safe mode status.
Throttle data will be made available via Redfish
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
xyz.openbmc_project.Control.Power.Throttle interface - - -
.ThrottleCauses property as 0 emits-change
.Throttled property b false emits-change
Example of throttled processor (due to a power limit):
as 1 "xyz.openbmc_project.Control.Power.Throttle.ThrottleReasons.PowerLimit"
Change-Id: I0af9d82fab9d694427d0adaa45f4a372d25fbc12
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
diff --git a/occ_manager.cpp b/occ_manager.cpp
index 4833d5a..69d3bc9 100644
--- a/occ_manager.cpp
+++ b/occ_manager.cpp
@@ -114,6 +114,12 @@
}
statusObjCreated = true;
waitingForAllOccActiveSensors = true;
+
+ // Find/update the processor path associated with each OCC
+ for (auto& obj : statusObjects)
+ {
+ obj->updateProcAssociation();
+ }
}
}
@@ -555,6 +561,11 @@
#ifdef POWER10
pmode->updateDbusSafeMode(safeMode);
#endif
+ // Update the processor throttle status on dbus
+ for (auto& obj : statusObjects)
+ {
+ obj->updateThrottle(safeMode, THROTTLED_SAFE);
+ }
}
void Manager::sbeHRESETResult(instanceID instance, bool success)