1# Machine thermal policy for PDM.
2#
3# Shut down the system if more than three cores
4# have a temperature greater than 115 degrees Celcius.
5
6
7- name: core sensors
8  description: >
9    'The machine has two processor chips with 24 cores each.'
10  class: group
11  group: path
12  members:
13    - meta: SENSOR
14      path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp
15    - meta: SENSOR
16      path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp
17    - meta: SENSOR
18      path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp
19    - meta: SENSOR
20      path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp
21    - meta: SENSOR
22      path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp
23    - meta: SENSOR
24      path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp
25    - meta: SENSOR
26      path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp
27    - meta: SENSOR
28      path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp
29    - meta: SENSOR
30      path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp
31    - meta: SENSOR
32      path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp
33    - meta: SENSOR
34      path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp
35    - meta: SENSOR
36      path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp
37    - meta: SENSOR
38      path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp
39    - meta: SENSOR
40      path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp
41    - meta: SENSOR
42      path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp
43    - meta: SENSOR
44      path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp
45    - meta: SENSOR
46      path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp
47    - meta: SENSOR
48      path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp
49    - meta: SENSOR
50      path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp
51    - meta: SENSOR
52      path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp
53    - meta: SENSOR
54      path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp
55    - meta: SENSOR
56      path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp
57    - meta: SENSOR
58      path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp
59    - meta: SENSOR
60      path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp
61    - meta: SENSOR
62      path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp
63    - meta: SENSOR
64      path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp
65    - meta: SENSOR
66      path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp
67    - meta: SENSOR
68      path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp
69    - meta: SENSOR
70      path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp
71    - meta: SENSOR
72      path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp
73    - meta: SENSOR
74      path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp
75    - meta: SENSOR
76      path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp
77    - meta: SENSOR
78      path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp
79    - meta: SENSOR
80      path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp
81    - meta: SENSOR
82      path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp
83    - meta: SENSOR
84      path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp
85    - meta: SENSOR
86      path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp
87    - meta: SENSOR
88      path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp
89    - meta: SENSOR
90      path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp
91    - meta: SENSOR
92      path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp
93    - meta: SENSOR
94      path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp
95    - meta: SENSOR
96      path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp
97    - meta: SENSOR
98      path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp
99    - meta: SENSOR
100      path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp
101    - meta: SENSOR
102      path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp
103    - meta: SENSOR
104      path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp
105    - meta: SENSOR
106      path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp
107    - meta: SENSOR
108      path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp
109
110- name: core temp
111  description: >
112    'Monitor the temperature of each core.'
113  class: group
114  group: property
115  type: int64
116  members:
117    - interface: xyz.openbmc_project.Sensor.Value
118      meta: TEMP
119      property: Value
120
121- name: watch core temps
122  description: >
123    'Trigger logic on core temp changes.'
124  class: watch
125  watch: property
126  paths: core sensors
127  properties: core temp
128  callback: check temps
129
130- name: check temps
131  description: >
132    'If this condition passes at least three cores are running
133    too hot.  Shut the system down.'
134  class: condition
135  condition: count
136  paths: core sensors
137  properties: core temp
138  callback: log and shutdown
139  countop: '>='
140  countbound: 3
141  op: '>='
142  bound: 115000
143  oneshot: true
144
145- name: log and shutdown
146  description: >
147    'Shut the system down and log an event.'
148  class: callback
149  callback: group
150  members:
151    - shutdown
152    - create criticalhigh error
153    - create shutdown error
154
155- name: shutdown
156  description: >
157    'Shut down the system.'
158  class: callback
159  callback: method
160  service: org.freedesktop.systemd1
161  path: /org/freedesktop/systemd1
162  interface: org.freedesktop.systemd1.Manager
163  method: StartUnit
164  args:
165    - value: obmc-chassis-hard-poweroff@0.target
166      type: string
167    - value: replace
168      type: string
169
170- name: create criticalhigh error
171  description: >
172    'Create a CriticalHigh Error log.'
173  class: callback
174  callback: elog_with_metadata
175  paths: core sensors
176  properties: core temp
177  error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh
178  metadata: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_DATA
179
180- name: create shutdown error
181  description: >
182    'Create a SystemShutdown Error log.'
183  class: callback
184  callback: elog
185  paths: core sensors
186  properties: core temp
187  error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Processor
188