Add SensorPurpose for total_power sensor

Change will allow users to find the total system/chassis power sensor by
querying the SensorPurpose for TotalPower.
The total_power chassis association is being removed, since the
SensorPurpose will be used in its place.

Tested on Rainier.

'''
$ busctl call xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/object_mapper xyz.openbmc_project.ObjectMapper GetSubTree sias "/" 0 1 "xyz.openbmc_project.Sensor.Purpose"

a{sa{sas}} 1 "/xyz/openbmc_project/sensors/power/total_power" 1 "org.open_power.OCC.Control" 6 "org.freedesktop.DBus.Introspectable" "org.freedesktop.DBus.Peer" "org.freedesktop.DBus.Properties" "xyz.openbmc_project.Sensor.Purpose" "xyz.openbmc_project.Sensor.Value" "xyz.openbmc_project.State.Decorator.OperationalStatus"

$ busctl -l introspect org.open_power.OCC.Control /xyz/openbmc_project/sensors/power/total_power

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.Association.Definitions           interface -         -                                                                                                                                                 -
.Associations                                         property  a(sss)    1 "chassis" "all_sensors" "/xyz/openbmc_project/inventory/system/chassis" emits-change writable
B
xyz.openbmc_project.Sensor.Purpose                    interface -         -                                                                                                                                                 -
.Purpose                                              property  as        1 "xyz.openbmc_project.Sensor.Purpose.SensorPurpose.TotalPower"                                                                                   emits-change
xyz.openbmc_project.Sensor.Value                      interface -         -                                                                                                                                                 -
.MaxValue                                             property  d         inf                                                                                                                                               emits-change writable
.MinValue                                             property  d         -inf                                                                                                                                              emits-change writable
.Unit                                                 property  s         "xyz.openbmc_project.Sensor.Value.Unit.Watts"                                                                                                     emits-change writable
.Value                                                property  d         419                                                                                                                                               emits-change writable
xyz.openbmc_project.State.Decorator.OperationalStatus interface -         -                                                                                                                                                 -
.Functional                                           property  b         true                                                                                                                                              emits-change writable
'''

Change-Id: I414c01e81cbb965d9ab68bafa06565d997abbe0f
Signed-off-by: Chris Cain <cjcain@us.ibm.com>
3 files changed
tree: 360d2bdd8ae01b7529f8f1a98f6fc8a5fc0bc121
  1. example/
  2. service_files/
  3. subprojects/
  4. test/
  5. .clang-format
  6. .gitignore
  7. app.cpp
  8. file.hpp
  9. i2c_occ.cpp
  10. i2c_occ.hpp
  11. LICENSE
  12. meson.build
  13. meson.options
  14. occ-active.sh
  15. occ_command.cpp
  16. occ_command.hpp
  17. occ_dbus.cpp
  18. occ_dbus.hpp
  19. occ_device.cpp
  20. occ_device.hpp
  21. occ_errors.cpp
  22. occ_errors.hpp
  23. occ_events.hpp
  24. occ_ffdc.cpp
  25. occ_ffdc.hpp
  26. occ_manager.cpp
  27. occ_manager.hpp
  28. occ_pass_through.cpp
  29. occ_pass_through.hpp
  30. occ_presence.cpp
  31. occ_presence.hpp
  32. occ_sensor.mako.hpp
  33. occ_status.cpp
  34. occ_status.hpp
  35. OWNERS
  36. pldm.cpp
  37. pldm.hpp
  38. powercap.cpp
  39. powercap.hpp
  40. powermode.cpp
  41. powermode.hpp
  42. README.md
  43. sensor_gen.py
  44. utils.cpp
  45. utils.hpp
README.md

OpenPOWER OCC Control Service

This service will handle communications to the On-Chip Controller (OCC) on Power processors. The OCC provides processor and memory temperatures, power readings, power cap support, system power mode support, and idle power saver support. OCC Control will be interfacing with the OCC to collect the temperatures and power readings, updating the system power mode, setting power caps, and idle power save parameters.

The service is started automatically when the BMC is started.

Build Project

This project can be built with meson. The typical meson workflow is: meson builddir && ninja -C builddir.

Server

The server will start automatically after BMC is powered on.

Server status: systemctl status org.open_power.OCC.Control.service

To restart the service: systemctl restart org.open_power.OCC.Control.service

Configuration

Service files are located in service_files subdirectory.

References

Power10

IBM EnergyScale for Power10 Processor-Based Systems whitepaper: https://www.ibm.com/downloads/cas/E7RL9N4E

OCC Firmware Interface Spec for Power10: https://github.com/open-power/docs/blob/P10/occ/OCC_P10_FW_Interfaces_v1_17.pdf

OCC Firmware: https://github.com/open-power/occ/tree/master-p10

Power9

IBM EnergyScale for POWER9 Processor-Based Systems: https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?htmlfid=49019149USEN&

OCC Firmware Interface Spec for POWER9: https://github.com/open-power/docs/blob/P9/occ/OCC_P9_FW_Interfaces.pdf