blob: ef2e8934fea620f964ac5c2cdffe3bf18532c806 [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,
Matt Spinlera8c1cf52024-01-04 16:47:30 -0600317 "delay": 5,
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600318 "floor": 10400
319 }
320 ]
321 },
322 {
323 "name": "Set Proc 0 Core DVFS parameter",
324 "groups": [
325 {
326 "name": "proc 0 core dvfs temp",
327 "interface": "xyz.openbmc_project.Sensor.Value",
328 "property": { "name": "Value" }
329 }
330 ],
331 "triggers": [
332 {
333 "class": "init",
334 "method": "get_properties"
335 },
336 {
337 "class": "signal",
338 "signal": "interfaces_added"
339 },
340 {
341 "class": "signal",
342 "signal": "properties_changed"
343 }
344 ],
345 "actions": [
346 {
347 "name": "set_parameter_from_group_max",
348 "parameter_name": "proc_0_core_dvfs_increase_temp",
349 "modifier": {
350 "operator": "minus",
351 "value": 10
352 }
353 },
354 {
355 "name": "set_parameter_from_group_max",
356 "parameter_name": "proc_0_core_dvfs_decrease_temp",
357 "modifier": {
358 "operator": "minus",
359 "value": 13
360 }
361 }
362 ]
363 },
364 {
365 "name": "Set Proc 1 Core DVFS parameter",
366 "groups": [
367 {
368 "name": "proc 1 core dvfs temp",
369 "interface": "xyz.openbmc_project.Sensor.Value",
370 "property": { "name": "Value" }
371 }
372 ],
373 "triggers": [
374 {
375 "class": "init",
376 "method": "get_properties"
377 },
378 {
379 "class": "signal",
380 "signal": "interfaces_added"
381 },
382 {
383 "class": "signal",
384 "signal": "properties_changed"
385 }
386 ],
387 "actions": [
388 {
389 "name": "set_parameter_from_group_max",
390 "parameter_name": "proc_1_core_dvfs_increase_temp",
391 "modifier": {
392 "operator": "minus",
393 "value": 10
394 }
395 },
396 {
397 "name": "set_parameter_from_group_max",
398 "parameter_name": "proc_1_core_dvfs_decrease_temp",
399 "modifier": {
400 "operator": "minus",
401 "value": 13
402 }
403 }
404 ]
405 },
406 {
407 "name": "Set Proc 0 IO Ring DVFS parameter",
408 "groups": [
409 {
410 "name": "proc 0 ioring dvfs temp",
411 "interface": "xyz.openbmc_project.Sensor.Value",
412 "property": { "name": "Value" }
413 }
414 ],
415 "triggers": [
416 {
417 "class": "init",
418 "method": "get_properties"
419 },
420 {
421 "class": "signal",
422 "signal": "interfaces_added"
423 },
424 {
425 "class": "signal",
426 "signal": "properties_changed"
427 }
428 ],
429 "actions": [
430 {
431 "name": "set_parameter_from_group_max",
432 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
433 "modifier": {
434 "operator": "minus",
435 "value": 10
436 }
437 },
438 {
439 "name": "set_parameter_from_group_max",
440 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
441 "modifier": {
442 "operator": "minus",
443 "value": 13
444 }
445 }
446 ]
447 },
448 {
449 "name": "Set Proc 1 IO Ring DVFS parameter",
450 "groups": [
451 {
452 "name": "proc 1 ioring dvfs temp",
453 "interface": "xyz.openbmc_project.Sensor.Value",
454 "property": { "name": "Value" }
455 }
456 ],
457 "triggers": [
458 {
459 "class": "init",
460 "method": "get_properties"
461 },
462 {
463 "class": "signal",
464 "signal": "interfaces_added"
465 },
466 {
467 "class": "signal",
468 "signal": "properties_changed"
469 }
470 ],
471 "actions": [
472 {
473 "name": "set_parameter_from_group_max",
474 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
475 "modifier": {
476 "operator": "minus",
477 "value": 10
478 }
479 },
480 {
481 "name": "set_parameter_from_group_max",
482 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
483 "modifier": {
484 "operator": "minus",
485 "value": 13
486 }
487 }
488 ]
489 },
490 {
Matt Spinler1d6b4452023-11-09 13:29:31 -0600491 "name": "Set DRAM DVFS parameter",
492 "groups": [
493 {
494 "name": "dram dvfs temp",
495 "interface": "xyz.openbmc_project.Sensor.Value",
496 "property": { "name": "Value" }
497 }
498 ],
499 "triggers": [
500 {
501 "class": "init",
502 "method": "get_properties"
503 },
504 {
505 "class": "signal",
506 "signal": "properties_changed"
507 },
508 {
509 "class": "signal",
510 "signal": "interfaces_added"
511 }
512 ],
513 "actions": [
514 {
515 "name": "set_parameter_from_group_max",
516 "parameter_name": "dram_dvfs_increase_temp",
517 "modifier": {
518 "operator": "minus",
519 "value": 10
520 }
521 },
522 {
523 "name": "set_parameter_from_group_max",
524 "parameter_name": "dram_dvfs_decrease_temp",
525 "modifier": {
526 "operator": "minus",
527 "value": 13
528 }
529 }
530 ]
531 },
532 {
533 "name": "Set PMIC DVFS parameter",
534 "groups": [
535 {
536 "name": "pmic dvfs temp",
537 "interface": "xyz.openbmc_project.Sensor.Value",
538 "property": { "name": "Value" }
539 }
540 ],
541 "triggers": [
542 {
543 "class": "init",
544 "method": "get_properties"
545 },
546 {
547 "class": "signal",
548 "signal": "properties_changed"
549 },
550 {
551 "class": "signal",
552 "signal": "interfaces_added"
553 }
554 ],
555 "actions": [
556 {
557 "name": "set_parameter_from_group_max",
558 "parameter_name": "pmic_dvfs_increase_temp",
559 "modifier": {
560 "operator": "minus",
561 "value": 10
562 }
563 },
564 {
565 "name": "set_parameter_from_group_max",
566 "parameter_name": "pmic_dvfs_decrease_temp",
567 "modifier": {
568 "operator": "minus",
569 "value": 13
570 }
571 }
572 ]
573 },
574 {
575 "name": "Set internal memory buffer DVFS parameter",
576 "groups": [
577 {
578 "name": "internal memory buffer dvfs temp",
579 "interface": "xyz.openbmc_project.Sensor.Value",
580 "property": { "name": "Value" }
581 }
582 ],
583 "triggers": [
584 {
585 "class": "init",
586 "method": "get_properties"
587 },
588 {
589 "class": "signal",
590 "signal": "properties_changed"
591 },
592 {
593 "class": "signal",
594 "signal": "interfaces_added"
595 }
596 ],
597 "actions": [
598 {
599 "name": "set_parameter_from_group_max",
600 "parameter_name": "intmb_dvfs_increase_temp",
601 "modifier": {
602 "operator": "minus",
603 "value": 10
604 }
605 },
606 {
607 "name": "set_parameter_from_group_max",
608 "parameter_name": "intmb_dvfs_decrease_temp",
609 "modifier": {
610 "operator": "minus",
611 "value": 13
612 }
613 }
614 ]
615 },
616 {
617 "name": "Set DRAM and external memory buffer DVFS parameter",
618 "groups": [
619 {
620 "name": "dram and external memory buffer dvfs temp",
621 "interface": "xyz.openbmc_project.Sensor.Value",
622 "property": { "name": "Value" }
623 }
624 ],
625 "triggers": [
626 {
627 "class": "init",
628 "method": "get_properties"
629 },
630 {
631 "class": "signal",
632 "signal": "properties_changed"
633 },
634 {
635 "class": "signal",
636 "signal": "interfaces_added"
637 }
638 ],
639 "actions": [
640 {
641 "name": "set_parameter_from_group_max",
642 "parameter_name": "dram_extmb_dvfs_increase_temp",
643 "modifier": {
644 "operator": "minus",
645 "value": 10
646 }
647 },
648 {
649 "name": "set_parameter_from_group_max",
650 "parameter_name": "dram_extmb_dvfs_decrease_temp",
651 "modifier": {
652 "operator": "minus",
653 "value": 13
654 }
655 }
656 ]
657 },
658 {
659 "name": "Set external memory buffer DVFS parameter",
660 "groups": [
661 {
662 "name": "external memory buffer dvfs temp",
663 "interface": "xyz.openbmc_project.Sensor.Value",
664 "property": { "name": "Value" }
665 }
666 ],
667 "triggers": [
668 {
669 "class": "init",
670 "method": "get_properties"
671 },
672 {
673 "class": "signal",
674 "signal": "properties_changed"
675 },
676 {
677 "class": "signal",
678 "signal": "interfaces_added"
679 }
680 ],
681 "actions": [
682 {
683 "name": "set_parameter_from_group_max",
684 "parameter_name": "extmb_dvfs_increase_temp",
685 "modifier": {
686 "operator": "minus",
687 "value": 7
688 }
689 },
690 {
691 "name": "set_parameter_from_group_max",
692 "parameter_name": "extmb_dvfs_decrease_temp",
693 "modifier": {
694 "operator": "minus",
695 "value": 10
696 }
697 }
698 ]
699 },
700 {
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600701 // Collect group temperatures each iteration the repeating timer expires
702 "name": "Fan control timer loop",
703 "groups": [
704 {
705 "name": "proc0 core temps",
706 "interface": "xyz.openbmc_project.Sensor.Value",
707 "property": { "name": "Value" }
708 },
709 {
710 "name": "proc1 core temps",
711 "interface": "xyz.openbmc_project.Sensor.Value",
712 "property": { "name": "Value" }
713 },
714 {
715 "name": "proc0 ioring temp",
716 "interface": "xyz.openbmc_project.Sensor.Value",
717 "property": { "name": "Value" }
718 },
719 {
720 "name": "proc1 ioring temp",
721 "interface": "xyz.openbmc_project.Sensor.Value",
722 "property": { "name": "Value" }
723 },
724 {
725 "name": "dram temps",
726 "interface": "xyz.openbmc_project.Sensor.Value",
727 "property": { "name": "Value" }
728 },
729 {
730 "name": "pmic temps",
731 "interface": "xyz.openbmc_project.Sensor.Value",
732 "property": { "name": "Value" }
733 },
734 {
735 "name": "internal memory buffer temps",
736 "interface": "xyz.openbmc_project.Sensor.Value",
737 "property": { "name": "Value" }
738 },
739 {
740 "name": "dram and external memory buffer temps",
741 "interface": "xyz.openbmc_project.Sensor.Value",
742 "property": { "name": "Value" }
743 },
744 {
745 "name": "external memory buffer temps",
746 "interface": "xyz.openbmc_project.Sensor.Value",
747 "property": { "name": "Value" }
748 },
749 {
750 "name": "vdd vrm temps",
751 "interface": "xyz.openbmc_project.Sensor.Value",
752 "property": { "name": "Value" }
753 },
754 {
755 "name": "nvme temps",
756 "interface": "xyz.openbmc_project.Sensor.Value",
757 "property": { "name": "Value" }
758 },
759 {
760 "name": "planar temps",
761 "interface": "xyz.openbmc_project.Sensor.Value",
762 "property": { "name": "Value" }
763 },
764 {
765 "name": "flett temps",
766 "interface": "xyz.openbmc_project.Sensor.Value",
767 "property": { "name": "Value" }
768 },
769 {
770 "name": "pcie cable card temps",
771 "interface": "xyz.openbmc_project.Sensor.Value",
772 "property": { "name": "Value" }
773 }
774 ],
775 "triggers": [
776 {
777 "class": "timer",
778 "type": "repeating",
779 "interval": 2000000,
780 "preload_groups": true
781 }
782 ],
783 "actions": [
784 {
785 "name": "set_net_increase_target",
786 "groups": [
787 {
788 "name": "proc0 core temps",
789 "interface": "xyz.openbmc_project.Sensor.Value",
790 "property": { "name": "Value" }
791 }
792 ],
793 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
794 "delta": 300
795 },
796 {
797 "name": "set_net_increase_target",
798 "groups": [
799 {
800 "name": "proc1 core temps",
801 "interface": "xyz.openbmc_project.Sensor.Value",
802 "property": { "name": "Value" }
803 }
804 ],
805 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
806 "delta": 300
807 },
808 {
809 "name": "set_net_increase_target",
810 "groups": [
811 {
812 "name": "proc0 ioring temp",
813 "interface": "xyz.openbmc_project.Sensor.Value",
814 "property": { "name": "Value" }
815 }
816 ],
817 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
818 "delta": 300
819 },
820 {
821 "name": "set_net_increase_target",
822 "groups": [
823 {
824 "name": "proc1 ioring temp",
825 "interface": "xyz.openbmc_project.Sensor.Value",
826 "property": { "name": "Value" }
827 }
828 ],
829 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
830 "delta": 300
831 },
832 {
833 "name": "set_net_increase_target",
834 "groups": [
835 {
836 "name": "dram temps",
837 "interface": "xyz.openbmc_project.Sensor.Value",
838 "property": { "name": "Value" }
839 }
840 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600841 "state_parameter_name": "dram_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600842 "delta": 200
843 },
844 {
845 "name": "set_net_increase_target",
846 "groups": [
847 {
848 "name": "pmic temps",
849 "interface": "xyz.openbmc_project.Sensor.Value",
850 "property": { "name": "Value" }
851 }
852 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600853 "state_parameter_name": "pmic_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600854 "delta": 200
855 },
856 {
857 "name": "set_net_increase_target",
858 "groups": [
859 {
860 "name": "internal memory buffer temps",
861 "interface": "xyz.openbmc_project.Sensor.Value",
862 "property": { "name": "Value" }
863 }
864 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600865 "state_parameter_name": "intmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600866 "delta": 200
867 },
868 {
869 "name": "set_net_increase_target",
870 "groups": [
871 {
872 "name": "dram and external memory buffer temps",
873 "interface": "xyz.openbmc_project.Sensor.Value",
874 "property": { "name": "Value" }
875 }
876 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600877 "state_parameter_name": "dram_extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600878 "delta": 200
879 },
880 {
881 "name": "set_net_increase_target",
882 "groups": [
883 {
884 "name": "external memory buffer temps",
885 "interface": "xyz.openbmc_project.Sensor.Value",
886 "property": { "name": "Value" }
887 }
888 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -0600889 "state_parameter_name": "extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600890 "delta": 200
891 },
892 {
893 "name": "set_net_increase_target",
894 "groups": [
895 {
896 "name": "vdd vrm temps",
897 "interface": "xyz.openbmc_project.Sensor.Value",
898 "property": { "name": "Value" }
899 }
900 ],
901 "state": 82.0,
902 "delta": 300
903 },
904 {
905 "name": "set_net_increase_target",
906 "groups": [
907 {
908 "name": "nvme temps",
909 "interface": "xyz.openbmc_project.Sensor.Value",
910 "property": { "name": "Value" }
911 }
912 ],
913 "state": 58.0,
914 "delta": 200
915 },
916 {
917 "name": "set_net_increase_target",
918 "groups": [
919 {
920 "name": "planar temps",
921 "interface": "xyz.openbmc_project.Sensor.Value",
922 "property": { "name": "Value" }
923 }
924 ],
925 "state": 65.0,
926 "delta": 255
927 },
928 {
929 "name": "set_net_increase_target",
930 "groups": [
931 {
932 "name": "flett temps",
933 "interface": "xyz.openbmc_project.Sensor.Value",
934 "property": { "name": "Value" }
935 }
936 ],
937 "state": 80.0,
938 "delta": 200
939 },
940 {
941 "name": "set_net_increase_target",
942 "groups": [
943 {
944 "name": "pcie cable card temps",
945 "interface": "xyz.openbmc_project.Sensor.Value",
946 "property": { "name": "Value" }
947 }
948 ],
949 "state": 70.0,
950 "delta": 255
951 },
952 {
953 "name": "set_net_decrease_target",
954 "groups": [
955 {
956 "name": "proc0 core temps",
957 "interface": "xyz.openbmc_project.Sensor.Value",
958 "property": { "name": "Value" }
959 }
960 ],
961 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
962 "delta": 50
963 },
964 {
965 "name": "set_net_decrease_target",
966 "groups": [
967 {
968 "name": "proc1 core temps",
969 "interface": "xyz.openbmc_project.Sensor.Value",
970 "property": { "name": "Value" }
971 }
972 ],
973 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
974 "delta": 50
975 },
976 {
977 "name": "set_net_decrease_target",
978 "groups": [
979 {
980 "name": "proc0 ioring temp",
981 "interface": "xyz.openbmc_project.Sensor.Value",
982 "property": { "name": "Value" }
983 }
984 ],
985 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
986 "delta": 50
987 },
988 {
989 "name": "set_net_decrease_target",
990 "groups": [
991 {
992 "name": "proc1 ioring temp",
993 "interface": "xyz.openbmc_project.Sensor.Value",
994 "property": { "name": "Value" }
995 }
996 ],
997 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
998 "delta": 50
999 },
1000 {
1001 "name": "set_net_decrease_target",
1002 "groups": [
1003 {
1004 "name": "dram temps",
1005 "interface": "xyz.openbmc_project.Sensor.Value",
1006 "property": { "name": "Value" }
1007 }
1008 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001009 "state_parameter_name": "dram_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001010 "delta": 50
1011 },
1012 {
1013 "name": "set_net_decrease_target",
1014 "groups": [
1015 {
1016 "name": "pmic temps",
1017 "interface": "xyz.openbmc_project.Sensor.Value",
1018 "property": { "name": "Value" }
1019 }
1020 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001021 "state_parameter_name": "pmic_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001022 "delta": 50
1023 },
1024 {
1025 "name": "set_net_decrease_target",
1026 "groups": [
1027 {
1028 "name": "internal memory buffer temps",
1029 "interface": "xyz.openbmc_project.Sensor.Value",
1030 "property": { "name": "Value" }
1031 }
1032 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001033 "state_parameter_name": "intmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001034 "delta": 50
1035 },
1036 {
1037 "name": "set_net_decrease_target",
1038 "groups": [
1039 {
1040 "name": "dram and external memory buffer temps",
1041 "interface": "xyz.openbmc_project.Sensor.Value",
1042 "property": { "name": "Value" }
1043 }
1044 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001045 "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001046 "delta": 50
1047 },
1048 {
1049 "name": "set_net_decrease_target",
1050 "groups": [
1051 {
1052 "name": "external memory buffer temps",
1053 "interface": "xyz.openbmc_project.Sensor.Value",
1054 "property": { "name": "Value" }
1055 }
1056 ],
Matt Spinler1d6b4452023-11-09 13:29:31 -06001057 "state_parameter_name": "extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001058 "delta": 50
1059 },
1060 {
1061 "name": "set_net_decrease_target",
1062 "groups": [
1063 {
1064 "name": "vdd vrm temps",
1065 "interface": "xyz.openbmc_project.Sensor.Value",
1066 "property": { "name": "Value" }
1067 }
1068 ],
1069 "state": 79.0,
1070 "delta": 50
1071 },
1072 {
1073 "name": "set_net_decrease_target",
1074 "groups": [
1075 {
1076 "name": "nvme temps",
1077 "interface": "xyz.openbmc_project.Sensor.Value",
1078 "property": { "name": "Value" }
1079 }
1080 ],
1081 "state": 55.0,
1082 "delta": 50
1083 },
1084 {
1085 "name": "set_net_decrease_target",
1086 "groups": [
1087 {
1088 "name": "planar temps",
1089 "interface": "xyz.openbmc_project.Sensor.Value",
1090 "property": { "name": "Value" }
1091 }
1092 ],
1093 "state": 60.0,
1094 "delta": 50
1095 },
1096 {
1097 "name": "set_net_decrease_target",
1098 "groups": [
1099 {
1100 "name": "flett temps",
1101 "interface": "xyz.openbmc_project.Sensor.Value",
1102 "property": { "name": "Value" }
1103 }
1104 ],
1105 "state": 75.0,
1106 "delta": 40
1107 },
1108 {
1109 "name": "set_net_decrease_target",
1110 "groups": [
1111 {
1112 "name": "pcie cable card temps",
1113 "interface": "xyz.openbmc_project.Sensor.Value",
1114 "property": { "name": "Value" }
1115 }
1116 ],
1117 "state": 65.0,
1118 "delta": 50
1119 }
1120 ]
1121 },
1122 {
1123 // Remove NVMe temperature objects from cache when they are removed from
1124 // dbus. There's no need to react to their removal.
1125 "name": "remove nvme objects",
1126 "groups": [
1127 {
1128 "name": "nvme temps",
1129 "interface": "xyz.openbmc_project.Sensor.Value",
1130 "property": { "name": "Value" }
1131 },
1132 {
1133 "name": "nvme temps",
1134 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1135 "property": { "name": "Functional" }
1136 }
1137 ],
1138 "triggers": [
1139 {
1140 "class": "signal",
1141 "signal": "interfaces_removed"
1142 }
1143 ]
1144 },
1145 {
1146 "name": "set pcie floor index",
1147 "groups": [
1148 {
1149 "name": "pcie slots",
1150 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1151 "property": {
1152 "name": "PowerState"
1153 }
1154 },
1155 {
1156 "name": "pcie cards",
1157 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1158 "property": {
1159 "name": "Function0DeviceId"
1160 }
1161 },
1162 {
1163 "name": "pcie cards",
1164 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1165 "property": {
1166 "name": "Function0VendorId"
1167 }
1168 },
1169 {
1170 "name": "pcie cards",
1171 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1172 "property": {
1173 "name": "Function0SubsystemId"
1174 }
1175 },
1176 {
1177 "name": "pcie cards",
1178 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1179 "property": {
1180 "name": "Function0SubsystemVendorId"
1181 }
1182 }
1183 ],
1184 "triggers": [
1185 {
1186 "class": "init",
1187 "method": "get_properties"
1188 },
1189 {
1190 "class": "signal",
1191 "signal": "properties_changed"
1192 },
1193 {
1194 "class": "signal",
1195 "signal": "interfaces_added"
1196 }
1197 ],
1198 "actions": [
1199 {
1200 "name": "pcie_card_floors",
1201 "use_config_specific_files": true,
1202 "settle_time": 2
1203 }
1204 ]
1205 },
1206 {
1207 "name": "Set altitude offset parameter",
1208 "groups": [
1209 {
1210 "name": "altitude",
1211 "interface": "xyz.openbmc_project.Sensor.Value",
1212 "property": { "name": "Value" }
1213 }
1214 ],
1215 "triggers": [
1216 {
1217 "class": "init",
1218 "method": "get_properties"
1219 },
1220 {
1221 "class": "signal",
1222 "signal": "interfaces_added"
1223 },
1224 {
1225 // Refresh altitude every 24hrs
1226 "class": "timer",
1227 "type": "repeating",
1228 "interval": 86400000000,
1229 "preload_groups": true
1230 }
1231 ],
1232 "actions": [
1233 {
1234 "name": "set_parameter_from_group_max",
1235 "parameter_name": "altitude_offset",
1236 "modifier": {
1237 "operator": "less_than",
1238 "default_value": 3000,
1239 "value": [
1240 { "arg_value": 1000, "parameter_value": 0 },
1241 { "arg_value": 1900, "parameter_value": 1000 },
1242 { "arg_value": 2800, "parameter_value": 2000 }
1243 ]
1244 }
1245 }
1246 ]
1247 },
1248 {
1249 "name": "Fan floors",
1250 "groups": [
1251 {
1252 "name": "ambient temp",
1253 "interface": "xyz.openbmc_project.Sensor.Value",
1254 "property": { "name": "Value" }
1255 },
1256 {
Matt Spinlera97823a2023-01-12 09:58:19 -06001257 "name": "cpu 0 inventory",
1258 "interface": "xyz.openbmc_project.Inventory.Decorator.Asset",
1259 "property": { "name": "Model" }
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001260 }
1261 ],
1262 "triggers": [
1263 {
1264 "class": "init",
1265 "method": "get_properties"
1266 },
1267 {
1268 "class": "signal",
1269 "signal": "properties_changed"
1270 },
1271 {
1272 "class": "signal",
1273 "signal": "interfaces_added"
1274 },
1275 {
1276 "class": "parameter",
1277 "parameter": "pcie_floor_index"
1278 },
1279 {
1280 "class": "parameter",
1281 "parameter": "altitude_offset"
1282 }
1283 ],
1284 "actions": [
1285 {
1286 "name": "mapped_floor",
1287 "key_group": "ambient temp",
Matt Spinlera97823a2023-01-12 09:58:19 -06001288 "condition_group": "cpu 0 inventory",
1289 "condition_value": "5CF9",
1290 "condition_op": "not_equal",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001291 "fan_floors": [
1292 {
1293 // Entry valid for ambient temp < 27
1294 "key": 27,
1295 "default_floor": 3700,
1296 "floor_offset_parameter": "altitude_offset",
1297 "floors": [
1298 {
1299 "parameter": "pcie_floor_index",
1300 "floors": [
1301 { "value": 1, "floor": 6000 },
1302 { "value": 2, "floor": 7000 },
1303 { "value": 3, "floor": 8000 }
1304 ]
1305 }
1306 ]
1307 },
1308 {
1309 // Entry valid for ambient temp < 32
1310 "key": 32,
1311 "default_floor": 5000,
1312 "floor_offset_parameter": "altitude_offset",
1313 "floors": [
1314 {
1315 "parameter": "pcie_floor_index",
1316 "floors": [
1317 { "value": 1, "floor": 7000 },
1318 { "value": 2, "floor": 9000 },
1319 { "value": 3, "floor": 9500 }
1320 ]
1321 }
1322 ]
1323 },
1324 {
1325 // Entry valid for ambient temp < 37
1326 "key": 37,
1327 "default_floor": 6000,
1328 "floor_offset_parameter": "altitude_offset",
1329 "floors": [
1330 {
1331 "parameter": "pcie_floor_index",
1332 "floors": [
1333 { "value": 1, "floor": 9000 },
1334 { "value": 2, "floor": 9500 },
1335 { "value": 3, "floor": 10400 }
1336 ]
1337 }
1338 ]
1339 },
1340 {
1341 // Entry valid for ambient temp < 42
1342 "key": 42,
1343 "default_floor": 8000,
1344 "floor_offset_parameter": "altitude_offset",
1345 "floors": [
1346 {
1347 "parameter": "pcie_floor_index",
1348 "floors": [
1349 { "value": 1, "floor": 9500 },
1350 { "value": 2, "floor": 10400 },
1351 { "value": 3, "floor": 10400 }
1352 ]
1353 }
1354 ]
1355 }
1356 ]
Matt Spinlera97823a2023-01-12 09:58:19 -06001357 },
1358 {
1359 "name": "mapped_floor",
1360 "key_group": "ambient temp",
1361 "condition_group": "cpu 0 inventory",
1362 "condition_value": "5CF9",
1363 "condition_op": "equal",
1364 "fan_floors": [
1365 {
1366 // Entry valid for ambient temp < 27
1367 "key": 27,
1368 "default_floor": 5000,
1369 "floor_offset_parameter": "altitude_offset",
1370 "floors": [
1371 {
1372 "parameter": "pcie_floor_index",
1373 "floors": [
1374 { "value": 1, "floor": 7000 },
1375 { "value": 2, "floor": 8000 },
1376 { "value": 3, "floor": 9000 }
1377 ]
1378 }
1379 ]
1380 },
1381 {
1382 // Entry valid for ambient temp < 32
1383 "key": 32,
1384 "default_floor": 6000,
1385 "floor_offset_parameter": "altitude_offset",
1386 "floors": [
1387 {
1388 "parameter": "pcie_floor_index",
1389 "floors": [
1390 { "value": 1, "floor": 8000 },
1391 { "value": 2, "floor": 9000 },
1392 { "value": 3, "floor": 9500 }
1393 ]
1394 }
1395 ]
1396 },
1397 {
1398 // Entry valid for ambient temp < 37
1399 "key": 37,
1400 "default_floor": 7000,
1401 "floor_offset_parameter": "altitude_offset",
1402 "floors": [
1403 {
1404 "parameter": "pcie_floor_index",
1405 "floors": [
1406 { "value": 1, "floor": 9000 },
1407 { "value": 2, "floor": 9500 },
1408 { "value": 3, "floor": 10400 }
1409 ]
1410 }
1411 ]
1412 },
1413 {
1414 // Entry valid for ambient temp < 42
1415 "key": 42,
1416 "default_floor": 8000,
1417 "floor_offset_parameter": "altitude_offset",
1418 "floors": [
1419 {
1420 "parameter": "pcie_floor_index",
1421 "floors": [
1422 { "value": 1, "floor": 9500 },
1423 { "value": 2, "floor": 10400 },
1424 { "value": 3, "floor": 10400 }
1425 ]
1426 }
1427 ]
1428 }
1429 ]
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001430 }
1431 ]
1432 }
Matthew Barthb477a562021-10-19 14:39:19 -05001433]