blob: 04cca15b3a4cec922064cec935dd6ea55606fe2c [file] [log] [blame]
Matthew Barth23dcffd2021-10-19 13:36:51 -05001[
2 {
3 // Hold fans at the given target when a number of fans are missing.
4 "name": "fan(s) missing",
5 "groups": [
6 {
7 "name": "fan inventory",
8 "interface": "xyz.openbmc_project.Inventory.Item",
9 "property": { "name": "Present" }
10 }
11 ],
12 "triggers": [
13 {
14 "class": "init",
15 "method": "get_properties"
16 },
17 {
18 "class": "signal",
19 "signal": "properties_changed"
20 }
21 ],
22 "actions": [
23 {
24 "name": "count_state_before_target",
25 "count": 1,
26 "state": false,
27 "target": 10000
28 }
29 ]
Matthew Barth322dbc52021-10-19 13:39:04 -050030 },
31 {
32 // Hold fans at the given target when a number of rotors are nonfunctional.
33 "name": "fan rotor(s) faulted",
34 "groups": [
35 {
36 "name": "fan0 rotor inventory",
37 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
38 "property": { "name": "Functional" }
39 },
40 {
41 "name": "fan1 rotor inventory",
42 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
43 "property": { "name": "Functional" }
44 },
45 {
46 "name": "fan2 rotor inventory",
47 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
48 "property": { "name": "Functional" }
49 },
50 {
51 "name": "fan3 rotor inventory",
52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53 "property": { "name": "Functional" }
54 },
55 {
56 "name": "fan4 rotor inventory",
57 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
58 "property": { "name": "Functional" }
59 },
60 {
61 "name": "fan5 rotor inventory",
62 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
63 "property": { "name": "Functional" }
64 }
65 ],
66 "triggers": [
67 {
68 "class": "init",
69 "method": "get_properties"
70 },
71 {
72 "class": "signal",
73 "signal": "properties_changed"
74 }
75 ],
76 "actions": [
77 {
78 "name": "count_state_before_target",
79 "count": 1,
80 "state": false,
81 "target": 10000
82 }
83 ]
Matthew Barth09b09e52021-10-28 15:29:13 -050084 },
85 {
86 // Hold fans at the given target when any critical service
87 // is not running for 5 seconds.
88 "name": "service(s) missing",
89 "groups": [
90 {
Matthew Barthf3a6d452021-11-23 14:41:43 -060091 "name": "fan inventory",
92 "interface": "xyz.openbmc_project.Inventory.Item",
93 "property": { "name": "Present" }
94 },
95 {
Matthew Barth09b09e52021-10-28 15:29:13 -050096 "name": "occ objects",
97 "interface": "org.open_power.OCC.Status",
98 "property": { "name": "OccActive" }
99 }
100 ],
101 "triggers": [
102 {
103 "class": "init",
104 "method": "name_has_owner"
105 },
106 {
107 "class": "signal",
108 "signal": "name_owner_changed"
109 }
110 ],
111 "actions": [
112 {
113 "name": "call_actions_based_on_timer",
114 "timer": {
115 "interval": 5000000,
116 "type": "oneshot"
117 },
118 "actions": [
119 {
120 "name": "set_target_on_missing_owner",
121 "groups": [
122 {
123 "name": "fan inventory",
124 "interface": "xyz.openbmc_project.Inventory.Item",
125 "property": { "name": "Present" }
126 },
127 {
128 "name": "occ objects",
129 "interface": "org.open_power.OCC.Status",
130 "property": { "name": "OccActive" }
131 }
132 ],
133 "target": 10000
134 }
135 ]
136 }
137 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500138 },
139 {
140 // Set a fan floor if an OCC isn't active
141 "name": "Non-active OCCs",
142 "groups": [
143 {
144 "name": "occ objects",
145 "interface": "org.open_power.OCC.Status",
146 "property": {
147 "name": "OccActive"
148 }
149 }
150 ],
151 "triggers": [
152 {
153 "class": "signal",
154 "signal": "properties_changed"
155 },
156 {
157 "class": "signal",
158 "signal": "interfaces_added"
159 },
160 {
161 "class": "init",
162 "method": "get_properties"
163 }
164 ],
165 "actions": [
166 {
167 "name": "count_state_floor",
168 "count": 1,
169 "state": false,
170 "floor": 10000
171 }
172 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600173 },
174 {
175 "name": "Set Proc 0 Core DVFS parameter",
176 "groups": [
177 {
178 "name": "proc 0 core dvfs temp",
179 "interface": "xyz.openbmc_project.Sensor.Value",
180 "property": { "name": "Value" }
181 }
182 ],
183 "triggers": [
184 {
185 "class": "init",
186 "method": "get_properties"
187 },
188 {
189 "class": "signal",
190 "signal": "interfaces_added"
191 },
192 {
193 "class": "signal",
194 "signal": "properties_changed"
195 }
196 ],
197 "actions": [
198 {
199 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600200 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600201 "modifier": {
202 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600203 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600204 }
205 }
206 ]
207 },
208 {
209 "name": "Set Proc 1 Core DVFS parameter",
210 "groups": [
211 {
212 "name": "proc 1 core dvfs temp",
213 "interface": "xyz.openbmc_project.Sensor.Value",
214 "property": { "name": "Value" }
215 }
216 ],
217 "triggers": [
218 {
219 "class": "init",
220 "method": "get_properties"
221 },
222 {
223 "class": "signal",
224 "signal": "interfaces_added"
225 },
226 {
227 "class": "signal",
228 "signal": "properties_changed"
229 }
230 ],
231 "actions": [
232 {
233 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600234 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600235 "modifier": {
236 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600237 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600238 }
239 }
240 ]
241 },
242 {
243 "name": "Set Proc 2 Core DVFS parameter",
244 "groups": [
245 {
246 "name": "proc 2 core dvfs temp",
247 "interface": "xyz.openbmc_project.Sensor.Value",
248 "property": { "name": "Value" }
249 }
250 ],
251 "triggers": [
252 {
253 "class": "init",
254 "method": "get_properties"
255 },
256 {
257 "class": "signal",
258 "signal": "interfaces_added"
259 },
260 {
261 "class": "signal",
262 "signal": "properties_changed"
263 }
264 ],
265 "actions": [
266 {
267 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600268 "parameter_name": "proc_2_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600269 "modifier": {
270 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600271 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600272 }
273 }
274 ]
275 },
276 {
277 "name": "Set Proc 3 Core DVFS parameter",
278 "groups": [
279 {
280 "name": "proc 3 core dvfs temp",
281 "interface": "xyz.openbmc_project.Sensor.Value",
282 "property": { "name": "Value" }
283 }
284 ],
285 "triggers": [
286 {
287 "class": "init",
288 "method": "get_properties"
289 },
290 {
291 "class": "signal",
292 "signal": "interfaces_added"
293 },
294 {
295 "class": "signal",
296 "signal": "properties_changed"
297 }
298 ],
299 "actions": [
300 {
301 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600302 "parameter_name": "proc_3_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600303 "modifier": {
304 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600305 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600306 }
307 }
308 ]
309 },
310 {
311 "name": "Set Proc 0 IO Ring DVFS parameter",
312 "groups": [
313 {
314 "name": "proc 0 ioring dvfs temp",
315 "interface": "xyz.openbmc_project.Sensor.Value",
316 "property": { "name": "Value" }
317 }
318 ],
319 "triggers": [
320 {
321 "class": "init",
322 "method": "get_properties"
323 },
324 {
325 "class": "signal",
326 "signal": "interfaces_added"
327 },
328 {
329 "class": "signal",
330 "signal": "properties_changed"
331 }
332 ],
333 "actions": [
334 {
335 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600336 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600337 "modifier": {
338 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600339 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600340 }
341 }
342 ]
343 },
344
345 {
346 "name": "Set Proc 1 IO Ring DVFS parameter",
347 "groups": [
348 {
349 "name": "proc 1 ioring dvfs temp",
350 "interface": "xyz.openbmc_project.Sensor.Value",
351 "property": { "name": "Value" }
352 }
353 ],
354 "triggers": [
355 {
356 "class": "init",
357 "method": "get_properties"
358 },
359 {
360 "class": "signal",
361 "signal": "interfaces_added"
362 },
363 {
364 "class": "signal",
365 "signal": "properties_changed"
366 }
367 ],
368 "actions": [
369 {
370 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600371 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600372 "modifier": {
373 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600374 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600375 }
376 }
377 ]
378 },
379 {
380 "name": "Set Proc 2 IO Ring DVFS parameter",
381 "groups": [
382 {
383 "name": "proc 2 ioring dvfs temp",
384 "interface": "xyz.openbmc_project.Sensor.Value",
385 "property": { "name": "Value" }
386 }
387 ],
388 "triggers": [
389 {
390 "class": "init",
391 "method": "get_properties"
392 },
393 {
394 "class": "signal",
395 "signal": "interfaces_added"
396 },
397 {
398 "class": "signal",
399 "signal": "properties_changed"
400 }
401 ],
402 "actions": [
403 {
404 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600405 "parameter_name": "proc_2_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600406 "modifier": {
407 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600408 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600409 }
410 }
411 ]
412 },
413 {
414 "name": "Set Proc 3 IO Ring DVFS parameter",
415 "groups": [
416 {
417 "name": "proc 3 ioring dvfs temp",
418 "interface": "xyz.openbmc_project.Sensor.Value",
419 "property": { "name": "Value" }
420 }
421 ],
422 "triggers": [
423 {
424 "class": "init",
425 "method": "get_properties"
426 },
427 {
428 "class": "signal",
429 "signal": "interfaces_added"
430 },
431 {
432 "class": "signal",
433 "signal": "properties_changed"
434 }
435 ],
436 "actions": [
437 {
438 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600439 "parameter_name": "proc_3_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600440 "modifier": {
441 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600442 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600443 }
444 }
445 ]
446 }
Matthew Barth23dcffd2021-10-19 13:36:51 -0500447]