blob: 017ffd15e2d1dc536760c1554db2b5073654e3a6 [file] [log] [blame]
Matthew Barthf0f213c2021-10-19 13:32:31 -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": 18000
28 }
Matt Spinlerc02a8262022-01-05 15:12:10 -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": "fan3 rotor inventory",
52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53 "property": { "name": "Functional" }
54 },
55 {
56 "name": "fan4 rotor inventory",
57 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
58 "property": { "name": "Functional" }
59 },
60 {
61 "name": "fan5 rotor inventory",
62 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
63 "property": { "name": "Functional" }
64 }
65 ],
66 "triggers": [
67 {
68 "class": "init",
69 "method": "get_properties"
70 },
71 {
72 "class": "signal",
73 "signal": "properties_changed"
74 }
75 ],
76 "actions": [
77 {
78 "name": "count_state_before_target",
79 "count": 1,
80 "state": false,
81 "target": 18000
82 }
83 ]
84 },
85 {
86 // (for the following 6 rules)
87 // if a dual-rotor fan becomes non-functional, lock its speed to
88 // poweron_target to lock the other rotor to full_speed
89 "name": "nonfunc rotor override-0",
90 "groups": [
91 {
92 "name": "fan0 rotor inventory",
93 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
94 "property": { "name": "Functional" }
95 }
96 ],
97 "triggers": [
98 {
99 "class": "init",
100 "method": "get_properties"
101 },
102 {
103 "class": "signal",
104 "signal": "properties_changed"
105 }
106 ],
107 "actions": [
108 {
109 "name": "override_fan_target",
110 "count": 1,
111 "state": false,
112 "fans": ["fan0"],
113 "target": 18000
114 }
115 ]
116 },
117 {
118 "name": "nonfunc rotor override-1",
119 "groups": [
120 {
121 "name": "fan1 rotor inventory",
122 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
123 "property": { "name": "Functional" }
124 }
125 ],
126 "triggers": [
127 {
128 "class": "init",
129 "method": "get_properties"
130 },
131 {
132 "class": "signal",
133 "signal": "properties_changed"
134 }
135 ],
136 "actions": [
137 {
138 "name": "override_fan_target",
139 "count": 1,
140 "state": false,
141 "fans": ["fan1"],
142 "target": 18000
143 }
144 ]
145 },
146 {
147 "name": "nonfunc rotor override-2",
148 "groups": [
149 {
150 "name": "fan2 rotor inventory",
151 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
152 "property": { "name": "Functional" }
153 }
154 ],
155 "triggers": [
156 {
157 "class": "init",
158 "method": "get_properties"
159 },
160 {
161 "class": "signal",
162 "signal": "properties_changed"
163 }
164 ],
165 "actions": [
166 {
167 "name": "override_fan_target",
168 "count": 1,
169 "state": false,
170 "fans": ["fan2"],
171 "target": 18000
172 }
173 ]
174 },
175 {
176 "name": "nonfunc rotor override-3",
177 "groups": [
178 {
179 "name": "fan3 rotor inventory",
180 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
181 "property": { "name": "Functional" }
182 }
183 ],
184 "triggers": [
185 {
186 "class": "init",
187 "method": "get_properties"
188 },
189 {
190 "class": "signal",
191 "signal": "properties_changed"
192 }
193 ],
194 "actions": [
195 {
196 "name": "override_fan_target",
197 "count": 1,
198 "state": false,
199 "fans": ["fan3"],
200 "target": 18000
201 }
202 ]
203 },
204 {
205 "name": "nonfunc rotor override-4",
206 "groups": [
207 {
208 "name": "fan4 rotor inventory",
209 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
210 "property": { "name": "Functional" }
211 }
212 ],
213 "triggers": [
214 {
215 "class": "init",
216 "method": "get_properties"
217 },
218 {
219 "class": "signal",
220 "signal": "properties_changed"
221 }
222 ],
223 "actions": [
224 {
225 "name": "override_fan_target",
226 "count": 1,
227 "state": false,
228 "fans": ["fan4"],
229 "target": 18000
230 }
231 ]
232 },
233 {
234 "name": "nonfunc rotor override-5",
235 "groups": [
236 {
237 "name": "fan5 rotor inventory",
238 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
239 "property": { "name": "Functional" }
240 }
241 ],
242 "triggers": [
243 {
244 "class": "init",
245 "method": "get_properties"
246 },
247 {
248 "class": "signal",
249 "signal": "properties_changed"
250 }
251 ],
252 "actions": [
253 {
254 "name": "override_fan_target",
255 "count": 1,
256 "state": false,
257 "fans": ["fan5"],
258 "target": 18000
259 }
260 ]
261 },
262 {
263 // Hold fans at the given target when any critical service
264 // is not running for 5 seconds.
265 "name": "service(s) missing",
266 "groups": [
267 {
268 "name": "fan inventory",
269 "interface": "xyz.openbmc_project.Inventory.Item",
270 "property": { "name": "Present" }
271 },
272 {
273 "name": "occ objects",
274 "interface": "org.open_power.OCC.Status",
275 "property": { "name": "OccActive" }
276 },
277 {
278 "name": "nvme temps",
279 "interface": "xyz.openbmc_project.Sensor.Value",
280 "property": { "name": "Value" }
281 },
282 {
283 "name": "planar temps",
284 "interface": "xyz.openbmc_project.Sensor.Value",
285 "property": { "name": "Value" }
286 },
287 {
288 "name": "flett temps",
289 "interface": "xyz.openbmc_project.Sensor.Value",
290 "property": { "name": "Value" }
291 },
292 {
293 "name": "pcie cable card temps",
294 "interface": "xyz.openbmc_project.Sensor.Value",
295 "property": { "name": "Value" }
296 },
297 {
298 "name": "ambient temp",
299 "interface": "xyz.openbmc_project.Sensor.Value",
300 "property": { "name": "Value" }
301 },
302 {
303 "name": "altitude",
304 "interface": "xyz.openbmc_project.Sensor.Value",
305 "property": { "name": "Value" }
306 }
307 ],
308 "triggers": [
309 {
310 "class": "init",
311 "method": "name_has_owner"
312 },
313 {
314 "class": "signal",
315 "signal": "name_owner_changed"
316 }
317 ],
318 "actions": [
319 {
320 "name": "call_actions_based_on_timer",
321 "timer": {
322 "interval": 5000000,
323 "type": "oneshot"
324 },
325 "actions": [
326 {
327 "name": "set_target_on_missing_owner",
328 "groups": [
329 {
330 "name": "fan inventory",
331 "interface": "xyz.openbmc_project.Inventory.Item",
332 "property": { "name": "Present" }
333 },
334 {
335 "name": "occ objects",
336 "interface": "org.open_power.OCC.Status",
337 "property": { "name": "OccActive" }
338 },
339 {
340 "name": "nvme temps",
341 "interface": "xyz.openbmc_project.Sensor.Value",
342 "property": { "name": "Value" }
343 },
344 {
345 "name": "planar temps",
346 "interface": "xyz.openbmc_project.Sensor.Value",
347 "property": { "name": "Value" }
348 },
349 {
350 "name": "flett temps",
351 "interface": "xyz.openbmc_project.Sensor.Value",
352 "property": { "name": "Value" }
353 },
354 {
355 "name": "pcie cable card temps",
356 "interface": "xyz.openbmc_project.Sensor.Value",
357 "property": { "name": "Value" }
358 },
359 {
360 "name": "ambient temp",
361 "interface": "xyz.openbmc_project.Sensor.Value",
362 "property": { "name": "Value" }
363 }
364 ],
365 "target": 18000
366 }
367 ]
368 }
369 ]
370 },
371 {
372 // Set a fan floor if an OCC isn't active
373 "name": "Non-active OCCs",
374 "groups": [
375 {
376 "name": "occ objects",
377 "interface": "org.open_power.OCC.Status",
378 "property": {
379 "name": "OccActive"
380 }
381 }
382 ],
383 "triggers": [
384 {
385 "class": "signal",
386 "signal": "properties_changed"
387 },
388 {
389 "class": "signal",
390 "signal": "interfaces_added"
391 },
392 {
393 "class": "init",
394 "method": "get_properties"
395 }
396 ],
397 "actions": [
398 {
399 "name": "count_state_floor",
400 "count": 1,
401 "state": false,
402 "floor": 18000
403 }
404 ]
405 },
406 {
407 // Set a raised fan floor when any temperature or altitude sensor is
408 // nonfunctional
409 "name": "Nonfunctional temperature sensors",
410 "groups": [
411 {
412 "name": "proc0 core temps",
413 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
414 "property": { "name": "Functional" }
415 },
416 {
417 "name": "proc1 core temps",
418 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
419 "property": { "name": "Functional" }
420 },
421 {
422 "name": "proc2 core temps",
423 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
424 "property": { "name": "Functional" }
425 },
426 {
427 "name": "proc3 core temps",
428 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
429 "property": { "name": "Functional" }
430 },
431 {
432 "name": "proc0 ioring temp",
433 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
434 "property": { "name": "Functional" }
435 },
436 {
437 "name": "proc1 ioring temp",
438 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
439 "property": { "name": "Functional" }
440 },
441 {
442 "name": "proc2 ioring temp",
443 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
444 "property": { "name": "Functional" }
445 },
446 {
447 "name": "proc3 ioring temp",
448 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
449 "property": { "name": "Functional" }
450 },
451 {
452 "name": "dram temps",
453 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
454 "property": { "name": "Functional" }
455 },
456 {
457 "name": "pmic temps",
458 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
459 "property": { "name": "Functional" }
460 },
461 {
462 "name": "internal memory buffer temps",
463 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
464 "property": { "name": "Functional" }
465 },
466 {
467 "name": "dram and external memory buffer temps",
468 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
469 "property": { "name": "Functional" }
470 },
471 {
472 "name": "external memory buffer temps",
473 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
474 "property": { "name": "Functional" }
475 },
476 {
477 "name": "vdd vrm temps",
478 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
479 "property": { "name": "Functional" }
480 },
481 {
482 "name": "nvme temps",
483 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
484 "property": { "name": "Functional" }
485 },
486 {
487 "name": "planar temps",
488 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
489 "property": { "name": "Functional" }
490 },
491 {
492 "name": "flett temps",
493 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
494 "property": { "name": "Functional" }
495 },
496 {
497 "name": "pcie cable card temps",
498 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
499 "property": { "name": "Functional" }
500 },
501 {
502 "name": "ambient temp",
503 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
504 "property": { "name": "Functional" }
505 },
506 {
507 "name": "altitude",
508 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
509 "property": { "name": "Functional" }
510 }
511 ],
512 "triggers": [
513 {
514 "class": "signal",
515 "signal": "properties_changed"
516 },
517 {
518 "class": "signal",
519 "signal": "interfaces_added"
520 },
521 {
522 "class": "signal",
523 "signal": "interfaces_removed"
524 },
525 {
526 "class": "init",
527 "method": "get_properties"
528 }
529 ],
530 "actions": [
531 {
532 "name": "count_state_floor",
533 "count": 1,
534 "state": false,
535 "floor": 18000
536 }
537 ]
538 },
539 {
540 "name": "Set Proc 0 Core DVFS parameter",
541 "groups": [
542 {
543 "name": "proc 0 core dvfs temp",
544 "interface": "xyz.openbmc_project.Sensor.Value",
545 "property": { "name": "Value" }
546 }
547 ],
548 "triggers": [
549 {
550 "class": "init",
551 "method": "get_properties"
552 },
553 {
554 "class": "signal",
555 "signal": "interfaces_added"
556 },
557 {
558 "class": "signal",
559 "signal": "properties_changed"
560 }
561 ],
562 "actions": [
563 {
564 "name": "set_parameter_from_group_max",
565 "parameter_name": "proc_0_core_dvfs_increase_temp",
566 "modifier": {
567 "operator": "minus",
568 "value": 10
569 }
570 },
571 {
572 "name": "set_parameter_from_group_max",
573 "parameter_name": "proc_0_core_dvfs_decrease_temp",
574 "modifier": {
575 "operator": "minus",
576 "value": 13
577 }
578 }
579 ]
580 },
581 {
582 "name": "Set Proc 1 Core DVFS parameter",
583 "groups": [
584 {
585 "name": "proc 1 core dvfs temp",
586 "interface": "xyz.openbmc_project.Sensor.Value",
587 "property": { "name": "Value" }
588 }
589 ],
590 "triggers": [
591 {
592 "class": "init",
593 "method": "get_properties"
594 },
595 {
596 "class": "signal",
597 "signal": "interfaces_added"
598 },
599 {
600 "class": "signal",
601 "signal": "properties_changed"
602 }
603 ],
604 "actions": [
605 {
606 "name": "set_parameter_from_group_max",
607 "parameter_name": "proc_1_core_dvfs_increase_temp",
608 "modifier": {
609 "operator": "minus",
610 "value": 10
611 }
612 },
613 {
614 "name": "set_parameter_from_group_max",
615 "parameter_name": "proc_1_core_dvfs_decrease_temp",
616 "modifier": {
617 "operator": "minus",
618 "value": 13
619 }
620 }
621 ]
622 },
623 {
624 "name": "Set Proc 2 Core DVFS parameter",
625 "groups": [
626 {
627 "name": "proc 2 core dvfs temp",
628 "interface": "xyz.openbmc_project.Sensor.Value",
629 "property": { "name": "Value" }
630 }
631 ],
632 "triggers": [
633 {
634 "class": "init",
635 "method": "get_properties"
636 },
637 {
638 "class": "signal",
639 "signal": "interfaces_added"
640 },
641 {
642 "class": "signal",
643 "signal": "properties_changed"
644 }
645 ],
646 "actions": [
647 {
648 "name": "set_parameter_from_group_max",
649 "parameter_name": "proc_2_core_dvfs_increase_temp",
650 "modifier": {
651 "operator": "minus",
652 "value": 10
653 }
654 },
655 {
656 "name": "set_parameter_from_group_max",
657 "parameter_name": "proc_2_core_dvfs_decrease_temp",
658 "modifier": {
659 "operator": "minus",
660 "value": 13
661 }
662 }
663 ]
664 },
665 {
666 "name": "Set Proc 3 Core DVFS parameter",
667 "groups": [
668 {
669 "name": "proc 3 core dvfs temp",
670 "interface": "xyz.openbmc_project.Sensor.Value",
671 "property": { "name": "Value" }
672 }
673 ],
674 "triggers": [
675 {
676 "class": "init",
677 "method": "get_properties"
678 },
679 {
680 "class": "signal",
681 "signal": "interfaces_added"
682 },
683 {
684 "class": "signal",
685 "signal": "properties_changed"
686 }
687 ],
688 "actions": [
689 {
690 "name": "set_parameter_from_group_max",
691 "parameter_name": "proc_3_core_dvfs_increase_temp",
692 "modifier": {
693 "operator": "minus",
694 "value": 10
695 }
696 },
697 {
698 "name": "set_parameter_from_group_max",
699 "parameter_name": "proc_3_core_dvfs_decrease_temp",
700 "modifier": {
701 "operator": "minus",
702 "value": 13
703 }
704 }
705 ]
706 },
707 {
708 "name": "Set Proc 0 IO Ring DVFS parameter",
709 "groups": [
710 {
711 "name": "proc 0 ioring dvfs temp",
712 "interface": "xyz.openbmc_project.Sensor.Value",
713 "property": { "name": "Value" }
714 }
715 ],
716 "triggers": [
717 {
718 "class": "init",
719 "method": "get_properties"
720 },
721 {
722 "class": "signal",
723 "signal": "interfaces_added"
724 },
725 {
726 "class": "signal",
727 "signal": "properties_changed"
728 }
729 ],
730 "actions": [
731 {
732 "name": "set_parameter_from_group_max",
733 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
734 "modifier": {
735 "operator": "minus",
736 "value": 10
737 }
738 },
739 {
740 "name": "set_parameter_from_group_max",
741 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
742 "modifier": {
743 "operator": "minus",
744 "value": 13
745 }
746 }
747 ]
748 },
749 {
750 "name": "Set Proc 1 IO Ring DVFS parameter",
751 "groups": [
752 {
753 "name": "proc 1 ioring dvfs temp",
754 "interface": "xyz.openbmc_project.Sensor.Value",
755 "property": { "name": "Value" }
756 }
757 ],
758 "triggers": [
759 {
760 "class": "init",
761 "method": "get_properties"
762 },
763 {
764 "class": "signal",
765 "signal": "interfaces_added"
766 },
767 {
768 "class": "signal",
769 "signal": "properties_changed"
770 }
771 ],
772 "actions": [
773 {
774 "name": "set_parameter_from_group_max",
775 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
776 "modifier": {
777 "operator": "minus",
778 "value": 10
779 }
780 },
781 {
782 "name": "set_parameter_from_group_max",
783 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
784 "modifier": {
785 "operator": "minus",
786 "value": 13
787 }
788 }
789 ]
790 },
791 {
792 "name": "Set Proc 2 IO Ring DVFS parameter",
793 "groups": [
794 {
795 "name": "proc 2 ioring dvfs temp",
796 "interface": "xyz.openbmc_project.Sensor.Value",
797 "property": { "name": "Value" }
798 }
799 ],
800 "triggers": [
801 {
802 "class": "init",
803 "method": "get_properties"
804 },
805 {
806 "class": "signal",
807 "signal": "interfaces_added"
808 },
809 {
810 "class": "signal",
811 "signal": "properties_changed"
812 }
813 ],
814 "actions": [
815 {
816 "name": "set_parameter_from_group_max",
817 "parameter_name": "proc_2_ioring_dvfs_increase_temp",
818 "modifier": {
819 "operator": "minus",
820 "value": 10
821 }
822 },
823 {
824 "name": "set_parameter_from_group_max",
825 "parameter_name": "proc_2_ioring_dvfs_decrease_temp",
826 "modifier": {
827 "operator": "minus",
828 "value": 13
829 }
830 }
831 ]
832 },
833 {
834 "name": "Set Proc 3 IO Ring DVFS parameter",
835 "groups": [
836 {
837 "name": "proc 3 ioring dvfs temp",
838 "interface": "xyz.openbmc_project.Sensor.Value",
839 "property": { "name": "Value" }
840 }
841 ],
842 "triggers": [
843 {
844 "class": "init",
845 "method": "get_properties"
846 },
847 {
848 "class": "signal",
849 "signal": "properties_changed"
850 },
851 {
852 "class": "signal",
853 "signal": "interfaces_added"
854 }
855 ],
856 "actions": [
857 {
858 "name": "set_parameter_from_group_max",
859 "parameter_name": "proc_3_ioring_dvfs_increase_temp",
860 "modifier": {
861 "operator": "minus",
862 "value": 10
863 }
864 },
865 {
866 "name": "set_parameter_from_group_max",
867 "parameter_name": "proc_3_ioring_dvfs_decrease_temp",
868 "modifier": {
869 "operator": "minus",
870 "value": 13
871 }
872 }
873 ]
874 },
875 {
Matt Spinler667922d2023-11-09 12:55:31 -0600876 "name": "Set DRAM DVFS parameter",
877 "groups": [
878 {
879 "name": "dram dvfs temp",
880 "interface": "xyz.openbmc_project.Sensor.Value",
881 "property": { "name": "Value" }
882 }
883 ],
884 "triggers": [
885 {
886 "class": "init",
887 "method": "get_properties"
888 },
889 {
890 "class": "signal",
891 "signal": "properties_changed"
892 },
893 {
894 "class": "signal",
895 "signal": "interfaces_added"
896 }
897 ],
898 "actions": [
899 {
900 "name": "set_parameter_from_group_max",
901 "parameter_name": "dram_dvfs_increase_temp",
902 "modifier": {
903 "operator": "minus",
904 "value": 9
905 }
906 },
907 {
908 "name": "set_parameter_from_group_max",
909 "parameter_name": "dram_dvfs_decrease_temp",
910 "modifier": {
911 "operator": "minus",
912 "value": 12
913 }
914 }
915 ]
916 },
917 {
918 "name": "Set PMIC DVFS parameter",
919 "groups": [
920 {
921 "name": "pmic dvfs temp",
922 "interface": "xyz.openbmc_project.Sensor.Value",
923 "property": { "name": "Value" }
924 }
925 ],
926 "triggers": [
927 {
928 "class": "init",
929 "method": "get_properties"
930 },
931 {
932 "class": "signal",
933 "signal": "properties_changed"
934 },
935 {
936 "class": "signal",
937 "signal": "interfaces_added"
938 }
939 ],
940 "actions": [
941 {
942 "name": "set_parameter_from_group_max",
943 "parameter_name": "pmic_dvfs_increase_temp",
944 "modifier": {
945 "operator": "minus",
946 "value": 9
947 }
948 },
949 {
950 "name": "set_parameter_from_group_max",
951 "parameter_name": "pmic_dvfs_decrease_temp",
952 "modifier": {
953 "operator": "minus",
954 "value": 12
955 }
956 }
957 ]
958 },
959 {
960 "name": "Set internal memory buffer DVFS parameter",
961 "groups": [
962 {
963 "name": "internal memory buffer dvfs temp",
964 "interface": "xyz.openbmc_project.Sensor.Value",
965 "property": { "name": "Value" }
966 }
967 ],
968 "triggers": [
969 {
970 "class": "init",
971 "method": "get_properties"
972 },
973 {
974 "class": "signal",
975 "signal": "properties_changed"
976 },
977 {
978 "class": "signal",
979 "signal": "interfaces_added"
980 }
981 ],
982 "actions": [
983 {
984 "name": "set_parameter_from_group_max",
985 "parameter_name": "intmb_dvfs_increase_temp",
986 "modifier": {
987 "operator": "minus",
988 "value": 10
989 }
990 },
991 {
992 "name": "set_parameter_from_group_max",
993 "parameter_name": "intmb_dvfs_decrease_temp",
994 "modifier": {
995 "operator": "minus",
996 "value": 13
997 }
998 }
999 ]
1000 },
1001 {
1002 "name": "Set DRAM and external memory buffer DVFS parameter",
1003 "groups": [
1004 {
1005 "name": "dram and external memory buffer dvfs temp",
1006 "interface": "xyz.openbmc_project.Sensor.Value",
1007 "property": { "name": "Value" }
1008 }
1009 ],
1010 "triggers": [
1011 {
1012 "class": "init",
1013 "method": "get_properties"
1014 },
1015 {
1016 "class": "signal",
1017 "signal": "properties_changed"
1018 },
1019 {
1020 "class": "signal",
1021 "signal": "interfaces_added"
1022 }
1023 ],
1024 "actions": [
1025 {
1026 "name": "set_parameter_from_group_max",
1027 "parameter_name": "dram_extmb_dvfs_increase_temp",
1028 "modifier": {
1029 "operator": "minus",
1030 "value": 10
1031 }
1032 },
1033 {
1034 "name": "set_parameter_from_group_max",
1035 "parameter_name": "dram_extmb_dvfs_decrease_temp",
1036 "modifier": {
1037 "operator": "minus",
1038 "value": 13
1039 }
1040 }
1041 ]
1042 },
1043 {
1044 "name": "Set external memory buffer DVFS parameter",
1045 "groups": [
1046 {
1047 "name": "external memory buffer dvfs temp",
1048 "interface": "xyz.openbmc_project.Sensor.Value",
1049 "property": { "name": "Value" }
1050 }
1051 ],
1052 "triggers": [
1053 {
1054 "class": "init",
1055 "method": "get_properties"
1056 },
1057 {
1058 "class": "signal",
1059 "signal": "properties_changed"
1060 },
1061 {
1062 "class": "signal",
1063 "signal": "interfaces_added"
1064 }
1065 ],
1066 "actions": [
1067 {
1068 "name": "set_parameter_from_group_max",
1069 "parameter_name": "extmb_dvfs_increase_temp",
1070 "modifier": {
1071 "operator": "minus",
1072 "value": 10
1073 }
1074 },
1075 {
1076 "name": "set_parameter_from_group_max",
1077 "parameter_name": "extmb_dvfs_decrease_temp",
1078 "modifier": {
1079 "operator": "minus",
1080 "value": 13
1081 }
1082 }
1083 ]
1084 },
1085 {
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001086 // Collect group temperatures each iteration the repeating timer expires
1087 "name": "Fan control timer loop",
1088 "groups": [
1089 {
1090 "name": "proc0 core temps",
1091 "interface": "xyz.openbmc_project.Sensor.Value",
1092 "property": { "name": "Value" }
1093 },
1094 {
1095 "name": "proc1 core temps",
1096 "interface": "xyz.openbmc_project.Sensor.Value",
1097 "property": { "name": "Value" }
1098 },
1099 {
1100 "name": "proc2 core temps",
1101 "interface": "xyz.openbmc_project.Sensor.Value",
1102 "property": { "name": "Value" }
1103 },
1104 {
1105 "name": "proc3 core temps",
1106 "interface": "xyz.openbmc_project.Sensor.Value",
1107 "property": { "name": "Value" }
1108 },
1109 {
1110 "name": "proc0 ioring temp",
1111 "interface": "xyz.openbmc_project.Sensor.Value",
1112 "property": { "name": "Value" }
1113 },
1114 {
1115 "name": "proc1 ioring temp",
1116 "interface": "xyz.openbmc_project.Sensor.Value",
1117 "property": { "name": "Value" }
1118 },
1119 {
1120 "name": "proc2 ioring temp",
1121 "interface": "xyz.openbmc_project.Sensor.Value",
1122 "property": { "name": "Value" }
1123 },
1124 {
1125 "name": "proc3 ioring temp",
1126 "interface": "xyz.openbmc_project.Sensor.Value",
1127 "property": { "name": "Value" }
1128 },
1129 {
1130 "name": "dram temps",
1131 "interface": "xyz.openbmc_project.Sensor.Value",
1132 "property": { "name": "Value" }
1133 },
1134 {
1135 "name": "pmic temps",
1136 "interface": "xyz.openbmc_project.Sensor.Value",
1137 "property": { "name": "Value" }
1138 },
1139 {
1140 "name": "internal memory buffer temps",
1141 "interface": "xyz.openbmc_project.Sensor.Value",
1142 "property": { "name": "Value" }
1143 },
1144 {
1145 "name": "dram and external memory buffer temps",
1146 "interface": "xyz.openbmc_project.Sensor.Value",
1147 "property": { "name": "Value" }
1148 },
1149 {
1150 "name": "external memory buffer temps",
1151 "interface": "xyz.openbmc_project.Sensor.Value",
1152 "property": { "name": "Value" }
1153 },
1154 {
1155 "name": "vdd vrm temps",
1156 "interface": "xyz.openbmc_project.Sensor.Value",
1157 "property": { "name": "Value" }
1158 },
1159 {
1160 "name": "nvme temps",
1161 "interface": "xyz.openbmc_project.Sensor.Value",
1162 "property": { "name": "Value" }
1163 },
1164 {
1165 "name": "planar temps",
1166 "interface": "xyz.openbmc_project.Sensor.Value",
1167 "property": { "name": "Value" }
1168 },
1169 {
1170 "name": "flett temps",
1171 "interface": "xyz.openbmc_project.Sensor.Value",
1172 "property": { "name": "Value" }
1173 },
1174 {
1175 "name": "pcie cable card temps",
1176 "interface": "xyz.openbmc_project.Sensor.Value",
1177 "property": { "name": "Value" }
1178 }
1179 ],
1180 "triggers": [
1181 {
1182 "class": "timer",
1183 "type": "repeating",
1184 "interval": 2000000,
1185 "preload_groups": true
1186 }
1187 ],
1188 "actions": [
1189 {
1190 "name": "set_net_increase_target",
1191 "groups": [
1192 {
1193 "name": "proc0 core temps",
1194 "interface": "xyz.openbmc_project.Sensor.Value",
1195 "property": { "name": "Value" }
1196 }
1197 ],
1198 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
1199 "delta": 300
1200 },
1201 {
1202 "name": "set_net_increase_target",
1203 "groups": [
1204 {
1205 "name": "proc1 core temps",
1206 "interface": "xyz.openbmc_project.Sensor.Value",
1207 "property": { "name": "Value" }
1208 }
1209 ],
1210 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
1211 "delta": 300
1212 },
1213 {
1214 "name": "set_net_increase_target",
1215 "groups": [
1216 {
1217 "name": "proc2 core temps",
1218 "interface": "xyz.openbmc_project.Sensor.Value",
1219 "property": { "name": "Value" }
1220 }
1221 ],
1222 "state_parameter_name": "proc_2_core_dvfs_increase_temp",
1223 "delta": 300
1224 },
1225 {
1226 "name": "set_net_increase_target",
1227 "groups": [
1228 {
1229 "name": "proc3 core temps",
1230 "interface": "xyz.openbmc_project.Sensor.Value",
1231 "property": { "name": "Value" }
1232 }
1233 ],
1234 "state_parameter_name": "proc_3_core_dvfs_increase_temp",
1235 "delta": 300
1236 },
1237 {
1238 "name": "set_net_increase_target",
1239 "groups": [
1240 {
1241 "name": "proc0 ioring temp",
1242 "interface": "xyz.openbmc_project.Sensor.Value",
1243 "property": { "name": "Value" }
1244 }
1245 ],
1246 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
1247 "delta": 300
1248 },
1249 {
1250 "name": "set_net_increase_target",
1251 "groups": [
1252 {
1253 "name": "proc1 ioring temp",
1254 "interface": "xyz.openbmc_project.Sensor.Value",
1255 "property": { "name": "Value" }
1256 }
1257 ],
1258 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
1259 "delta": 300
1260 },
1261 {
1262 "name": "set_net_increase_target",
1263 "groups": [
1264 {
1265 "name": "proc2 ioring temp",
1266 "interface": "xyz.openbmc_project.Sensor.Value",
1267 "property": { "name": "Value" }
1268 }
1269 ],
1270 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp",
1271 "delta": 300
1272 },
1273 {
1274 "name": "set_net_increase_target",
1275 "groups": [
1276 {
1277 "name": "proc3 ioring temp",
1278 "interface": "xyz.openbmc_project.Sensor.Value",
1279 "property": { "name": "Value" }
1280 }
1281 ],
1282 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp",
1283 "delta": 300
1284 },
1285 {
1286 "name": "set_net_increase_target",
1287 "groups": [
1288 {
1289 "name": "dram temps",
1290 "interface": "xyz.openbmc_project.Sensor.Value",
1291 "property": { "name": "Value" }
1292 }
1293 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001294 "state_parameter_name": "dram_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001295 "delta": 100
1296 },
1297 {
1298 "name": "set_net_increase_target",
1299 "groups": [
1300 {
1301 "name": "pmic temps",
1302 "interface": "xyz.openbmc_project.Sensor.Value",
1303 "property": { "name": "Value" }
1304 }
1305 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001306 "state_parameter_name": "pmic_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001307 "delta": 100
1308 },
1309 {
1310 "name": "set_net_increase_target",
1311 "groups": [
1312 {
1313 "name": "internal memory buffer temps",
1314 "interface": "xyz.openbmc_project.Sensor.Value",
1315 "property": { "name": "Value" }
1316 }
1317 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001318 "state_parameter_name": "intmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001319 "delta": 100
1320 },
1321 {
1322 "name": "set_net_increase_target",
1323 "groups": [
1324 {
1325 "name": "dram and external memory buffer temps",
1326 "interface": "xyz.openbmc_project.Sensor.Value",
1327 "property": { "name": "Value" }
1328 }
1329 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001330 "state_parameter_name": "dram_extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001331 "delta": 200
1332 },
1333 {
1334 "name": "set_net_increase_target",
1335 "groups": [
1336 {
1337 "name": "external memory buffer temps",
1338 "interface": "xyz.openbmc_project.Sensor.Value",
1339 "property": { "name": "Value" }
1340 }
1341 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001342 "state_parameter_name": "extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001343 "delta": 200
1344 },
1345 {
1346 "name": "set_net_increase_target",
1347 "groups": [
1348 {
1349 "name": "vdd vrm temps",
1350 "interface": "xyz.openbmc_project.Sensor.Value",
1351 "property": { "name": "Value" }
1352 }
1353 ],
1354 "state": 82.0,
1355 "delta": 300
1356 },
1357 {
1358 "name": "set_net_increase_target",
1359 "groups": [
1360 {
1361 "name": "nvme temps",
1362 "interface": "xyz.openbmc_project.Sensor.Value",
1363 "property": { "name": "Value" }
1364 }
1365 ],
1366 "state": 58.0,
1367 "delta": 200
1368 },
1369 {
1370 "name": "set_net_increase_target",
1371 "groups": [
1372 {
1373 "name": "planar temps",
1374 "interface": "xyz.openbmc_project.Sensor.Value",
1375 "property": { "name": "Value" }
1376 }
1377 ],
1378 "state": 65.0,
1379 "delta": 255
1380 },
1381 {
1382 "name": "set_net_increase_target",
1383 "groups": [
1384 {
1385 "name": "flett temps",
1386 "interface": "xyz.openbmc_project.Sensor.Value",
1387 "property": { "name": "Value" }
1388 }
1389 ],
1390 "state": 80.0,
1391 "delta": 200
1392 },
1393 {
1394 "name": "set_net_increase_target",
1395 "groups": [
1396 {
1397 "name": "pcie cable card temps",
1398 "interface": "xyz.openbmc_project.Sensor.Value",
1399 "property": { "name": "Value" }
1400 }
1401 ],
1402 "state": 70.0,
1403 "delta": 255
1404 },
1405 {
1406 "name": "set_net_decrease_target",
1407 "groups": [
1408 {
1409 "name": "proc0 core temps",
1410 "interface": "xyz.openbmc_project.Sensor.Value",
1411 "property": { "name": "Value" }
1412 }
1413 ],
1414 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
1415 "delta": 50
1416 },
1417 {
1418 "name": "set_net_decrease_target",
1419 "groups": [
1420 {
1421 "name": "proc1 core temps",
1422 "interface": "xyz.openbmc_project.Sensor.Value",
1423 "property": { "name": "Value" }
1424 }
1425 ],
1426 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
1427 "delta": 50
1428 },
1429 {
1430 "name": "set_net_decrease_target",
1431 "groups": [
1432 {
1433 "name": "proc2 core temps",
1434 "interface": "xyz.openbmc_project.Sensor.Value",
1435 "property": { "name": "Value" }
1436 }
1437 ],
1438 "state_parameter_name": "proc_2_core_dvfs_decrease_temp",
1439 "delta": 50
1440 },
1441 {
1442 "name": "set_net_decrease_target",
1443 "groups": [
1444 {
1445 "name": "proc3 core temps",
1446 "interface": "xyz.openbmc_project.Sensor.Value",
1447 "property": { "name": "Value" }
1448 }
1449 ],
1450 "state_parameter_name": "proc_3_core_dvfs_decrease_temp",
1451 "delta": 50
1452 },
1453 {
1454 "name": "set_net_decrease_target",
1455 "groups": [
1456 {
1457 "name": "proc0 ioring temp",
1458 "interface": "xyz.openbmc_project.Sensor.Value",
1459 "property": { "name": "Value" }
1460 }
1461 ],
1462 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
1463 "delta": 50
1464 },
1465 {
1466 "name": "set_net_decrease_target",
1467 "groups": [
1468 {
1469 "name": "proc1 ioring temp",
1470 "interface": "xyz.openbmc_project.Sensor.Value",
1471 "property": { "name": "Value" }
1472 }
1473 ],
1474 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
1475 "delta": 50
1476 },
1477 {
1478 "name": "set_net_decrease_target",
1479 "groups": [
1480 {
1481 "name": "proc2 ioring temp",
1482 "interface": "xyz.openbmc_project.Sensor.Value",
1483 "property": { "name": "Value" }
1484 }
1485 ],
1486 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp",
1487 "delta": 50
1488 },
1489 {
1490 "name": "set_net_decrease_target",
1491 "groups": [
1492 {
1493 "name": "proc3 ioring temp",
1494 "interface": "xyz.openbmc_project.Sensor.Value",
1495 "property": { "name": "Value" }
1496 }
1497 ],
1498 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp",
1499 "delta": 50
1500 },
1501 {
1502 "name": "set_net_decrease_target",
1503 "groups": [
1504 {
1505 "name": "dram temps",
1506 "interface": "xyz.openbmc_project.Sensor.Value",
1507 "property": { "name": "Value" }
1508 }
1509 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001510 "state_parameter_name": "dram_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001511 "delta": 40
1512 },
1513 {
1514 "name": "set_net_decrease_target",
1515 "groups": [
1516 {
1517 "name": "pmic temps",
1518 "interface": "xyz.openbmc_project.Sensor.Value",
1519 "property": { "name": "Value" }
1520 }
1521 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001522 "state_parameter_name": "pmic_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001523 "delta": 40
1524 },
1525 {
1526 "name": "set_net_decrease_target",
1527 "groups": [
1528 {
1529 "name": "internal memory buffer temps",
1530 "interface": "xyz.openbmc_project.Sensor.Value",
1531 "property": { "name": "Value" }
1532 }
1533 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001534 "state_parameter_name": "intmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001535 "delta": 40
1536 },
1537 {
1538 "name": "set_net_decrease_target",
1539 "groups": [
1540 {
1541 "name": "dram and external memory buffer temps",
1542 "interface": "xyz.openbmc_project.Sensor.Value",
1543 "property": { "name": "Value" }
1544 }
1545 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001546 "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001547 "delta": 40
1548 },
1549 {
1550 "name": "set_net_decrease_target",
1551 "groups": [
1552 {
1553 "name": "external memory buffer temps",
1554 "interface": "xyz.openbmc_project.Sensor.Value",
1555 "property": { "name": "Value" }
1556 }
1557 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001558 "state_parameter_name": "extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001559 "delta": 40
1560 },
1561 {
1562 "name": "set_net_decrease_target",
1563 "groups": [
1564 {
1565 "name": "vdd vrm temps",
1566 "interface": "xyz.openbmc_project.Sensor.Value",
1567 "property": { "name": "Value" }
1568 }
1569 ],
1570 "state": 79.0,
1571 "delta": 30
1572 },
1573 {
1574 "name": "set_net_decrease_target",
1575 "groups": [
1576 {
1577 "name": "nvme temps",
1578 "interface": "xyz.openbmc_project.Sensor.Value",
1579 "property": { "name": "Value" }
1580 }
1581 ],
1582 "state": 55.0,
1583 "delta": 40
1584 },
1585 {
1586 "name": "set_net_decrease_target",
1587 "groups": [
1588 {
1589 "name": "planar temps",
1590 "interface": "xyz.openbmc_project.Sensor.Value",
1591 "property": { "name": "Value" }
1592 }
1593 ],
1594 "state": 60.0,
1595 "delta": 80
1596 },
1597 {
1598 "name": "set_net_decrease_target",
1599 "groups": [
1600 {
1601 "name": "flett temps",
1602 "interface": "xyz.openbmc_project.Sensor.Value",
1603 "property": { "name": "Value" }
1604 }
1605 ],
1606 "state": 75.0,
1607 "delta": 80
1608 },
1609 {
1610 "name": "set_net_decrease_target",
1611 "groups": [
1612 {
1613 "name": "pcie cable card temps",
1614 "interface": "xyz.openbmc_project.Sensor.Value",
1615 "property": { "name": "Value" }
1616 }
1617 ],
1618 "state": 65.0,
1619 "delta": 80
1620 }
1621 ]
1622 },
1623 {
1624 // Remove NVMe temperature objects from cache when they are removed from
1625 // dbus. There's no need to react to their removal.
1626 "name": "remove nvme objects",
1627 "groups": [
1628 {
1629 "name": "nvme temps",
1630 "interface": "xyz.openbmc_project.Sensor.Value",
1631 "property": { "name": "Value" }
1632 },
1633 {
1634 "name": "nvme temps",
1635 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1636 "property": { "name": "Functional" }
1637 }
1638 ],
1639 "triggers": [
1640 {
1641 "class": "signal",
1642 "signal": "interfaces_removed"
1643 }
1644 ]
1645 },
1646 {
1647 "name": "set pcie floor index",
1648 "groups": [
1649 {
1650 "name": "pcie slots",
1651 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1652 "property": {
1653 "name": "PowerState"
1654 }
1655 },
1656 {
1657 "name": "pcie cards",
1658 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1659 "property": {
1660 "name": "Function0DeviceId"
1661 }
1662 },
1663 {
1664 "name": "pcie cards",
1665 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1666 "property": {
1667 "name": "Function0VendorId"
1668 }
1669 },
1670 {
1671 "name": "pcie cards",
1672 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1673 "property": {
1674 "name": "Function0SubsystemId"
1675 }
1676 },
1677 {
1678 "name": "pcie cards",
1679 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1680 "property": {
1681 "name": "Function0SubsystemVendorId"
1682 }
1683 }
1684 ],
1685 "triggers": [
1686 {
1687 "class": "init",
1688 "method": "get_properties"
1689 },
1690 {
1691 "class": "signal",
1692 "signal": "properties_changed"
1693 },
1694 {
1695 "class": "signal",
1696 "signal": "interfaces_added"
1697 }
1698 ],
1699 "actions": [
1700 {
1701 "name": "pcie_card_floors",
1702 "use_config_specific_files": true,
1703 "settle_time": 2
1704 }
1705 ]
1706 },
1707 {
1708 "name": "Set altitude offset parameter",
1709 "groups": [
1710 {
1711 "name": "altitude",
1712 "interface": "xyz.openbmc_project.Sensor.Value",
1713 "property": { "name": "Value" }
1714 }
1715 ],
1716 "triggers": [
1717 {
1718 "class": "init",
1719 "method": "get_properties"
1720 },
1721 {
1722 "class": "signal",
1723 "signal": "interfaces_added"
1724 },
1725 {
1726 // Refresh altitude every 24hrs
1727 "class": "timer",
1728 "type": "repeating",
1729 "interval": 86400000000,
1730 "preload_groups": true
1731 }
1732 ],
1733 "actions": [
1734 {
1735 "name": "set_parameter_from_group_max",
1736 "parameter_name": "ambient_20_altitude_offset",
1737 "modifier": {
1738 "operator": "less_than",
1739 "default_value": 10000,
1740 "value": [
1741 { "arg_value": 500, "parameter_value": 0 },
1742 { "arg_value": 1000, "parameter_value": 700 },
1743 { "arg_value": 1500, "parameter_value": 1600 },
1744 { "arg_value": 2000, "parameter_value": 2300 },
1745 { "arg_value": 2500, "parameter_value": 3200 },
1746 { "arg_value": 3300, "parameter_value": 4000 }
1747 ]
1748 }
1749 },
1750 {
1751 "name": "set_parameter_from_group_max",
1752 "parameter_name": "ambient_25_altitude_offset",
1753 "modifier": {
1754 "operator": "less_than",
1755 "default_value": 10000,
1756 "value": [
1757 { "arg_value": 500, "parameter_value": 0 },
1758 { "arg_value": 1000, "parameter_value": 1000 },
1759 { "arg_value": 1500, "parameter_value": 2100 },
1760 { "arg_value": 2000, "parameter_value": 3100 },
1761 { "arg_value": 2500, "parameter_value": 4100 },
1762 { "arg_value": 3300, "parameter_value": 4900 }
1763 ]
1764 }
1765 },
1766 {
1767 "name": "set_parameter_from_group_max",
1768 "parameter_name": "ambient_30_altitude_offset",
1769 "modifier": {
1770 "operator": "less_than",
1771 "default_value": 10000,
1772 "value": [
1773 { "arg_value": 500, "parameter_value": 0 },
1774 { "arg_value": 1000, "parameter_value": 1000 },
1775 { "arg_value": 1500, "parameter_value": 2100 },
1776 { "arg_value": 2000, "parameter_value": 3200 },
1777 { "arg_value": 2500, "parameter_value": 4000 },
1778 { "arg_value": 3300, "parameter_value": 4800 }
1779 ]
1780 }
1781 },
1782 {
1783 "name": "set_parameter_from_group_max",
1784 "parameter_name": "ambient_35_altitude_offset",
1785 "modifier": {
1786 "operator": "less_than",
1787 "default_value": 10000,
1788 "value": [
1789 { "arg_value": 500, "parameter_value": 0 },
1790 { "arg_value": 1000, "parameter_value": 900 },
1791 { "arg_value": 1500, "parameter_value": 1700 },
1792 { "arg_value": 2000, "parameter_value": 2500 },
1793 { "arg_value": 2500, "parameter_value": 3400 },
1794 { "arg_value": 3300, "parameter_value": 4200 }
1795 ]
1796 }
1797 },
1798 {
1799 "name": "set_parameter_from_group_max",
1800 "parameter_name": "ambient_40_altitude_offset",
1801 "modifier": {
1802 "operator": "less_than",
1803 "default_value": 10000,
1804 "value": [
1805 { "arg_value": 500, "parameter_value": 0 },
1806 { "arg_value": 1000, "parameter_value": 1000 },
1807 { "arg_value": 1500, "parameter_value": 1900 },
1808 { "arg_value": 2000, "parameter_value": 2800 },
1809 { "arg_value": 2500, "parameter_value": 3700 },
1810 { "arg_value": 3300, "parameter_value": 4500 }
1811 ]
1812 }
1813 }
1814 ]
1815 },
1816 {
1817 "name": "Fan floors",
1818 "groups": [
1819 {
1820 "name": "ambient temp",
1821 "interface": "xyz.openbmc_project.Sensor.Value",
1822 "property": { "name": "Value" }
1823 }
1824 ],
1825 "triggers": [
1826 {
1827 "class": "init",
1828 "method": "get_properties"
1829 },
1830 {
1831 "class": "signal",
1832 "signal": "properties_changed"
1833 },
1834 {
1835 "class": "signal",
1836 "signal": "interfaces_added"
1837 },
1838 {
1839 "class": "parameter",
1840 "parameter": "pcie_floor_index"
1841 },
1842 {
1843 "class": "parameter",
1844 "parameter": "ambient_20_altitude_offset"
1845 },
1846 {
1847 "class": "parameter",
1848 "parameter": "ambient_25_altitude_offset"
1849 },
1850 {
1851 "class": "parameter",
1852 "parameter": "ambient_30_altitude_offset"
1853 },
1854 {
1855 "class": "parameter",
1856 "parameter": "ambient_35_altitude_offset"
1857 },
1858 {
1859 "class": "parameter",
1860 "parameter": "ambient_40_altitude_offset"
1861 }
1862 ],
1863 "actions": [
1864 {
1865 "name": "mapped_floor",
1866 "key_group": "ambient temp",
1867 "fan_floors": [
1868 {
1869 // Entry valid for temps < 20
1870 "key": 20,
1871 "default_floor": 5400,
1872 "floor_offset_parameter": "ambient_20_altitude_offset",
1873 "floors": [
1874 {
1875 "parameter": "pcie_floor_index",
1876 "floors": [
1877 { "value": 1, "floor": 5600 },
1878 { "value": 2, "floor": 9000 },
1879 { "value": 3, "floor": 9000 },
1880 { "value": 4, "floor": 9200 },
1881 { "value": 5, "floor": 10600 }
1882 ]
1883 }
1884 ]
1885 },
1886 {
1887 // Entry valid for temps < 25
1888 "key": 25,
1889 "default_floor": 7300,
1890 "floor_offset_parameter": "ambient_25_altitude_offset",
1891 "floors": [
1892 {
1893 "parameter": "pcie_floor_index",
1894 "floors": [
1895 { "value": 1, "floor": 7800 },
1896 { "value": 2, "floor": 10700 },
1897 { "value": 3, "floor": 11300 },
1898 { "value": 4, "floor": 12700 },
1899 { "value": 5, "floor": 13900 }
1900 ]
1901 }
1902 ]
1903 },
1904 {
1905 // Entry valid for temps < 30
1906 "key": 30,
1907 "default_floor": 9100,
1908 "floor_offset_parameter": "ambient_30_altitude_offset",
1909 "floors": [
1910 {
1911 "parameter": "pcie_floor_index",
1912 "floors": [
1913 { "value": 1, "floor": 10300 },
1914 { "value": 2, "floor": 12100 },
1915 { "value": 3, "floor": 14400 },
1916 { "value": 4, "floor": 16300 },
1917 { "value": 5, "floor": 17200 }
1918 ]
1919 }
1920 ]
1921 },
1922 {
1923 // Entry valid for temps < 35
1924 "key": 35,
1925 "default_floor": 10800,
1926 "floor_offset_parameter": "ambient_35_altitude_offset",
1927 "floors": [
1928 {
1929 "parameter": "pcie_floor_index",
1930 "floors": [
1931 { "value": 1, "floor": 12700 },
1932 { "value": 2, "floor": 13500 },
1933 { "value": 3, "floor": 17400 },
1934 { "value": 4, "floor": 18000 },
1935 { "value": 5, "floor": 18000 }
1936 ]
1937 }
1938 ]
1939 },
1940 {
1941 // Entry valid for temps < 40
1942 "key": 40,
1943 "default_floor": 12600,
1944 "floor_offset_parameter": "ambient_40_altitude_offset",
1945 "floors": [
1946 {
1947 "parameter": "pcie_floor_index",
1948 "floors": [
1949 { "value": 1, "floor": 15000 },
1950 { "value": 2, "floor": 15500 },
1951 { "value": 3, "floor": 18000 },
1952 { "value": 4, "floor": 18000 },
1953 { "value": 5, "floor": 18000 }
1954 ]
1955 }
1956 ]
1957 }
1958 ]
1959 }
1960 ]
1961 }
Matthew Barthf0f213c2021-10-19 13:32:31 -05001962]