blob: 374291484aff4749202062cb3d15866f4f4f3739 [file] [log] [blame]
Matthew Barthb477a562021-10-19 14:39:19 -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 Barthdc593cb2021-10-19 14:43:41 -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": "fan4 rotor inventory",
52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53 "property": { "name": "Functional" }
54 }
55 ],
56 "triggers": [
57 {
58 "class": "init",
59 "method": "get_properties"
60 },
61 {
62 "class": "signal",
63 "signal": "properties_changed"
64 }
65 ],
66 "actions": [
67 {
68 "name": "count_state_before_target",
69 "count": 1,
70 "state": false,
71 "target": 10000
72 }
73 ]
Matthew Barth09b09e52021-10-28 15:29:13 -050074 },
75 {
76 // Hold fans at the given target when any critical service
77 // is not running for 5 seconds.
78 "name": "service(s) missing",
79 "groups": [
80 {
Matthew Barthf3a6d452021-11-23 14:41:43 -060081 "name": "fan inventory",
82 "interface": "xyz.openbmc_project.Inventory.Item",
83 "property": { "name": "Present" }
84 },
85 {
Matthew Barth09b09e52021-10-28 15:29:13 -050086 "name": "occ objects",
87 "interface": "org.open_power.OCC.Status",
88 "property": { "name": "OccActive" }
89 }
90 ],
91 "triggers": [
92 {
93 "class": "init",
94 "method": "name_has_owner"
95 },
96 {
97 "class": "signal",
98 "signal": "name_owner_changed"
99 }
100 ],
101 "actions": [
102 {
103 "name": "call_actions_based_on_timer",
104 "timer": {
105 "interval": 5000000,
106 "type": "oneshot"
107 },
108 "actions": [
109 {
110 "name": "set_target_on_missing_owner",
111 "groups": [
112 {
113 "name": "fan inventory",
114 "interface": "xyz.openbmc_project.Inventory.Item",
115 "property": { "name": "Present" }
116 },
117 {
118 "name": "occ objects",
119 "interface": "org.open_power.OCC.Status",
120 "property": { "name": "OccActive" }
121 }
122 ],
123 "target": 10000
124 }
125 ]
126 }
127 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500128 },
129 {
130 // Set a fan floor if an OCC isn't active
131 "name": "Non-active OCC(s)",
132 "groups": [
133 {
134 "name": "occ objects",
135 "interface": "org.open_power.OCC.Status",
136 "property": {
137 "name": "OccActive"
138 }
139 }
140 ],
141 "triggers": [
142 {
143 "class": "signal",
144 "signal": "properties_changed"
145 },
146 {
147 "class": "signal",
148 "signal": "interfaces_added"
149 },
150 {
151 "class": "init",
152 "method": "get_properties"
153 }
154 ],
155 "actions": [
156 {
157 "name": "count_state_floor",
158 "count": 1,
159 "state": false,
160 "floor": 10000
161 }
162 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600163 },
164 {
165 "name": "Set Proc 0 Core DVFS parameter",
166 "groups": [
167 {
168 "name": "proc 0 core dvfs temp",
169 "interface": "xyz.openbmc_project.Sensor.Value",
170 "property": { "name": "Value" }
171 }
172 ],
173 "triggers": [
174 {
175 "class": "init",
176 "method": "get_properties"
177 },
178 {
179 "class": "signal",
180 "signal": "interfaces_added"
181 },
182 {
183 "class": "signal",
184 "signal": "properties_changed"
185 }
186 ],
187 "actions": [
188 {
189 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600190 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600191 "modifier": {
192 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600193 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600194 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600195 },
196 {
197 "name": "set_parameter_from_group_max",
198 "parameter_name": "proc_0_core_dvfs_decrease_temp",
199 "modifier": {
200 "operator": "minus",
201 "value": 13
202 }
Matt Spinler323694a2021-11-11 16:03:18 -0600203 }
204 ]
205 },
206 {
207 "name": "Set Proc 1 Core DVFS parameter",
208 "groups": [
209 {
210 "name": "proc 1 core dvfs temp",
211 "interface": "xyz.openbmc_project.Sensor.Value",
212 "property": { "name": "Value" }
213 }
214 ],
215 "triggers": [
216 {
217 "class": "init",
218 "method": "get_properties"
219 },
220 {
221 "class": "signal",
222 "signal": "interfaces_added"
223 },
224 {
225 "class": "signal",
226 "signal": "properties_changed"
227 }
228 ],
229 "actions": [
230 {
231 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600232 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600233 "modifier": {
234 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600235 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600236 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600237 },
238 {
239 "name": "set_parameter_from_group_max",
240 "parameter_name": "proc_1_core_dvfs_decrease_temp",
241 "modifier": {
242 "operator": "minus",
243 "value": 13
244 }
Matt Spinler323694a2021-11-11 16:03:18 -0600245 }
246 ]
247 },
248 {
249 "name": "Set Proc 0 IO Ring DVFS parameter",
250 "groups": [
251 {
252 "name": "proc 0 ioring dvfs temp",
253 "interface": "xyz.openbmc_project.Sensor.Value",
254 "property": { "name": "Value" }
255 }
256 ],
257 "triggers": [
258 {
259 "class": "init",
260 "method": "get_properties"
261 },
262 {
263 "class": "signal",
264 "signal": "interfaces_added"
265 },
266 {
267 "class": "signal",
268 "signal": "properties_changed"
269 }
270 ],
271 "actions": [
272 {
273 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600274 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600275 "modifier": {
276 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600277 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600278 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600279 },
280 {
281 "name": "set_parameter_from_group_max",
282 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
283 "modifier": {
284 "operator": "minus",
285 "value": 13
286 }
Matt Spinler323694a2021-11-11 16:03:18 -0600287 }
288 ]
289 },
290 {
291 "name": "Set Proc 1 IO Ring DVFS parameter",
292 "groups": [
293 {
294 "name": "proc 1 ioring dvfs temp",
295 "interface": "xyz.openbmc_project.Sensor.Value",
296 "property": { "name": "Value" }
297 }
298 ],
299 "triggers": [
300 {
301 "class": "init",
302 "method": "get_properties"
303 },
304 {
305 "class": "signal",
306 "signal": "interfaces_added"
307 },
308 {
309 "class": "signal",
310 "signal": "properties_changed"
311 }
312 ],
313 "actions": [
314 {
315 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600316 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600317 "modifier": {
318 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600319 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600320 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600321 },
322 {
323 "name": "set_parameter_from_group_max",
324 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
325 "modifier": {
326 "operator": "minus",
327 "value": 13
328 }
Matt Spinler323694a2021-11-11 16:03:18 -0600329 }
330 ]
Matthew Barthb6f10352021-12-02 17:42:49 -0600331 },
332 {
333 // Collect group temperatures each iteration the repeating timer expires
334 "name": "Fan control timer loop",
335 "groups": [
336 {
337 "name": "proc0 core temps",
338 "interface": "xyz.openbmc_project.Sensor.Value",
339 "property": { "name": "Value" }
340 },
341 {
342 "name": "proc1 core temps",
343 "interface": "xyz.openbmc_project.Sensor.Value",
344 "property": { "name": "Value" }
345 },
346 {
347 "name": "proc0 ioring temp",
348 "interface": "xyz.openbmc_project.Sensor.Value",
349 "property": { "name": "Value" }
350 },
351 {
352 "name": "proc1 ioring temp",
353 "interface": "xyz.openbmc_project.Sensor.Value",
354 "property": { "name": "Value" }
355 },
356 {
357 "name": "dram temps",
358 "interface": "xyz.openbmc_project.Sensor.Value",
359 "property": { "name": "Value" }
360 },
361 {
362 "name": "pmic temps",
363 "interface": "xyz.openbmc_project.Sensor.Value",
364 "property": { "name": "Value" }
365 },
366 {
367 "name": "internal memory buffer temps",
368 "interface": "xyz.openbmc_project.Sensor.Value",
369 "property": { "name": "Value" }
370 },
371 {
372 "name": "dram and external memory buffer temps",
373 "interface": "xyz.openbmc_project.Sensor.Value",
374 "property": { "name": "Value" }
375 },
376 {
377 "name": "external memory buffer temps",
378 "interface": "xyz.openbmc_project.Sensor.Value",
379 "property": { "name": "Value" }
380 },
381 {
382 "name": "vdd vrm temps",
383 "interface": "xyz.openbmc_project.Sensor.Value",
384 "property": { "name": "Value" }
385 }
386 ],
387 "triggers": [
388 {
389 "class": "timer",
390 "type": "repeating",
391 "interval": 2000000,
392 "preload_groups": true
393 }
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600394 ],
395 "actions": [
396 {
397 "name": "set_net_increase_target",
398 "groups": [
399 {
400 "name": "proc0 core temps",
401 "interface": "xyz.openbmc_project.Sensor.Value",
402 "property": { "name": "Value" }
403 }
404 ],
405 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
406 "delta": 300
407 },
408 {
409 "name": "set_net_increase_target",
410 "groups": [
411 {
412 "name": "proc1 core temps",
413 "interface": "xyz.openbmc_project.Sensor.Value",
414 "property": { "name": "Value" }
415 }
416 ],
417 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
418 "delta": 300
419 },
420 {
421 "name": "set_net_increase_target",
422 "groups": [
423 {
424 "name": "proc0 ioring temp",
425 "interface": "xyz.openbmc_project.Sensor.Value",
426 "property": { "name": "Value" }
427 }
428 ],
429 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
430 "delta": 300
431 },
432 {
433 "name": "set_net_increase_target",
434 "groups": [
435 {
436 "name": "proc1 ioring temp",
437 "interface": "xyz.openbmc_project.Sensor.Value",
438 "property": { "name": "Value" }
439 }
440 ],
441 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
442 "delta": 300
443 },
444 {
445 "name": "set_net_increase_target",
446 "groups": [
447 {
448 "name": "dram temps",
449 "interface": "xyz.openbmc_project.Sensor.Value",
450 "property": { "name": "Value" }
451 }
452 ],
453 "state": 66.0,
454 "delta": 200
455 },
456 {
457 "name": "set_net_increase_target",
458 "groups": [
459 {
460 "name": "pmic temps",
461 "interface": "xyz.openbmc_project.Sensor.Value",
462 "property": { "name": "Value" }
463 }
464 ],
465 "state": 52.0,
466 "delta": 200
467 },
468 {
469 "name": "set_net_increase_target",
470 "groups": [
471 {
472 "name": "internal memory buffer temps",
473 "interface": "xyz.openbmc_project.Sensor.Value",
474 "property": { "name": "Value" }
475 }
476 ],
477 "state": 72.0,
478 "delta": 200
479 },
480 {
481 "name": "set_net_increase_target",
482 "groups": [
483 {
484 "name": "dram and external memory buffer temps",
485 "interface": "xyz.openbmc_project.Sensor.Value",
486 "property": { "name": "Value" }
487 }
488 ],
489 "state": 55.0,
490 "delta": 200
491 },
492 {
493 "name": "set_net_increase_target",
494 "groups": [
495 {
496 "name": "external memory buffer temps",
497 "interface": "xyz.openbmc_project.Sensor.Value",
498 "property": { "name": "Value" }
499 }
500 ],
501 "state": 55.0,
502 "delta": 200
503 },
504 {
505 "name": "set_net_increase_target",
506 "groups": [
507 {
508 "name": "vdd vrm temps",
509 "interface": "xyz.openbmc_project.Sensor.Value",
510 "property": { "name": "Value" }
511 }
512 ],
513 "state": 82.0,
514 "delta": 300
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600515 },
516 {
517 "name": "set_net_decrease_target",
518 "groups": [
519 {
520 "name": "proc0 core temps",
521 "interface": "xyz.openbmc_project.Sensor.Value",
522 "property": { "name": "Value" }
523 }
524 ],
525 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
526 "delta": 30
527 },
528 {
529 "name": "set_net_decrease_target",
530 "groups": [
531 {
532 "name": "proc1 core temps",
533 "interface": "xyz.openbmc_project.Sensor.Value",
534 "property": { "name": "Value" }
535 }
536 ],
537 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
538 "delta": 30
539 },
540 {
541 "name": "set_net_decrease_target",
542 "groups": [
543 {
544 "name": "proc0 ioring temp",
545 "interface": "xyz.openbmc_project.Sensor.Value",
546 "property": { "name": "Value" }
547 }
548 ],
549 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
550 "delta": 30
551 },
552 {
553 "name": "set_net_decrease_target",
554 "groups": [
555 {
556 "name": "proc1 ioring temp",
557 "interface": "xyz.openbmc_project.Sensor.Value",
558 "property": { "name": "Value" }
559 }
560 ],
561 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
562 "delta": 30
563 },
564 {
565 "name": "set_net_decrease_target",
566 "groups": [
567 {
568 "name": "dram temps",
569 "interface": "xyz.openbmc_project.Sensor.Value",
570 "property": { "name": "Value" }
571 }
572 ],
573 "state": 63.0,
574 "delta": 40
575 },
576 {
577 "name": "set_net_decrease_target",
578 "groups": [
579 {
580 "name": "pmic temps",
581 "interface": "xyz.openbmc_project.Sensor.Value",
582 "property": { "name": "Value" }
583 }
584 ],
585 "state": 49.0,
586 "delta": 40
587 },
588 {
589 "name": "set_net_decrease_target",
590 "groups": [
591 {
592 "name": "internal memory buffer temps",
593 "interface": "xyz.openbmc_project.Sensor.Value",
594 "property": { "name": "Value" }
595 }
596 ],
597 "state": 69.0,
598 "delta": 40
599 },
600 {
601 "name": "set_net_decrease_target",
602 "groups": [
603 {
604 "name": "dram and external memory buffer temps",
605 "interface": "xyz.openbmc_project.Sensor.Value",
606 "property": { "name": "Value" }
607 }
608 ],
609 "state": 52.0,
610 "delta": 40
611 },
612 {
613 "name": "set_net_decrease_target",
614 "groups": [
615 {
616 "name": "external memory buffer temps",
617 "interface": "xyz.openbmc_project.Sensor.Value",
618 "property": { "name": "Value" }
619 }
620 ],
621 "state": 52.0,
622 "delta": 40
623 },
624 {
625 "name": "set_net_decrease_target",
626 "groups": [
627 {
628 "name": "vdd vrm temps",
629 "interface": "xyz.openbmc_project.Sensor.Value",
630 "property": { "name": "Value" }
631 }
632 ],
633 "state": 79.0,
634 "delta": 30
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600635 }
Matthew Barthb6f10352021-12-02 17:42:49 -0600636 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600637 }
Matthew Barthb477a562021-10-19 14:39:19 -0500638]