blob: 73cfa0db3ebcbec5c277ee82ef85c9e962a5212e [file] [log] [blame]
Matthew Barthb477a562021-10-19 14:39:19 -05001[
Patrick Williamsa49e3f12022-12-08 06:12:40 -06002 {
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": 10400
28 }
Matthew Barth3fefda52022-01-21 16:11:33 -060029 ]
Patrick Williamsa49e3f12022-12-08 06:12:40 -060030 },
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": 10400
72 }
73 ]
74 },
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 {
81 "name": "fan inventory",
82 "interface": "xyz.openbmc_project.Inventory.Item",
83 "property": { "name": "Present" }
84 },
85 {
86 "name": "occ objects",
87 "interface": "org.open_power.OCC.Status",
88 "property": { "name": "OccActive" }
89 },
90 {
91 "name": "nvme temps",
92 "interface": "xyz.openbmc_project.Sensor.Value",
93 "property": { "name": "Value" }
94 },
95 {
96 "name": "planar temps",
97 "interface": "xyz.openbmc_project.Sensor.Value",
98 "property": { "name": "Value" }
99 },
100 {
101 "name": "flett temps",
102 "interface": "xyz.openbmc_project.Sensor.Value",
103 "property": { "name": "Value" }
104 },
105 {
106 "name": "pcie cable card temps",
107 "interface": "xyz.openbmc_project.Sensor.Value",
108 "property": { "name": "Value" }
109 },
110 {
111 "name": "ambient temp",
112 "interface": "xyz.openbmc_project.Sensor.Value",
113 "property": { "name": "Value" }
114 }
115 ],
116 "triggers": [
117 {
118 "class": "init",
119 "method": "name_has_owner"
120 },
121 {
122 "class": "signal",
123 "signal": "name_owner_changed"
124 }
125 ],
126 "actions": [
127 {
128 "name": "call_actions_based_on_timer",
129 "timer": {
130 "interval": 5000000,
131 "type": "oneshot"
132 },
133 "actions": [
134 {
135 "name": "set_target_on_missing_owner",
136 "groups": [
137 {
138 "name": "fan inventory",
139 "interface": "xyz.openbmc_project.Inventory.Item",
140 "property": { "name": "Present" }
141 },
142 {
143 "name": "occ objects",
144 "interface": "org.open_power.OCC.Status",
145 "property": { "name": "OccActive" }
146 },
147 {
148 "name": "nvme temps",
149 "interface": "xyz.openbmc_project.Sensor.Value",
150 "property": { "name": "Value" }
151 },
152 {
153 "name": "planar temps",
154 "interface": "xyz.openbmc_project.Sensor.Value",
155 "property": { "name": "Value" }
156 },
157 {
158 "name": "flett temps",
159 "interface": "xyz.openbmc_project.Sensor.Value",
160 "property": { "name": "Value" }
161 },
162 {
163 "name": "pcie cable card temps",
164 "interface": "xyz.openbmc_project.Sensor.Value",
165 "property": { "name": "Value" }
166 },
167 {
168 "name": "ambient temp",
169 "interface": "xyz.openbmc_project.Sensor.Value",
170 "property": { "name": "Value" }
171 }
172 ],
173 "target": 10400
174 }
175 ]
176 }
177 ]
178 },
179 {
180 // Set a fan floor if an OCC isn't active
181 "name": "Non-active OCC(s)",
182 "groups": [
183 {
184 "name": "occ objects",
185 "interface": "org.open_power.OCC.Status",
186 "property": {
187 "name": "OccActive"
188 }
189 }
190 ],
191 "triggers": [
192 {
193 "class": "signal",
194 "signal": "properties_changed"
195 },
196 {
197 "class": "signal",
198 "signal": "interfaces_added"
199 },
200 {
201 "class": "init",
202 "method": "get_properties"
203 }
204 ],
205 "actions": [
206 {
207 "name": "count_state_floor",
208 "count": 1,
209 "state": false,
210 "floor": 10400
211 }
212 ]
213 },
214 {
215 // Set a raised fan floor when any temperature sensor is nonfunctional
216 "name": "Nonfunctional temperature sensors",
217 "groups": [
218 {
219 "name": "proc0 core temps",
220 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
221 "property": { "name": "Functional" }
222 },
223 {
224 "name": "proc1 core temps",
225 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
226 "property": { "name": "Functional" }
227 },
228 {
229 "name": "proc0 ioring temp",
230 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
231 "property": { "name": "Functional" }
232 },
233 {
234 "name": "proc1 ioring temp",
235 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
236 "property": { "name": "Functional" }
237 },
238 {
239 "name": "dram temps",
240 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
241 "property": { "name": "Functional" }
242 },
243 {
244 "name": "pmic temps",
245 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
246 "property": { "name": "Functional" }
247 },
248 {
249 "name": "internal memory buffer temps",
250 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
251 "property": { "name": "Functional" }
252 },
253 {
254 "name": "dram and external memory buffer temps",
255 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
256 "property": { "name": "Functional" }
257 },
258 {
259 "name": "external memory buffer temps",
260 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
261 "property": { "name": "Functional" }
262 },
263 {
264 "name": "vdd vrm temps",
265 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
266 "property": { "name": "Functional" }
267 },
268 {
269 "name": "nvme temps",
270 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
271 "property": { "name": "Functional" }
272 },
273 {
274 "name": "planar temps",
275 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
276 "property": { "name": "Functional" }
277 },
278 {
279 "name": "flett temps",
280 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
281 "property": { "name": "Functional" }
282 },
283 {
284 "name": "pcie cable card temps",
285 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
286 "property": { "name": "Functional" }
287 },
288 {
289 "name": "ambient temp",
290 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
291 "property": { "name": "Functional" }
292 }
293 ],
294 "triggers": [
295 {
296 "class": "signal",
297 "signal": "properties_changed"
298 },
299 {
300 "class": "signal",
301 "signal": "interfaces_added"
302 },
303 {
304 "class": "signal",
305 "signal": "interfaces_removed"
306 },
307 {
308 "class": "init",
309 "method": "get_properties"
310 }
311 ],
312 "actions": [
313 {
314 "name": "count_state_floor",
315 "count": 1,
316 "state": false,
317 "floor": 10400
318 }
319 ]
320 },
321 {
322 "name": "Set Proc 0 Core DVFS parameter",
323 "groups": [
324 {
325 "name": "proc 0 core dvfs temp",
326 "interface": "xyz.openbmc_project.Sensor.Value",
327 "property": { "name": "Value" }
328 }
329 ],
330 "triggers": [
331 {
332 "class": "init",
333 "method": "get_properties"
334 },
335 {
336 "class": "signal",
337 "signal": "interfaces_added"
338 },
339 {
340 "class": "signal",
341 "signal": "properties_changed"
342 }
343 ],
344 "actions": [
345 {
346 "name": "set_parameter_from_group_max",
347 "parameter_name": "proc_0_core_dvfs_increase_temp",
348 "modifier": {
349 "operator": "minus",
350 "value": 10
351 }
352 },
353 {
354 "name": "set_parameter_from_group_max",
355 "parameter_name": "proc_0_core_dvfs_decrease_temp",
356 "modifier": {
357 "operator": "minus",
358 "value": 13
359 }
360 }
361 ]
362 },
363 {
364 "name": "Set Proc 1 Core DVFS parameter",
365 "groups": [
366 {
367 "name": "proc 1 core dvfs temp",
368 "interface": "xyz.openbmc_project.Sensor.Value",
369 "property": { "name": "Value" }
370 }
371 ],
372 "triggers": [
373 {
374 "class": "init",
375 "method": "get_properties"
376 },
377 {
378 "class": "signal",
379 "signal": "interfaces_added"
380 },
381 {
382 "class": "signal",
383 "signal": "properties_changed"
384 }
385 ],
386 "actions": [
387 {
388 "name": "set_parameter_from_group_max",
389 "parameter_name": "proc_1_core_dvfs_increase_temp",
390 "modifier": {
391 "operator": "minus",
392 "value": 10
393 }
394 },
395 {
396 "name": "set_parameter_from_group_max",
397 "parameter_name": "proc_1_core_dvfs_decrease_temp",
398 "modifier": {
399 "operator": "minus",
400 "value": 13
401 }
402 }
403 ]
404 },
405 {
406 "name": "Set Proc 0 IO Ring DVFS parameter",
407 "groups": [
408 {
409 "name": "proc 0 ioring dvfs temp",
410 "interface": "xyz.openbmc_project.Sensor.Value",
411 "property": { "name": "Value" }
412 }
413 ],
414 "triggers": [
415 {
416 "class": "init",
417 "method": "get_properties"
418 },
419 {
420 "class": "signal",
421 "signal": "interfaces_added"
422 },
423 {
424 "class": "signal",
425 "signal": "properties_changed"
426 }
427 ],
428 "actions": [
429 {
430 "name": "set_parameter_from_group_max",
431 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
432 "modifier": {
433 "operator": "minus",
434 "value": 10
435 }
436 },
437 {
438 "name": "set_parameter_from_group_max",
439 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
440 "modifier": {
441 "operator": "minus",
442 "value": 13
443 }
444 }
445 ]
446 },
447 {
448 "name": "Set Proc 1 IO Ring DVFS parameter",
449 "groups": [
450 {
451 "name": "proc 1 ioring dvfs temp",
452 "interface": "xyz.openbmc_project.Sensor.Value",
453 "property": { "name": "Value" }
454 }
455 ],
456 "triggers": [
457 {
458 "class": "init",
459 "method": "get_properties"
460 },
461 {
462 "class": "signal",
463 "signal": "interfaces_added"
464 },
465 {
466 "class": "signal",
467 "signal": "properties_changed"
468 }
469 ],
470 "actions": [
471 {
472 "name": "set_parameter_from_group_max",
473 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
474 "modifier": {
475 "operator": "minus",
476 "value": 10
477 }
478 },
479 {
480 "name": "set_parameter_from_group_max",
481 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
482 "modifier": {
483 "operator": "minus",
484 "value": 13
485 }
486 }
487 ]
488 },
489 {
Matt Spinler1d6b4452023-11-09 13:29:31 -0600490 "name": "Set DRAM DVFS parameter",
491 "groups": [
492 {
493 "name": "dram dvfs temp",
494 "interface": "xyz.openbmc_project.Sensor.Value",
495 "property": { "name": "Value" }
496 }
497 ],
498 "triggers": [
499 {
500 "class": "init",
501 "method": "get_properties"
502 },
503 {
504 "class": "signal",
505 "signal": "properties_changed"
506 },
507 {
508 "class": "signal",
509 "signal": "interfaces_added"
510 }
511 ],
512 "actions": [
513 {
514 "name": "set_parameter_from_group_max",
515 "parameter_name": "dram_dvfs_increase_temp",
516 "modifier": {
517 "operator": "minus",
518 "value": 10
519 }
520 },
521 {
522 "name": "set_parameter_from_group_max",
523 "parameter_name": "dram_dvfs_decrease_temp",
524 "modifier": {
525 "operator": "minus",
526 "value": 13
527 }
528 }
529 ]
530 },
531 {
532 "name": "Set PMIC DVFS parameter",
533 "groups": [
534 {
535 "name": "pmic dvfs temp",
536 "interface": "xyz.openbmc_project.Sensor.Value",
537 "property": { "name": "Value" }
538 }
539 ],
540 "triggers": [
541 {
542 "class": "init",
543 "method": "get_properties"
544 },
545 {
546 "class": "signal",
547 "signal": "properties_changed"
548 },
549 {
550 "class": "signal",
551 "signal": "interfaces_added"
552 }
553 ],
554 "actions": [
555 {
556 "name": "set_parameter_from_group_max",
557 "parameter_name": "pmic_dvfs_increase_temp",
558 "modifier": {
559 "operator": "minus",
560 "value": 10
561 }
562 },
563 {
564 "name": "set_parameter_from_group_max",
565 "parameter_name": "pmic_dvfs_decrease_temp",
566 "modifier": {
567 "operator": "minus",
568 "value": 13
569 }
570 }
571 ]
572 },
573 {
574 "name": "Set internal memory buffer DVFS parameter",
575 "groups": [
576 {
577 "name": "internal memory buffer dvfs temp",
578 "interface": "xyz.openbmc_project.Sensor.Value",
579 "property": { "name": "Value" }
580 }
581 ],
582 "triggers": [
583 {
584 "class": "init",
585 "method": "get_properties"
586 },
587 {
588 "class": "signal",
589 "signal": "properties_changed"
590 },
591 {
592 "class": "signal",
593 "signal": "interfaces_added"
594 }
595 ],
596 "actions": [
597 {
598 "name": "set_parameter_from_group_max",
599 "parameter_name": "intmb_dvfs_increase_temp",
600 "modifier": {
601 "operator": "minus",
602 "value": 10
603 }
604 },
605 {
606 "name": "set_parameter_from_group_max",
607 "parameter_name": "intmb_dvfs_decrease_temp",
608 "modifier": {
609 "operator": "minus",
610 "value": 13
611 }
612 }
613 ]
614 },
615 {
616 "name": "Set DRAM and external memory buffer DVFS parameter",
617 "groups": [
618 {
619 "name": "dram and external memory buffer dvfs temp",
620 "interface": "xyz.openbmc_project.Sensor.Value",
621 "property": { "name": "Value" }
622 }
623 ],
624 "triggers": [
625 {
626 "class": "init",
627 "method": "get_properties"
628 },
629 {
630 "class": "signal",
631 "signal": "properties_changed"
632 },
633 {
634 "class": "signal",
635 "signal": "interfaces_added"
636 }
637 ],
638 "actions": [
639 {
640 "name": "set_parameter_from_group_max",
641 "parameter_name": "dram_extmb_dvfs_increase_temp",
642 "modifier": {
643 "operator": "minus",
644 "value": 10
645 }
646 },
647 {
648 "name": "set_parameter_from_group_max",
649 "parameter_name": "dram_extmb_dvfs_decrease_temp",
650 "modifier": {
651 "operator": "minus",
652 "value": 13
653 }
654 }
655 ]
656 },
657 {
658 "name": "Set external memory buffer DVFS parameter",
659 "groups": [
660 {
661 "name": "external memory buffer dvfs temp",
662 "interface": "xyz.openbmc_project.Sensor.Value",
663 "property": { "name": "Value" }
664 }
665 ],
666 "triggers": [
667 {
668 "class": "init",
669 "method": "get_properties"
670 },
671 {
672 "class": "signal",
673 "signal": "properties_changed"
674 },
675 {
676 "class": "signal",
677 "signal": "interfaces_added"
678 }
679 ],
680 "actions": [
681 {
682 "name": "set_parameter_from_group_max",
683 "parameter_name": "extmb_dvfs_increase_temp",
684 "modifier": {
685 "operator": "minus",
686 "value": 7
687 }
688 },
689 {
690 "name": "set_parameter_from_group_max",
691 "parameter_name": "extmb_dvfs_decrease_temp",
692 "modifier": {
693 "operator": "minus",
694 "value": 10
695 }
696 }
697 ]
698 },
699 {
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600700 // Collect group temperatures each iteration the repeating timer expires
701 "name": "Fan control timer loop",
702 "groups": [
703 {
704 "name": "proc0 core temps",
705 "interface": "xyz.openbmc_project.Sensor.Value",
706 "property": { "name": "Value" }
707 },
708 {
709 "name": "proc1 core temps",
710 "interface": "xyz.openbmc_project.Sensor.Value",
711 "property": { "name": "Value" }
712 },
713 {
714 "name": "proc0 ioring temp",
715 "interface": "xyz.openbmc_project.Sensor.Value",
716 "property": { "name": "Value" }
717 },
718 {
719 "name": "proc1 ioring temp",
720 "interface": "xyz.openbmc_project.Sensor.Value",
721 "property": { "name": "Value" }
722 },
723 {
724 "name": "dram temps",
725 "interface": "xyz.openbmc_project.Sensor.Value",
726 "property": { "name": "Value" }
727 },
728 {
729 "name": "pmic temps",
730 "interface": "xyz.openbmc_project.Sensor.Value",
731 "property": { "name": "Value" }
732 },
733 {
734 "name": "internal memory buffer temps",
735 "interface": "xyz.openbmc_project.Sensor.Value",
736 "property": { "name": "Value" }
737 },
738 {
739 "name": "dram and external memory buffer temps",
740 "interface": "xyz.openbmc_project.Sensor.Value",
741 "property": { "name": "Value" }
742 },
743 {
744 "name": "external memory buffer temps",
745 "interface": "xyz.openbmc_project.Sensor.Value",
746 "property": { "name": "Value" }
747 },
748 {
749 "name": "vdd vrm temps",
750 "interface": "xyz.openbmc_project.Sensor.Value",
751 "property": { "name": "Value" }
752 },
753 {
754 "name": "nvme temps",
755 "interface": "xyz.openbmc_project.Sensor.Value",
756 "property": { "name": "Value" }
757 },
758 {
759 "name": "planar temps",
760 "interface": "xyz.openbmc_project.Sensor.Value",
761 "property": { "name": "Value" }
762 },
763 {
764 "name": "flett temps",
765 "interface": "xyz.openbmc_project.Sensor.Value",
766 "property": { "name": "Value" }
767 },
768 {
769 "name": "pcie cable card temps",
770 "interface": "xyz.openbmc_project.Sensor.Value",
771 "property": { "name": "Value" }
772 }
773 ],
774 "triggers": [
775 {
776 "class": "timer",
777 "type": "repeating",
778 "interval": 2000000,
779 "preload_groups": true
780 }
781 ],
782 "actions": [
783 {
784 "name": "set_net_increase_target",
785 "groups": [
786 {
787 "name": "proc0 core temps",
788 "interface": "xyz.openbmc_project.Sensor.Value",
789 "property": { "name": "Value" }
790 }
791 ],
792 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
793 "delta": 300
794 },
795 {
796 "name": "set_net_increase_target",
797 "groups": [
798 {
799 "name": "proc1 core temps",
800 "interface": "xyz.openbmc_project.Sensor.Value",
801 "property": { "name": "Value" }
802 }
803 ],
804 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
805 "delta": 300
806 },
807 {
808 "name": "set_net_increase_target",
809 "groups": [
810 {
811 "name": "proc0 ioring temp",
812 "interface": "xyz.openbmc_project.Sensor.Value",
813 "property": { "name": "Value" }
814 }
815 ],
816 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
817 "delta": 300
818 },
819 {
820 "name": "set_net_increase_target",
821 "groups": [
822 {
823 "name": "proc1 ioring temp",
824 "interface": "xyz.openbmc_project.Sensor.Value",
825 "property": { "name": "Value" }
826 }
827 ],
828 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
829 "delta": 300
830 },
831 {
832 "name": "set_net_increase_target",
833 "groups": [
834 {
835 "name": "dram temps",
836 "interface": "xyz.openbmc_project.Sensor.Value",
837 "property": { "name": "Value" }
838 }
839 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600840 "state_parameter_name": "dram_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600841 "delta": 200
842 },
843 {
844 "name": "set_net_increase_target",
845 "groups": [
846 {
847 "name": "pmic temps",
848 "interface": "xyz.openbmc_project.Sensor.Value",
849 "property": { "name": "Value" }
850 }
851 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600852 "state_parameter_name": "pmic_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600853 "delta": 200
854 },
855 {
856 "name": "set_net_increase_target",
857 "groups": [
858 {
859 "name": "internal memory buffer temps",
860 "interface": "xyz.openbmc_project.Sensor.Value",
861 "property": { "name": "Value" }
862 }
863 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600864 "state_parameter_name": "intmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600865 "delta": 200
866 },
867 {
868 "name": "set_net_increase_target",
869 "groups": [
870 {
871 "name": "dram and external memory buffer temps",
872 "interface": "xyz.openbmc_project.Sensor.Value",
873 "property": { "name": "Value" }
874 }
875 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600876 "state_parameter_name": "dram_extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600877 "delta": 200
878 },
879 {
880 "name": "set_net_increase_target",
881 "groups": [
882 {
883 "name": "external memory buffer temps",
884 "interface": "xyz.openbmc_project.Sensor.Value",
885 "property": { "name": "Value" }
886 }
887 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600888 "state_parameter_name": "extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600889 "delta": 200
890 },
891 {
892 "name": "set_net_increase_target",
893 "groups": [
894 {
895 "name": "vdd vrm temps",
896 "interface": "xyz.openbmc_project.Sensor.Value",
897 "property": { "name": "Value" }
898 }
899 ],
900 "state": 82.0,
901 "delta": 300
902 },
903 {
904 "name": "set_net_increase_target",
905 "groups": [
906 {
907 "name": "nvme temps",
908 "interface": "xyz.openbmc_project.Sensor.Value",
909 "property": { "name": "Value" }
910 }
911 ],
912 "state": 58.0,
913 "delta": 200
914 },
915 {
916 "name": "set_net_increase_target",
917 "groups": [
918 {
919 "name": "planar temps",
920 "interface": "xyz.openbmc_project.Sensor.Value",
921 "property": { "name": "Value" }
922 }
923 ],
924 "state": 65.0,
925 "delta": 255
926 },
927 {
928 "name": "set_net_increase_target",
929 "groups": [
930 {
931 "name": "flett temps",
932 "interface": "xyz.openbmc_project.Sensor.Value",
933 "property": { "name": "Value" }
934 }
935 ],
936 "state": 80.0,
937 "delta": 200
938 },
939 {
940 "name": "set_net_increase_target",
941 "groups": [
942 {
943 "name": "pcie cable card temps",
944 "interface": "xyz.openbmc_project.Sensor.Value",
945 "property": { "name": "Value" }
946 }
947 ],
948 "state": 70.0,
949 "delta": 255
950 },
951 {
952 "name": "set_net_decrease_target",
953 "groups": [
954 {
955 "name": "proc0 core temps",
956 "interface": "xyz.openbmc_project.Sensor.Value",
957 "property": { "name": "Value" }
958 }
959 ],
960 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
961 "delta": 50
962 },
963 {
964 "name": "set_net_decrease_target",
965 "groups": [
966 {
967 "name": "proc1 core temps",
968 "interface": "xyz.openbmc_project.Sensor.Value",
969 "property": { "name": "Value" }
970 }
971 ],
972 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
973 "delta": 50
974 },
975 {
976 "name": "set_net_decrease_target",
977 "groups": [
978 {
979 "name": "proc0 ioring temp",
980 "interface": "xyz.openbmc_project.Sensor.Value",
981 "property": { "name": "Value" }
982 }
983 ],
984 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
985 "delta": 50
986 },
987 {
988 "name": "set_net_decrease_target",
989 "groups": [
990 {
991 "name": "proc1 ioring temp",
992 "interface": "xyz.openbmc_project.Sensor.Value",
993 "property": { "name": "Value" }
994 }
995 ],
996 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
997 "delta": 50
998 },
999 {
1000 "name": "set_net_decrease_target",
1001 "groups": [
1002 {
1003 "name": "dram temps",
1004 "interface": "xyz.openbmc_project.Sensor.Value",
1005 "property": { "name": "Value" }
1006 }
1007 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001008 "state_parameter_name": "dram_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001009 "delta": 50
1010 },
1011 {
1012 "name": "set_net_decrease_target",
1013 "groups": [
1014 {
1015 "name": "pmic temps",
1016 "interface": "xyz.openbmc_project.Sensor.Value",
1017 "property": { "name": "Value" }
1018 }
1019 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001020 "state_parameter_name": "pmic_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001021 "delta": 50
1022 },
1023 {
1024 "name": "set_net_decrease_target",
1025 "groups": [
1026 {
1027 "name": "internal memory buffer temps",
1028 "interface": "xyz.openbmc_project.Sensor.Value",
1029 "property": { "name": "Value" }
1030 }
1031 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001032 "state_parameter_name": "intmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001033 "delta": 50
1034 },
1035 {
1036 "name": "set_net_decrease_target",
1037 "groups": [
1038 {
1039 "name": "dram and external memory buffer temps",
1040 "interface": "xyz.openbmc_project.Sensor.Value",
1041 "property": { "name": "Value" }
1042 }
1043 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001044 "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001045 "delta": 50
1046 },
1047 {
1048 "name": "set_net_decrease_target",
1049 "groups": [
1050 {
1051 "name": "external memory buffer temps",
1052 "interface": "xyz.openbmc_project.Sensor.Value",
1053 "property": { "name": "Value" }
1054 }
1055 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001056 "state_parameter_name": "extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001057 "delta": 50
1058 },
1059 {
1060 "name": "set_net_decrease_target",
1061 "groups": [
1062 {
1063 "name": "vdd vrm temps",
1064 "interface": "xyz.openbmc_project.Sensor.Value",
1065 "property": { "name": "Value" }
1066 }
1067 ],
1068 "state": 79.0,
1069 "delta": 50
1070 },
1071 {
1072 "name": "set_net_decrease_target",
1073 "groups": [
1074 {
1075 "name": "nvme temps",
1076 "interface": "xyz.openbmc_project.Sensor.Value",
1077 "property": { "name": "Value" }
1078 }
1079 ],
1080 "state": 55.0,
1081 "delta": 50
1082 },
1083 {
1084 "name": "set_net_decrease_target",
1085 "groups": [
1086 {
1087 "name": "planar temps",
1088 "interface": "xyz.openbmc_project.Sensor.Value",
1089 "property": { "name": "Value" }
1090 }
1091 ],
1092 "state": 60.0,
1093 "delta": 50
1094 },
1095 {
1096 "name": "set_net_decrease_target",
1097 "groups": [
1098 {
1099 "name": "flett temps",
1100 "interface": "xyz.openbmc_project.Sensor.Value",
1101 "property": { "name": "Value" }
1102 }
1103 ],
1104 "state": 75.0,
1105 "delta": 40
1106 },
1107 {
1108 "name": "set_net_decrease_target",
1109 "groups": [
1110 {
1111 "name": "pcie cable card temps",
1112 "interface": "xyz.openbmc_project.Sensor.Value",
1113 "property": { "name": "Value" }
1114 }
1115 ],
1116 "state": 65.0,
1117 "delta": 50
1118 }
1119 ]
1120 },
1121 {
1122 // Remove NVMe temperature objects from cache when they are removed from
1123 // dbus. There's no need to react to their removal.
1124 "name": "remove nvme objects",
1125 "groups": [
1126 {
1127 "name": "nvme temps",
1128 "interface": "xyz.openbmc_project.Sensor.Value",
1129 "property": { "name": "Value" }
1130 },
1131 {
1132 "name": "nvme temps",
1133 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1134 "property": { "name": "Functional" }
1135 }
1136 ],
1137 "triggers": [
1138 {
1139 "class": "signal",
1140 "signal": "interfaces_removed"
1141 }
1142 ]
1143 },
1144 {
1145 "name": "set pcie floor index",
1146 "groups": [
1147 {
1148 "name": "pcie slots",
1149 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1150 "property": {
1151 "name": "PowerState"
1152 }
1153 },
1154 {
1155 "name": "pcie cards",
1156 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1157 "property": {
1158 "name": "Function0DeviceId"
1159 }
1160 },
1161 {
1162 "name": "pcie cards",
1163 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1164 "property": {
1165 "name": "Function0VendorId"
1166 }
1167 },
1168 {
1169 "name": "pcie cards",
1170 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1171 "property": {
1172 "name": "Function0SubsystemId"
1173 }
1174 },
1175 {
1176 "name": "pcie cards",
1177 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1178 "property": {
1179 "name": "Function0SubsystemVendorId"
1180 }
1181 }
1182 ],
1183 "triggers": [
1184 {
1185 "class": "init",
1186 "method": "get_properties"
1187 },
1188 {
1189 "class": "signal",
1190 "signal": "properties_changed"
1191 },
1192 {
1193 "class": "signal",
1194 "signal": "interfaces_added"
1195 }
1196 ],
1197 "actions": [
1198 {
1199 "name": "pcie_card_floors",
1200 "use_config_specific_files": true,
1201 "settle_time": 2
1202 }
1203 ]
1204 },
1205 {
1206 "name": "Set altitude offset parameter",
1207 "groups": [
1208 {
1209 "name": "altitude",
1210 "interface": "xyz.openbmc_project.Sensor.Value",
1211 "property": { "name": "Value" }
1212 }
1213 ],
1214 "triggers": [
1215 {
1216 "class": "init",
1217 "method": "get_properties"
1218 },
1219 {
1220 "class": "signal",
1221 "signal": "interfaces_added"
1222 },
1223 {
1224 // Refresh altitude every 24hrs
1225 "class": "timer",
1226 "type": "repeating",
1227 "interval": 86400000000,
1228 "preload_groups": true
1229 }
1230 ],
1231 "actions": [
1232 {
1233 "name": "set_parameter_from_group_max",
1234 "parameter_name": "altitude_offset",
1235 "modifier": {
1236 "operator": "less_than",
1237 "default_value": 3000,
1238 "value": [
1239 { "arg_value": 1000, "parameter_value": 0 },
1240 { "arg_value": 1900, "parameter_value": 1000 },
1241 { "arg_value": 2800, "parameter_value": 2000 }
1242 ]
1243 }
1244 }
1245 ]
1246 },
1247 {
1248 "name": "Fan floors",
1249 "groups": [
1250 {
1251 "name": "ambient temp",
1252 "interface": "xyz.openbmc_project.Sensor.Value",
1253 "property": { "name": "Value" }
1254 },
1255 {
Matt Spinlera97823a2023-01-12 09:58:19 -06001256 "name": "cpu 0 inventory",
1257 "interface": "xyz.openbmc_project.Inventory.Decorator.Asset",
1258 "property": { "name": "Model" }
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001259 }
1260 ],
1261 "triggers": [
1262 {
1263 "class": "init",
1264 "method": "get_properties"
1265 },
1266 {
1267 "class": "signal",
1268 "signal": "properties_changed"
1269 },
1270 {
1271 "class": "signal",
1272 "signal": "interfaces_added"
1273 },
1274 {
1275 "class": "parameter",
1276 "parameter": "pcie_floor_index"
1277 },
1278 {
1279 "class": "parameter",
1280 "parameter": "altitude_offset"
1281 }
1282 ],
1283 "actions": [
1284 {
1285 "name": "mapped_floor",
1286 "key_group": "ambient temp",
Matt Spinlera97823a2023-01-12 09:58:19 -06001287 "condition_group": "cpu 0 inventory",
1288 "condition_value": "5CF9",
1289 "condition_op": "not_equal",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001290 "fan_floors": [
1291 {
1292 // Entry valid for ambient temp < 27
1293 "key": 27,
1294 "default_floor": 3700,
1295 "floor_offset_parameter": "altitude_offset",
1296 "floors": [
1297 {
1298 "parameter": "pcie_floor_index",
1299 "floors": [
1300 { "value": 1, "floor": 6000 },
1301 { "value": 2, "floor": 7000 },
1302 { "value": 3, "floor": 8000 }
1303 ]
1304 }
1305 ]
1306 },
1307 {
1308 // Entry valid for ambient temp < 32
1309 "key": 32,
1310 "default_floor": 5000,
1311 "floor_offset_parameter": "altitude_offset",
1312 "floors": [
1313 {
1314 "parameter": "pcie_floor_index",
1315 "floors": [
1316 { "value": 1, "floor": 7000 },
1317 { "value": 2, "floor": 9000 },
1318 { "value": 3, "floor": 9500 }
1319 ]
1320 }
1321 ]
1322 },
1323 {
1324 // Entry valid for ambient temp < 37
1325 "key": 37,
1326 "default_floor": 6000,
1327 "floor_offset_parameter": "altitude_offset",
1328 "floors": [
1329 {
1330 "parameter": "pcie_floor_index",
1331 "floors": [
1332 { "value": 1, "floor": 9000 },
1333 { "value": 2, "floor": 9500 },
1334 { "value": 3, "floor": 10400 }
1335 ]
1336 }
1337 ]
1338 },
1339 {
1340 // Entry valid for ambient temp < 42
1341 "key": 42,
1342 "default_floor": 8000,
1343 "floor_offset_parameter": "altitude_offset",
1344 "floors": [
1345 {
1346 "parameter": "pcie_floor_index",
1347 "floors": [
1348 { "value": 1, "floor": 9500 },
1349 { "value": 2, "floor": 10400 },
1350 { "value": 3, "floor": 10400 }
1351 ]
1352 }
1353 ]
1354 }
1355 ]
Matt Spinlera97823a2023-01-12 09:58:19 -06001356 },
1357 {
1358 "name": "mapped_floor",
1359 "key_group": "ambient temp",
1360 "condition_group": "cpu 0 inventory",
1361 "condition_value": "5CF9",
1362 "condition_op": "equal",
1363 "fan_floors": [
1364 {
1365 // Entry valid for ambient temp < 27
1366 "key": 27,
1367 "default_floor": 5000,
1368 "floor_offset_parameter": "altitude_offset",
1369 "floors": [
1370 {
1371 "parameter": "pcie_floor_index",
1372 "floors": [
1373 { "value": 1, "floor": 7000 },
1374 { "value": 2, "floor": 8000 },
1375 { "value": 3, "floor": 9000 }
1376 ]
1377 }
1378 ]
1379 },
1380 {
1381 // Entry valid for ambient temp < 32
1382 "key": 32,
1383 "default_floor": 6000,
1384 "floor_offset_parameter": "altitude_offset",
1385 "floors": [
1386 {
1387 "parameter": "pcie_floor_index",
1388 "floors": [
1389 { "value": 1, "floor": 8000 },
1390 { "value": 2, "floor": 9000 },
1391 { "value": 3, "floor": 9500 }
1392 ]
1393 }
1394 ]
1395 },
1396 {
1397 // Entry valid for ambient temp < 37
1398 "key": 37,
1399 "default_floor": 7000,
1400 "floor_offset_parameter": "altitude_offset",
1401 "floors": [
1402 {
1403 "parameter": "pcie_floor_index",
1404 "floors": [
1405 { "value": 1, "floor": 9000 },
1406 { "value": 2, "floor": 9500 },
1407 { "value": 3, "floor": 10400 }
1408 ]
1409 }
1410 ]
1411 },
1412 {
1413 // Entry valid for ambient temp < 42
1414 "key": 42,
1415 "default_floor": 8000,
1416 "floor_offset_parameter": "altitude_offset",
1417 "floors": [
1418 {
1419 "parameter": "pcie_floor_index",
1420 "floors": [
1421 { "value": 1, "floor": 9500 },
1422 { "value": 2, "floor": 10400 },
1423 { "value": 3, "floor": 10400 }
1424 ]
1425 }
1426 ]
1427 }
1428 ]
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001429 }
1430 ]
1431 }
Matthew Barthb477a562021-10-19 14:39:19 -05001432]