| # Witherspoon thermal policy for PDM. |
| # |
| # Shut down a Witherspoon system if more than three POWER9 cores |
| # have a temperature greater than 115 degrees Celcius. |
| |
| |
| - name: core sensors |
| description: > |
| 'Witherspoon has two POWER9 chips with 24 cores each.' |
| class: group |
| group: path |
| members: |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp |
| - meta: SENSOR |
| path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp |
| |
| - name: core temp |
| description: > |
| 'Monitor the temperature of each core.' |
| class: group |
| group: property |
| type: int64 |
| members: |
| - interface: xyz.openbmc_project.Sensor.Value |
| meta: TEMP |
| property: Value |
| |
| - name: watch core temps |
| description: > |
| 'Trigger logic on core temp changes.' |
| class: watch |
| watch: property |
| paths: core sensors |
| properties: core temp |
| callback: check temps |
| |
| - name: check temps |
| description: > |
| 'If this condition passes at least three cores are running |
| too hot. Shut the system down.' |
| class: condition |
| condition: count |
| paths: core sensors |
| properties: core temp |
| callback: log and shutdown |
| countop: '>=' |
| countbound: 3 |
| op: '>=' |
| bound: 115000 |
| |
| - name: log and shutdown |
| description: > |
| 'Shut the system down and log an event.' |
| class: callback |
| callback: group |
| members: |
| - shutdown |
| - log |
| - create criticalhigh error |
| - create shutdown error |
| |
| - name: shutdown |
| description: > |
| 'Shut down the system.' |
| class: callback |
| callback: method |
| service: org.freedesktop.systemd1 |
| path: /org/freedesktop/systemd1 |
| interface: org.freedesktop.systemd1.Manager |
| method: StartUnit |
| args: |
| - value: obmc-host-shutdown@0.target |
| type: string |
| - value: replace |
| type: string |
| |
| - name: log |
| description: > |
| 'Log a shutdown event to the systemd journal.' |
| class: callback |
| callback: journal |
| paths: core sensors |
| properties: core temp |
| severity: ERR |
| message: The system is too hot. Shutting down. |
| |
| - name: create criticalhigh error |
| description: > |
| 'Create a CriticalHigh Error log.' |
| class: callback |
| callback: elog |
| paths: core sensors |
| properties: core temp |
| error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh |
| metadata: |
| - name: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_TYPE |
| value: temperature |
| type: string |
| |
| - name: create shutdown error |
| description: > |
| 'Create a SystemShutdown Error log.' |
| class: callback |
| callback: elog |
| paths: core sensors |
| properties: core temp |
| error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Processor |