blob: d163126b6769faacff105112e03833164d24eb26 [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" }
Matthew Barth23a7b2b2022-01-11 15:22:55 -0600385 },
386 {
387 "name": "nvme temps",
388 "interface": "xyz.openbmc_project.Sensor.Value",
389 "property": { "name": "Value" }
390 },
391 {
392 "name": "planar temps",
393 "interface": "xyz.openbmc_project.Sensor.Value",
394 "property": { "name": "Value" }
Matt Spinler9b7fc002022-01-11 15:35:29 -0600395 },
396 {
397 "name": "flett temps",
398 "interface": "xyz.openbmc_project.Sensor.Value",
399 "property": { "name": "Value" }
400 },
401 {
402 "name": "bear lake temps",
403 "interface": "xyz.openbmc_project.Sensor.Value",
404 "property": { "name": "Value" }
Matthew Barthb6f10352021-12-02 17:42:49 -0600405 }
406 ],
407 "triggers": [
408 {
409 "class": "timer",
410 "type": "repeating",
411 "interval": 2000000,
412 "preload_groups": true
413 }
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600414 ],
415 "actions": [
416 {
417 "name": "set_net_increase_target",
418 "groups": [
419 {
420 "name": "proc0 core temps",
421 "interface": "xyz.openbmc_project.Sensor.Value",
422 "property": { "name": "Value" }
423 }
424 ],
425 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
426 "delta": 300
427 },
428 {
429 "name": "set_net_increase_target",
430 "groups": [
431 {
432 "name": "proc1 core temps",
433 "interface": "xyz.openbmc_project.Sensor.Value",
434 "property": { "name": "Value" }
435 }
436 ],
437 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
438 "delta": 300
439 },
440 {
441 "name": "set_net_increase_target",
442 "groups": [
443 {
444 "name": "proc0 ioring temp",
445 "interface": "xyz.openbmc_project.Sensor.Value",
446 "property": { "name": "Value" }
447 }
448 ],
449 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
450 "delta": 300
451 },
452 {
453 "name": "set_net_increase_target",
454 "groups": [
455 {
456 "name": "proc1 ioring temp",
457 "interface": "xyz.openbmc_project.Sensor.Value",
458 "property": { "name": "Value" }
459 }
460 ],
461 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
462 "delta": 300
463 },
464 {
465 "name": "set_net_increase_target",
466 "groups": [
467 {
468 "name": "dram temps",
469 "interface": "xyz.openbmc_project.Sensor.Value",
470 "property": { "name": "Value" }
471 }
472 ],
473 "state": 66.0,
474 "delta": 200
475 },
476 {
477 "name": "set_net_increase_target",
478 "groups": [
479 {
480 "name": "pmic temps",
481 "interface": "xyz.openbmc_project.Sensor.Value",
482 "property": { "name": "Value" }
483 }
484 ],
485 "state": 52.0,
486 "delta": 200
487 },
488 {
489 "name": "set_net_increase_target",
490 "groups": [
491 {
492 "name": "internal memory buffer temps",
493 "interface": "xyz.openbmc_project.Sensor.Value",
494 "property": { "name": "Value" }
495 }
496 ],
497 "state": 72.0,
498 "delta": 200
499 },
500 {
501 "name": "set_net_increase_target",
502 "groups": [
503 {
504 "name": "dram and external memory buffer temps",
505 "interface": "xyz.openbmc_project.Sensor.Value",
506 "property": { "name": "Value" }
507 }
508 ],
509 "state": 55.0,
510 "delta": 200
511 },
512 {
513 "name": "set_net_increase_target",
514 "groups": [
515 {
516 "name": "external memory buffer temps",
517 "interface": "xyz.openbmc_project.Sensor.Value",
518 "property": { "name": "Value" }
519 }
520 ],
521 "state": 55.0,
522 "delta": 200
523 },
524 {
525 "name": "set_net_increase_target",
526 "groups": [
527 {
528 "name": "vdd vrm temps",
529 "interface": "xyz.openbmc_project.Sensor.Value",
530 "property": { "name": "Value" }
531 }
532 ],
533 "state": 82.0,
534 "delta": 300
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600535 },
536 {
Matthew Barth4a7337e2021-12-08 22:03:48 -0600537 "name": "set_net_increase_target",
538 "groups": [
539 {
540 "name": "nvme temps",
541 "interface": "xyz.openbmc_project.Sensor.Value",
542 "property": { "name": "Value" }
543 }
544 ],
545 "state": 58.0,
546 "delta": 200
547 },
548 {
Matthew Barth075fcd82021-12-13 20:56:49 -0600549 "name": "set_net_increase_target",
550 "groups": [
551 {
552 "name": "planar temps",
553 "interface": "xyz.openbmc_project.Sensor.Value",
554 "property": { "name": "Value" }
555 }
556 ],
557 "state": 65.0,
558 "delta": 255
559 },
560 {
Matt Spinler1006fe32022-01-10 14:06:22 -0600561 "name": "set_net_increase_target",
562 "groups": [
563 {
564 "name": "flett temps",
565 "interface": "xyz.openbmc_project.Sensor.Value",
566 "property": { "name": "Value" }
567 }
568 ],
569 "state": 70.0,
570 "delta": 255
571 },
572 {
573 "name": "set_net_increase_target",
574 "groups": [
575 {
576 "name": "bear lake temps",
577 "interface": "xyz.openbmc_project.Sensor.Value",
578 "property": { "name": "Value" }
579 }
580 ],
581 "state": 70.0,
582 "delta": 255
583 },
584 {
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600585 "name": "set_net_decrease_target",
586 "groups": [
587 {
588 "name": "proc0 core temps",
589 "interface": "xyz.openbmc_project.Sensor.Value",
590 "property": { "name": "Value" }
591 }
592 ],
593 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
594 "delta": 30
595 },
596 {
597 "name": "set_net_decrease_target",
598 "groups": [
599 {
600 "name": "proc1 core temps",
601 "interface": "xyz.openbmc_project.Sensor.Value",
602 "property": { "name": "Value" }
603 }
604 ],
605 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
606 "delta": 30
607 },
608 {
609 "name": "set_net_decrease_target",
610 "groups": [
611 {
612 "name": "proc0 ioring temp",
613 "interface": "xyz.openbmc_project.Sensor.Value",
614 "property": { "name": "Value" }
615 }
616 ],
617 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
618 "delta": 30
619 },
620 {
621 "name": "set_net_decrease_target",
622 "groups": [
623 {
624 "name": "proc1 ioring temp",
625 "interface": "xyz.openbmc_project.Sensor.Value",
626 "property": { "name": "Value" }
627 }
628 ],
629 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
630 "delta": 30
631 },
632 {
633 "name": "set_net_decrease_target",
634 "groups": [
635 {
636 "name": "dram temps",
637 "interface": "xyz.openbmc_project.Sensor.Value",
638 "property": { "name": "Value" }
639 }
640 ],
641 "state": 63.0,
642 "delta": 40
643 },
644 {
645 "name": "set_net_decrease_target",
646 "groups": [
647 {
648 "name": "pmic temps",
649 "interface": "xyz.openbmc_project.Sensor.Value",
650 "property": { "name": "Value" }
651 }
652 ],
653 "state": 49.0,
654 "delta": 40
655 },
656 {
657 "name": "set_net_decrease_target",
658 "groups": [
659 {
660 "name": "internal memory buffer temps",
661 "interface": "xyz.openbmc_project.Sensor.Value",
662 "property": { "name": "Value" }
663 }
664 ],
665 "state": 69.0,
666 "delta": 40
667 },
668 {
669 "name": "set_net_decrease_target",
670 "groups": [
671 {
672 "name": "dram and external memory buffer temps",
673 "interface": "xyz.openbmc_project.Sensor.Value",
674 "property": { "name": "Value" }
675 }
676 ],
677 "state": 52.0,
678 "delta": 40
679 },
680 {
681 "name": "set_net_decrease_target",
682 "groups": [
683 {
684 "name": "external memory buffer temps",
685 "interface": "xyz.openbmc_project.Sensor.Value",
686 "property": { "name": "Value" }
687 }
688 ],
689 "state": 52.0,
690 "delta": 40
691 },
692 {
693 "name": "set_net_decrease_target",
694 "groups": [
695 {
696 "name": "vdd vrm temps",
697 "interface": "xyz.openbmc_project.Sensor.Value",
698 "property": { "name": "Value" }
699 }
700 ],
701 "state": 79.0,
702 "delta": 30
Matthew Barthcd8a80f2021-12-08 22:28:38 -0600703 },
704 {
705 "name": "set_net_decrease_target",
706 "groups": [
707 {
708 "name": "nvme temps",
709 "interface": "xyz.openbmc_project.Sensor.Value",
710 "property": { "name": "Value" }
711 }
712 ],
713 "state": 55.0,
714 "delta": 40
Matthew Barth075fcd82021-12-13 20:56:49 -0600715 },
716 {
717 "name": "set_net_decrease_target",
718 "groups": [
719 {
720 "name": "planar temps",
721 "interface": "xyz.openbmc_project.Sensor.Value",
722 "property": { "name": "Value" }
723 }
724 ],
725 "state": 60.0,
726 "delta": 80
Matt Spinler1006fe32022-01-10 14:06:22 -0600727 },
728 {
729 "name": "set_net_decrease_target",
730 "groups": [
731 {
732 "name": "flett temps",
733 "interface": "xyz.openbmc_project.Sensor.Value",
734 "property": { "name": "Value" }
735 }
736 ],
737 "state": 65.0,
738 "delta": 80
739 },
740 {
741 "name": "set_net_decrease_target",
742 "groups": [
743 {
744 "name": "bear lake temps",
745 "interface": "xyz.openbmc_project.Sensor.Value",
746 "property": { "name": "Value" }
747 }
748 ],
749 "state": 65.0,
750 "delta": 80
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600751 }
Matthew Barthb6f10352021-12-02 17:42:49 -0600752 ]
Matthew Barthcf34be22021-12-08 22:53:48 -0600753 },
754 {
755 // Remove NVMe temperature objects from cache when they are removed from
756 // dbus. There's no need to react to their removal.
757 "name": "remove nvme objects",
758 "groups": [
759 {
760 "name": "nvme temps",
761 "interface": "xyz.openbmc_project.Sensor.Value",
762 "property": { "name": "Value" }
763 }
764 ],
765 "triggers": [
766 {
767 "class": "signal",
768 "signal": "interfaces_removed"
769 }
770 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600771 }
Matthew Barthb477a562021-10-19 14:39:19 -0500772]