blob: 01777b022f19371b3af1bcb710329e66f6960c17 [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,
Matt Spinlera8c1cf52024-01-04 16:47:30 -0600535 "delay": 5,
Patrick Williamsa49e3f12022-12-08 06:12:40 -0600536 "floor": 18000
537 }
538 ]
539 },
540 {
541 "name": "Set Proc 0 Core DVFS parameter",
542 "groups": [
543 {
544 "name": "proc 0 core dvfs temp",
545 "interface": "xyz.openbmc_project.Sensor.Value",
546 "property": { "name": "Value" }
547 }
548 ],
549 "triggers": [
550 {
551 "class": "init",
552 "method": "get_properties"
553 },
554 {
555 "class": "signal",
556 "signal": "interfaces_added"
557 },
558 {
559 "class": "signal",
560 "signal": "properties_changed"
561 }
562 ],
563 "actions": [
564 {
565 "name": "set_parameter_from_group_max",
566 "parameter_name": "proc_0_core_dvfs_increase_temp",
567 "modifier": {
568 "operator": "minus",
569 "value": 10
570 }
571 },
572 {
573 "name": "set_parameter_from_group_max",
574 "parameter_name": "proc_0_core_dvfs_decrease_temp",
575 "modifier": {
576 "operator": "minus",
577 "value": 13
578 }
579 }
580 ]
581 },
582 {
583 "name": "Set Proc 1 Core DVFS parameter",
584 "groups": [
585 {
586 "name": "proc 1 core dvfs temp",
587 "interface": "xyz.openbmc_project.Sensor.Value",
588 "property": { "name": "Value" }
589 }
590 ],
591 "triggers": [
592 {
593 "class": "init",
594 "method": "get_properties"
595 },
596 {
597 "class": "signal",
598 "signal": "interfaces_added"
599 },
600 {
601 "class": "signal",
602 "signal": "properties_changed"
603 }
604 ],
605 "actions": [
606 {
607 "name": "set_parameter_from_group_max",
608 "parameter_name": "proc_1_core_dvfs_increase_temp",
609 "modifier": {
610 "operator": "minus",
611 "value": 10
612 }
613 },
614 {
615 "name": "set_parameter_from_group_max",
616 "parameter_name": "proc_1_core_dvfs_decrease_temp",
617 "modifier": {
618 "operator": "minus",
619 "value": 13
620 }
621 }
622 ]
623 },
624 {
625 "name": "Set Proc 2 Core DVFS parameter",
626 "groups": [
627 {
628 "name": "proc 2 core dvfs temp",
629 "interface": "xyz.openbmc_project.Sensor.Value",
630 "property": { "name": "Value" }
631 }
632 ],
633 "triggers": [
634 {
635 "class": "init",
636 "method": "get_properties"
637 },
638 {
639 "class": "signal",
640 "signal": "interfaces_added"
641 },
642 {
643 "class": "signal",
644 "signal": "properties_changed"
645 }
646 ],
647 "actions": [
648 {
649 "name": "set_parameter_from_group_max",
650 "parameter_name": "proc_2_core_dvfs_increase_temp",
651 "modifier": {
652 "operator": "minus",
653 "value": 10
654 }
655 },
656 {
657 "name": "set_parameter_from_group_max",
658 "parameter_name": "proc_2_core_dvfs_decrease_temp",
659 "modifier": {
660 "operator": "minus",
661 "value": 13
662 }
663 }
664 ]
665 },
666 {
667 "name": "Set Proc 3 Core DVFS parameter",
668 "groups": [
669 {
670 "name": "proc 3 core dvfs temp",
671 "interface": "xyz.openbmc_project.Sensor.Value",
672 "property": { "name": "Value" }
673 }
674 ],
675 "triggers": [
676 {
677 "class": "init",
678 "method": "get_properties"
679 },
680 {
681 "class": "signal",
682 "signal": "interfaces_added"
683 },
684 {
685 "class": "signal",
686 "signal": "properties_changed"
687 }
688 ],
689 "actions": [
690 {
691 "name": "set_parameter_from_group_max",
692 "parameter_name": "proc_3_core_dvfs_increase_temp",
693 "modifier": {
694 "operator": "minus",
695 "value": 10
696 }
697 },
698 {
699 "name": "set_parameter_from_group_max",
700 "parameter_name": "proc_3_core_dvfs_decrease_temp",
701 "modifier": {
702 "operator": "minus",
703 "value": 13
704 }
705 }
706 ]
707 },
708 {
709 "name": "Set Proc 0 IO Ring DVFS parameter",
710 "groups": [
711 {
712 "name": "proc 0 ioring dvfs temp",
713 "interface": "xyz.openbmc_project.Sensor.Value",
714 "property": { "name": "Value" }
715 }
716 ],
717 "triggers": [
718 {
719 "class": "init",
720 "method": "get_properties"
721 },
722 {
723 "class": "signal",
724 "signal": "interfaces_added"
725 },
726 {
727 "class": "signal",
728 "signal": "properties_changed"
729 }
730 ],
731 "actions": [
732 {
733 "name": "set_parameter_from_group_max",
734 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
735 "modifier": {
736 "operator": "minus",
737 "value": 10
738 }
739 },
740 {
741 "name": "set_parameter_from_group_max",
742 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
743 "modifier": {
744 "operator": "minus",
745 "value": 13
746 }
747 }
748 ]
749 },
750 {
751 "name": "Set Proc 1 IO Ring DVFS parameter",
752 "groups": [
753 {
754 "name": "proc 1 ioring dvfs temp",
755 "interface": "xyz.openbmc_project.Sensor.Value",
756 "property": { "name": "Value" }
757 }
758 ],
759 "triggers": [
760 {
761 "class": "init",
762 "method": "get_properties"
763 },
764 {
765 "class": "signal",
766 "signal": "interfaces_added"
767 },
768 {
769 "class": "signal",
770 "signal": "properties_changed"
771 }
772 ],
773 "actions": [
774 {
775 "name": "set_parameter_from_group_max",
776 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
777 "modifier": {
778 "operator": "minus",
779 "value": 10
780 }
781 },
782 {
783 "name": "set_parameter_from_group_max",
784 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
785 "modifier": {
786 "operator": "minus",
787 "value": 13
788 }
789 }
790 ]
791 },
792 {
793 "name": "Set Proc 2 IO Ring DVFS parameter",
794 "groups": [
795 {
796 "name": "proc 2 ioring dvfs temp",
797 "interface": "xyz.openbmc_project.Sensor.Value",
798 "property": { "name": "Value" }
799 }
800 ],
801 "triggers": [
802 {
803 "class": "init",
804 "method": "get_properties"
805 },
806 {
807 "class": "signal",
808 "signal": "interfaces_added"
809 },
810 {
811 "class": "signal",
812 "signal": "properties_changed"
813 }
814 ],
815 "actions": [
816 {
817 "name": "set_parameter_from_group_max",
818 "parameter_name": "proc_2_ioring_dvfs_increase_temp",
819 "modifier": {
820 "operator": "minus",
821 "value": 10
822 }
823 },
824 {
825 "name": "set_parameter_from_group_max",
826 "parameter_name": "proc_2_ioring_dvfs_decrease_temp",
827 "modifier": {
828 "operator": "minus",
829 "value": 13
830 }
831 }
832 ]
833 },
834 {
835 "name": "Set Proc 3 IO Ring DVFS parameter",
836 "groups": [
837 {
838 "name": "proc 3 ioring dvfs temp",
839 "interface": "xyz.openbmc_project.Sensor.Value",
840 "property": { "name": "Value" }
841 }
842 ],
843 "triggers": [
844 {
845 "class": "init",
846 "method": "get_properties"
847 },
848 {
849 "class": "signal",
850 "signal": "properties_changed"
851 },
852 {
853 "class": "signal",
854 "signal": "interfaces_added"
855 }
856 ],
857 "actions": [
858 {
859 "name": "set_parameter_from_group_max",
860 "parameter_name": "proc_3_ioring_dvfs_increase_temp",
861 "modifier": {
862 "operator": "minus",
863 "value": 10
864 }
865 },
866 {
867 "name": "set_parameter_from_group_max",
868 "parameter_name": "proc_3_ioring_dvfs_decrease_temp",
869 "modifier": {
870 "operator": "minus",
871 "value": 13
872 }
873 }
874 ]
875 },
876 {
Matt Spinler667922d2023-11-09 12:55:31 -0600877 "name": "Set DRAM DVFS parameter",
878 "groups": [
879 {
880 "name": "dram dvfs temp",
881 "interface": "xyz.openbmc_project.Sensor.Value",
882 "property": { "name": "Value" }
883 }
884 ],
885 "triggers": [
886 {
887 "class": "init",
888 "method": "get_properties"
889 },
890 {
891 "class": "signal",
892 "signal": "properties_changed"
893 },
894 {
895 "class": "signal",
896 "signal": "interfaces_added"
897 }
898 ],
899 "actions": [
900 {
901 "name": "set_parameter_from_group_max",
902 "parameter_name": "dram_dvfs_increase_temp",
903 "modifier": {
904 "operator": "minus",
905 "value": 9
906 }
907 },
908 {
909 "name": "set_parameter_from_group_max",
910 "parameter_name": "dram_dvfs_decrease_temp",
911 "modifier": {
912 "operator": "minus",
913 "value": 12
914 }
915 }
916 ]
917 },
918 {
919 "name": "Set PMIC DVFS parameter",
920 "groups": [
921 {
922 "name": "pmic dvfs temp",
923 "interface": "xyz.openbmc_project.Sensor.Value",
924 "property": { "name": "Value" }
925 }
926 ],
927 "triggers": [
928 {
929 "class": "init",
930 "method": "get_properties"
931 },
932 {
933 "class": "signal",
934 "signal": "properties_changed"
935 },
936 {
937 "class": "signal",
938 "signal": "interfaces_added"
939 }
940 ],
941 "actions": [
942 {
943 "name": "set_parameter_from_group_max",
944 "parameter_name": "pmic_dvfs_increase_temp",
945 "modifier": {
946 "operator": "minus",
947 "value": 9
948 }
949 },
950 {
951 "name": "set_parameter_from_group_max",
952 "parameter_name": "pmic_dvfs_decrease_temp",
953 "modifier": {
954 "operator": "minus",
955 "value": 12
956 }
957 }
958 ]
959 },
960 {
961 "name": "Set internal memory buffer DVFS parameter",
962 "groups": [
963 {
964 "name": "internal memory buffer dvfs temp",
965 "interface": "xyz.openbmc_project.Sensor.Value",
966 "property": { "name": "Value" }
967 }
968 ],
969 "triggers": [
970 {
971 "class": "init",
972 "method": "get_properties"
973 },
974 {
975 "class": "signal",
976 "signal": "properties_changed"
977 },
978 {
979 "class": "signal",
980 "signal": "interfaces_added"
981 }
982 ],
983 "actions": [
984 {
985 "name": "set_parameter_from_group_max",
986 "parameter_name": "intmb_dvfs_increase_temp",
987 "modifier": {
988 "operator": "minus",
989 "value": 10
990 }
991 },
992 {
993 "name": "set_parameter_from_group_max",
994 "parameter_name": "intmb_dvfs_decrease_temp",
995 "modifier": {
996 "operator": "minus",
997 "value": 13
998 }
999 }
1000 ]
1001 },
1002 {
1003 "name": "Set DRAM and external memory buffer DVFS parameter",
1004 "groups": [
1005 {
1006 "name": "dram and external memory buffer dvfs temp",
1007 "interface": "xyz.openbmc_project.Sensor.Value",
1008 "property": { "name": "Value" }
1009 }
1010 ],
1011 "triggers": [
1012 {
1013 "class": "init",
1014 "method": "get_properties"
1015 },
1016 {
1017 "class": "signal",
1018 "signal": "properties_changed"
1019 },
1020 {
1021 "class": "signal",
1022 "signal": "interfaces_added"
1023 }
1024 ],
1025 "actions": [
1026 {
1027 "name": "set_parameter_from_group_max",
1028 "parameter_name": "dram_extmb_dvfs_increase_temp",
1029 "modifier": {
1030 "operator": "minus",
1031 "value": 10
1032 }
1033 },
1034 {
1035 "name": "set_parameter_from_group_max",
1036 "parameter_name": "dram_extmb_dvfs_decrease_temp",
1037 "modifier": {
1038 "operator": "minus",
1039 "value": 13
1040 }
1041 }
1042 ]
1043 },
1044 {
1045 "name": "Set external memory buffer DVFS parameter",
1046 "groups": [
1047 {
1048 "name": "external memory buffer dvfs temp",
1049 "interface": "xyz.openbmc_project.Sensor.Value",
1050 "property": { "name": "Value" }
1051 }
1052 ],
1053 "triggers": [
1054 {
1055 "class": "init",
1056 "method": "get_properties"
1057 },
1058 {
1059 "class": "signal",
1060 "signal": "properties_changed"
1061 },
1062 {
1063 "class": "signal",
1064 "signal": "interfaces_added"
1065 }
1066 ],
1067 "actions": [
1068 {
1069 "name": "set_parameter_from_group_max",
1070 "parameter_name": "extmb_dvfs_increase_temp",
1071 "modifier": {
1072 "operator": "minus",
1073 "value": 10
1074 }
1075 },
1076 {
1077 "name": "set_parameter_from_group_max",
1078 "parameter_name": "extmb_dvfs_decrease_temp",
1079 "modifier": {
1080 "operator": "minus",
1081 "value": 13
1082 }
1083 }
1084 ]
1085 },
1086 {
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001087 // Collect group temperatures each iteration the repeating timer expires
1088 "name": "Fan control timer loop",
1089 "groups": [
1090 {
1091 "name": "proc0 core temps",
1092 "interface": "xyz.openbmc_project.Sensor.Value",
1093 "property": { "name": "Value" }
1094 },
1095 {
1096 "name": "proc1 core temps",
1097 "interface": "xyz.openbmc_project.Sensor.Value",
1098 "property": { "name": "Value" }
1099 },
1100 {
1101 "name": "proc2 core temps",
1102 "interface": "xyz.openbmc_project.Sensor.Value",
1103 "property": { "name": "Value" }
1104 },
1105 {
1106 "name": "proc3 core temps",
1107 "interface": "xyz.openbmc_project.Sensor.Value",
1108 "property": { "name": "Value" }
1109 },
1110 {
1111 "name": "proc0 ioring temp",
1112 "interface": "xyz.openbmc_project.Sensor.Value",
1113 "property": { "name": "Value" }
1114 },
1115 {
1116 "name": "proc1 ioring temp",
1117 "interface": "xyz.openbmc_project.Sensor.Value",
1118 "property": { "name": "Value" }
1119 },
1120 {
1121 "name": "proc2 ioring temp",
1122 "interface": "xyz.openbmc_project.Sensor.Value",
1123 "property": { "name": "Value" }
1124 },
1125 {
1126 "name": "proc3 ioring temp",
1127 "interface": "xyz.openbmc_project.Sensor.Value",
1128 "property": { "name": "Value" }
1129 },
1130 {
1131 "name": "dram temps",
1132 "interface": "xyz.openbmc_project.Sensor.Value",
1133 "property": { "name": "Value" }
1134 },
1135 {
1136 "name": "pmic temps",
1137 "interface": "xyz.openbmc_project.Sensor.Value",
1138 "property": { "name": "Value" }
1139 },
1140 {
1141 "name": "internal memory buffer temps",
1142 "interface": "xyz.openbmc_project.Sensor.Value",
1143 "property": { "name": "Value" }
1144 },
1145 {
1146 "name": "dram and external memory buffer temps",
1147 "interface": "xyz.openbmc_project.Sensor.Value",
1148 "property": { "name": "Value" }
1149 },
1150 {
1151 "name": "external memory buffer temps",
1152 "interface": "xyz.openbmc_project.Sensor.Value",
1153 "property": { "name": "Value" }
1154 },
1155 {
1156 "name": "vdd vrm temps",
1157 "interface": "xyz.openbmc_project.Sensor.Value",
1158 "property": { "name": "Value" }
1159 },
1160 {
1161 "name": "nvme temps",
1162 "interface": "xyz.openbmc_project.Sensor.Value",
1163 "property": { "name": "Value" }
1164 },
1165 {
1166 "name": "planar temps",
1167 "interface": "xyz.openbmc_project.Sensor.Value",
1168 "property": { "name": "Value" }
1169 },
1170 {
1171 "name": "flett temps",
1172 "interface": "xyz.openbmc_project.Sensor.Value",
1173 "property": { "name": "Value" }
1174 },
1175 {
1176 "name": "pcie cable card temps",
1177 "interface": "xyz.openbmc_project.Sensor.Value",
1178 "property": { "name": "Value" }
1179 }
1180 ],
1181 "triggers": [
1182 {
1183 "class": "timer",
1184 "type": "repeating",
1185 "interval": 2000000,
1186 "preload_groups": true
1187 }
1188 ],
1189 "actions": [
1190 {
1191 "name": "set_net_increase_target",
1192 "groups": [
1193 {
1194 "name": "proc0 core temps",
1195 "interface": "xyz.openbmc_project.Sensor.Value",
1196 "property": { "name": "Value" }
1197 }
1198 ],
1199 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
1200 "delta": 300
1201 },
1202 {
1203 "name": "set_net_increase_target",
1204 "groups": [
1205 {
1206 "name": "proc1 core temps",
1207 "interface": "xyz.openbmc_project.Sensor.Value",
1208 "property": { "name": "Value" }
1209 }
1210 ],
1211 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
1212 "delta": 300
1213 },
1214 {
1215 "name": "set_net_increase_target",
1216 "groups": [
1217 {
1218 "name": "proc2 core temps",
1219 "interface": "xyz.openbmc_project.Sensor.Value",
1220 "property": { "name": "Value" }
1221 }
1222 ],
1223 "state_parameter_name": "proc_2_core_dvfs_increase_temp",
1224 "delta": 300
1225 },
1226 {
1227 "name": "set_net_increase_target",
1228 "groups": [
1229 {
1230 "name": "proc3 core temps",
1231 "interface": "xyz.openbmc_project.Sensor.Value",
1232 "property": { "name": "Value" }
1233 }
1234 ],
1235 "state_parameter_name": "proc_3_core_dvfs_increase_temp",
1236 "delta": 300
1237 },
1238 {
1239 "name": "set_net_increase_target",
1240 "groups": [
1241 {
1242 "name": "proc0 ioring temp",
1243 "interface": "xyz.openbmc_project.Sensor.Value",
1244 "property": { "name": "Value" }
1245 }
1246 ],
1247 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
1248 "delta": 300
1249 },
1250 {
1251 "name": "set_net_increase_target",
1252 "groups": [
1253 {
1254 "name": "proc1 ioring temp",
1255 "interface": "xyz.openbmc_project.Sensor.Value",
1256 "property": { "name": "Value" }
1257 }
1258 ],
1259 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
1260 "delta": 300
1261 },
1262 {
1263 "name": "set_net_increase_target",
1264 "groups": [
1265 {
1266 "name": "proc2 ioring temp",
1267 "interface": "xyz.openbmc_project.Sensor.Value",
1268 "property": { "name": "Value" }
1269 }
1270 ],
1271 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp",
1272 "delta": 300
1273 },
1274 {
1275 "name": "set_net_increase_target",
1276 "groups": [
1277 {
1278 "name": "proc3 ioring temp",
1279 "interface": "xyz.openbmc_project.Sensor.Value",
1280 "property": { "name": "Value" }
1281 }
1282 ],
1283 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp",
1284 "delta": 300
1285 },
1286 {
1287 "name": "set_net_increase_target",
1288 "groups": [
1289 {
1290 "name": "dram temps",
1291 "interface": "xyz.openbmc_project.Sensor.Value",
1292 "property": { "name": "Value" }
1293 }
1294 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001295 "state_parameter_name": "dram_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001296 "delta": 100
1297 },
1298 {
1299 "name": "set_net_increase_target",
1300 "groups": [
1301 {
1302 "name": "pmic temps",
1303 "interface": "xyz.openbmc_project.Sensor.Value",
1304 "property": { "name": "Value" }
1305 }
1306 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001307 "state_parameter_name": "pmic_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001308 "delta": 100
1309 },
1310 {
1311 "name": "set_net_increase_target",
1312 "groups": [
1313 {
1314 "name": "internal memory buffer temps",
1315 "interface": "xyz.openbmc_project.Sensor.Value",
1316 "property": { "name": "Value" }
1317 }
1318 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001319 "state_parameter_name": "intmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001320 "delta": 100
1321 },
1322 {
1323 "name": "set_net_increase_target",
1324 "groups": [
1325 {
1326 "name": "dram and external memory buffer temps",
1327 "interface": "xyz.openbmc_project.Sensor.Value",
1328 "property": { "name": "Value" }
1329 }
1330 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001331 "state_parameter_name": "dram_extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001332 "delta": 200
1333 },
1334 {
1335 "name": "set_net_increase_target",
1336 "groups": [
1337 {
1338 "name": "external memory buffer temps",
1339 "interface": "xyz.openbmc_project.Sensor.Value",
1340 "property": { "name": "Value" }
1341 }
1342 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001343 "state_parameter_name": "extmb_dvfs_increase_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001344 "delta": 200
1345 },
1346 {
1347 "name": "set_net_increase_target",
1348 "groups": [
1349 {
1350 "name": "vdd vrm temps",
1351 "interface": "xyz.openbmc_project.Sensor.Value",
1352 "property": { "name": "Value" }
1353 }
1354 ],
1355 "state": 82.0,
1356 "delta": 300
1357 },
1358 {
1359 "name": "set_net_increase_target",
1360 "groups": [
1361 {
1362 "name": "nvme temps",
1363 "interface": "xyz.openbmc_project.Sensor.Value",
1364 "property": { "name": "Value" }
1365 }
1366 ],
1367 "state": 58.0,
1368 "delta": 200
1369 },
1370 {
1371 "name": "set_net_increase_target",
1372 "groups": [
1373 {
1374 "name": "planar temps",
1375 "interface": "xyz.openbmc_project.Sensor.Value",
1376 "property": { "name": "Value" }
1377 }
1378 ],
1379 "state": 65.0,
1380 "delta": 255
1381 },
1382 {
1383 "name": "set_net_increase_target",
1384 "groups": [
1385 {
1386 "name": "flett temps",
1387 "interface": "xyz.openbmc_project.Sensor.Value",
1388 "property": { "name": "Value" }
1389 }
1390 ],
1391 "state": 80.0,
1392 "delta": 200
1393 },
1394 {
1395 "name": "set_net_increase_target",
1396 "groups": [
1397 {
1398 "name": "pcie cable card temps",
1399 "interface": "xyz.openbmc_project.Sensor.Value",
1400 "property": { "name": "Value" }
1401 }
1402 ],
1403 "state": 70.0,
1404 "delta": 255
1405 },
1406 {
1407 "name": "set_net_decrease_target",
1408 "groups": [
1409 {
1410 "name": "proc0 core temps",
1411 "interface": "xyz.openbmc_project.Sensor.Value",
1412 "property": { "name": "Value" }
1413 }
1414 ],
1415 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
1416 "delta": 50
1417 },
1418 {
1419 "name": "set_net_decrease_target",
1420 "groups": [
1421 {
1422 "name": "proc1 core temps",
1423 "interface": "xyz.openbmc_project.Sensor.Value",
1424 "property": { "name": "Value" }
1425 }
1426 ],
1427 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
1428 "delta": 50
1429 },
1430 {
1431 "name": "set_net_decrease_target",
1432 "groups": [
1433 {
1434 "name": "proc2 core temps",
1435 "interface": "xyz.openbmc_project.Sensor.Value",
1436 "property": { "name": "Value" }
1437 }
1438 ],
1439 "state_parameter_name": "proc_2_core_dvfs_decrease_temp",
1440 "delta": 50
1441 },
1442 {
1443 "name": "set_net_decrease_target",
1444 "groups": [
1445 {
1446 "name": "proc3 core temps",
1447 "interface": "xyz.openbmc_project.Sensor.Value",
1448 "property": { "name": "Value" }
1449 }
1450 ],
1451 "state_parameter_name": "proc_3_core_dvfs_decrease_temp",
1452 "delta": 50
1453 },
1454 {
1455 "name": "set_net_decrease_target",
1456 "groups": [
1457 {
1458 "name": "proc0 ioring temp",
1459 "interface": "xyz.openbmc_project.Sensor.Value",
1460 "property": { "name": "Value" }
1461 }
1462 ],
1463 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
1464 "delta": 50
1465 },
1466 {
1467 "name": "set_net_decrease_target",
1468 "groups": [
1469 {
1470 "name": "proc1 ioring temp",
1471 "interface": "xyz.openbmc_project.Sensor.Value",
1472 "property": { "name": "Value" }
1473 }
1474 ],
1475 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
1476 "delta": 50
1477 },
1478 {
1479 "name": "set_net_decrease_target",
1480 "groups": [
1481 {
1482 "name": "proc2 ioring temp",
1483 "interface": "xyz.openbmc_project.Sensor.Value",
1484 "property": { "name": "Value" }
1485 }
1486 ],
1487 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp",
1488 "delta": 50
1489 },
1490 {
1491 "name": "set_net_decrease_target",
1492 "groups": [
1493 {
1494 "name": "proc3 ioring temp",
1495 "interface": "xyz.openbmc_project.Sensor.Value",
1496 "property": { "name": "Value" }
1497 }
1498 ],
1499 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp",
1500 "delta": 50
1501 },
1502 {
1503 "name": "set_net_decrease_target",
1504 "groups": [
1505 {
1506 "name": "dram temps",
1507 "interface": "xyz.openbmc_project.Sensor.Value",
1508 "property": { "name": "Value" }
1509 }
1510 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001511 "state_parameter_name": "dram_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001512 "delta": 40
1513 },
1514 {
1515 "name": "set_net_decrease_target",
1516 "groups": [
1517 {
1518 "name": "pmic temps",
1519 "interface": "xyz.openbmc_project.Sensor.Value",
1520 "property": { "name": "Value" }
1521 }
1522 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001523 "state_parameter_name": "pmic_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001524 "delta": 40
1525 },
1526 {
1527 "name": "set_net_decrease_target",
1528 "groups": [
1529 {
1530 "name": "internal memory buffer temps",
1531 "interface": "xyz.openbmc_project.Sensor.Value",
1532 "property": { "name": "Value" }
1533 }
1534 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001535 "state_parameter_name": "intmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001536 "delta": 40
1537 },
1538 {
1539 "name": "set_net_decrease_target",
1540 "groups": [
1541 {
1542 "name": "dram and external memory buffer temps",
1543 "interface": "xyz.openbmc_project.Sensor.Value",
1544 "property": { "name": "Value" }
1545 }
1546 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001547 "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001548 "delta": 40
1549 },
1550 {
1551 "name": "set_net_decrease_target",
1552 "groups": [
1553 {
1554 "name": "external memory buffer temps",
1555 "interface": "xyz.openbmc_project.Sensor.Value",
1556 "property": { "name": "Value" }
1557 }
1558 ],
Matt Spinler667922d2023-11-09 12:55:31 -06001559 "state_parameter_name": "extmb_dvfs_decrease_temp",
Patrick Williamsa49e3f12022-12-08 06:12:40 -06001560 "delta": 40
1561 },
1562 {
1563 "name": "set_net_decrease_target",
1564 "groups": [
1565 {
1566 "name": "vdd vrm temps",
1567 "interface": "xyz.openbmc_project.Sensor.Value",
1568 "property": { "name": "Value" }
1569 }
1570 ],
1571 "state": 79.0,
1572 "delta": 30
1573 },
1574 {
1575 "name": "set_net_decrease_target",
1576 "groups": [
1577 {
1578 "name": "nvme temps",
1579 "interface": "xyz.openbmc_project.Sensor.Value",
1580 "property": { "name": "Value" }
1581 }
1582 ],
1583 "state": 55.0,
1584 "delta": 40
1585 },
1586 {
1587 "name": "set_net_decrease_target",
1588 "groups": [
1589 {
1590 "name": "planar temps",
1591 "interface": "xyz.openbmc_project.Sensor.Value",
1592 "property": { "name": "Value" }
1593 }
1594 ],
1595 "state": 60.0,
1596 "delta": 80
1597 },
1598 {
1599 "name": "set_net_decrease_target",
1600 "groups": [
1601 {
1602 "name": "flett temps",
1603 "interface": "xyz.openbmc_project.Sensor.Value",
1604 "property": { "name": "Value" }
1605 }
1606 ],
1607 "state": 75.0,
1608 "delta": 80
1609 },
1610 {
1611 "name": "set_net_decrease_target",
1612 "groups": [
1613 {
1614 "name": "pcie cable card temps",
1615 "interface": "xyz.openbmc_project.Sensor.Value",
1616 "property": { "name": "Value" }
1617 }
1618 ],
1619 "state": 65.0,
1620 "delta": 80
1621 }
1622 ]
1623 },
1624 {
1625 // Remove NVMe temperature objects from cache when they are removed from
1626 // dbus. There's no need to react to their removal.
1627 "name": "remove nvme objects",
1628 "groups": [
1629 {
1630 "name": "nvme temps",
1631 "interface": "xyz.openbmc_project.Sensor.Value",
1632 "property": { "name": "Value" }
1633 },
1634 {
1635 "name": "nvme temps",
1636 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1637 "property": { "name": "Functional" }
1638 }
1639 ],
1640 "triggers": [
1641 {
1642 "class": "signal",
1643 "signal": "interfaces_removed"
1644 }
1645 ]
1646 },
1647 {
1648 "name": "set pcie floor index",
1649 "groups": [
1650 {
1651 "name": "pcie slots",
1652 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1653 "property": {
1654 "name": "PowerState"
1655 }
1656 },
1657 {
1658 "name": "pcie cards",
1659 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1660 "property": {
1661 "name": "Function0DeviceId"
1662 }
1663 },
1664 {
1665 "name": "pcie cards",
1666 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1667 "property": {
1668 "name": "Function0VendorId"
1669 }
1670 },
1671 {
1672 "name": "pcie cards",
1673 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1674 "property": {
1675 "name": "Function0SubsystemId"
1676 }
1677 },
1678 {
1679 "name": "pcie cards",
1680 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1681 "property": {
1682 "name": "Function0SubsystemVendorId"
1683 }
1684 }
1685 ],
1686 "triggers": [
1687 {
1688 "class": "init",
1689 "method": "get_properties"
1690 },
1691 {
1692 "class": "signal",
1693 "signal": "properties_changed"
1694 },
1695 {
1696 "class": "signal",
1697 "signal": "interfaces_added"
1698 }
1699 ],
1700 "actions": [
1701 {
1702 "name": "pcie_card_floors",
1703 "use_config_specific_files": true,
1704 "settle_time": 2
1705 }
1706 ]
1707 },
1708 {
1709 "name": "Set altitude offset parameter",
1710 "groups": [
1711 {
1712 "name": "altitude",
1713 "interface": "xyz.openbmc_project.Sensor.Value",
1714 "property": { "name": "Value" }
1715 }
1716 ],
1717 "triggers": [
1718 {
1719 "class": "init",
1720 "method": "get_properties"
1721 },
1722 {
1723 "class": "signal",
1724 "signal": "interfaces_added"
1725 },
1726 {
1727 // Refresh altitude every 24hrs
1728 "class": "timer",
1729 "type": "repeating",
1730 "interval": 86400000000,
1731 "preload_groups": true
1732 }
1733 ],
1734 "actions": [
1735 {
1736 "name": "set_parameter_from_group_max",
1737 "parameter_name": "ambient_20_altitude_offset",
1738 "modifier": {
1739 "operator": "less_than",
1740 "default_value": 10000,
1741 "value": [
1742 { "arg_value": 500, "parameter_value": 0 },
1743 { "arg_value": 1000, "parameter_value": 700 },
1744 { "arg_value": 1500, "parameter_value": 1600 },
1745 { "arg_value": 2000, "parameter_value": 2300 },
1746 { "arg_value": 2500, "parameter_value": 3200 },
1747 { "arg_value": 3300, "parameter_value": 4000 }
1748 ]
1749 }
1750 },
1751 {
1752 "name": "set_parameter_from_group_max",
1753 "parameter_name": "ambient_25_altitude_offset",
1754 "modifier": {
1755 "operator": "less_than",
1756 "default_value": 10000,
1757 "value": [
1758 { "arg_value": 500, "parameter_value": 0 },
1759 { "arg_value": 1000, "parameter_value": 1000 },
1760 { "arg_value": 1500, "parameter_value": 2100 },
1761 { "arg_value": 2000, "parameter_value": 3100 },
1762 { "arg_value": 2500, "parameter_value": 4100 },
1763 { "arg_value": 3300, "parameter_value": 4900 }
1764 ]
1765 }
1766 },
1767 {
1768 "name": "set_parameter_from_group_max",
1769 "parameter_name": "ambient_30_altitude_offset",
1770 "modifier": {
1771 "operator": "less_than",
1772 "default_value": 10000,
1773 "value": [
1774 { "arg_value": 500, "parameter_value": 0 },
1775 { "arg_value": 1000, "parameter_value": 1000 },
1776 { "arg_value": 1500, "parameter_value": 2100 },
1777 { "arg_value": 2000, "parameter_value": 3200 },
1778 { "arg_value": 2500, "parameter_value": 4000 },
1779 { "arg_value": 3300, "parameter_value": 4800 }
1780 ]
1781 }
1782 },
1783 {
1784 "name": "set_parameter_from_group_max",
1785 "parameter_name": "ambient_35_altitude_offset",
1786 "modifier": {
1787 "operator": "less_than",
1788 "default_value": 10000,
1789 "value": [
1790 { "arg_value": 500, "parameter_value": 0 },
1791 { "arg_value": 1000, "parameter_value": 900 },
1792 { "arg_value": 1500, "parameter_value": 1700 },
1793 { "arg_value": 2000, "parameter_value": 2500 },
1794 { "arg_value": 2500, "parameter_value": 3400 },
1795 { "arg_value": 3300, "parameter_value": 4200 }
1796 ]
1797 }
1798 },
1799 {
1800 "name": "set_parameter_from_group_max",
1801 "parameter_name": "ambient_40_altitude_offset",
1802 "modifier": {
1803 "operator": "less_than",
1804 "default_value": 10000,
1805 "value": [
1806 { "arg_value": 500, "parameter_value": 0 },
1807 { "arg_value": 1000, "parameter_value": 1000 },
1808 { "arg_value": 1500, "parameter_value": 1900 },
1809 { "arg_value": 2000, "parameter_value": 2800 },
1810 { "arg_value": 2500, "parameter_value": 3700 },
1811 { "arg_value": 3300, "parameter_value": 4500 }
1812 ]
1813 }
1814 }
1815 ]
1816 },
1817 {
1818 "name": "Fan floors",
1819 "groups": [
1820 {
1821 "name": "ambient temp",
1822 "interface": "xyz.openbmc_project.Sensor.Value",
1823 "property": { "name": "Value" }
1824 }
1825 ],
1826 "triggers": [
1827 {
1828 "class": "init",
1829 "method": "get_properties"
1830 },
1831 {
1832 "class": "signal",
1833 "signal": "properties_changed"
1834 },
1835 {
1836 "class": "signal",
1837 "signal": "interfaces_added"
1838 },
1839 {
1840 "class": "parameter",
1841 "parameter": "pcie_floor_index"
1842 },
1843 {
1844 "class": "parameter",
1845 "parameter": "ambient_20_altitude_offset"
1846 },
1847 {
1848 "class": "parameter",
1849 "parameter": "ambient_25_altitude_offset"
1850 },
1851 {
1852 "class": "parameter",
1853 "parameter": "ambient_30_altitude_offset"
1854 },
1855 {
1856 "class": "parameter",
1857 "parameter": "ambient_35_altitude_offset"
1858 },
1859 {
1860 "class": "parameter",
1861 "parameter": "ambient_40_altitude_offset"
1862 }
1863 ],
1864 "actions": [
1865 {
1866 "name": "mapped_floor",
1867 "key_group": "ambient temp",
1868 "fan_floors": [
1869 {
1870 // Entry valid for temps < 20
1871 "key": 20,
1872 "default_floor": 5400,
1873 "floor_offset_parameter": "ambient_20_altitude_offset",
1874 "floors": [
1875 {
1876 "parameter": "pcie_floor_index",
1877 "floors": [
1878 { "value": 1, "floor": 5600 },
1879 { "value": 2, "floor": 9000 },
1880 { "value": 3, "floor": 9000 },
1881 { "value": 4, "floor": 9200 },
1882 { "value": 5, "floor": 10600 }
1883 ]
1884 }
1885 ]
1886 },
1887 {
1888 // Entry valid for temps < 25
1889 "key": 25,
1890 "default_floor": 7300,
1891 "floor_offset_parameter": "ambient_25_altitude_offset",
1892 "floors": [
1893 {
1894 "parameter": "pcie_floor_index",
1895 "floors": [
1896 { "value": 1, "floor": 7800 },
1897 { "value": 2, "floor": 10700 },
1898 { "value": 3, "floor": 11300 },
1899 { "value": 4, "floor": 12700 },
1900 { "value": 5, "floor": 13900 }
1901 ]
1902 }
1903 ]
1904 },
1905 {
1906 // Entry valid for temps < 30
1907 "key": 30,
1908 "default_floor": 9100,
1909 "floor_offset_parameter": "ambient_30_altitude_offset",
1910 "floors": [
1911 {
1912 "parameter": "pcie_floor_index",
1913 "floors": [
1914 { "value": 1, "floor": 10300 },
1915 { "value": 2, "floor": 12100 },
1916 { "value": 3, "floor": 14400 },
1917 { "value": 4, "floor": 16300 },
1918 { "value": 5, "floor": 17200 }
1919 ]
1920 }
1921 ]
1922 },
1923 {
1924 // Entry valid for temps < 35
1925 "key": 35,
1926 "default_floor": 10800,
1927 "floor_offset_parameter": "ambient_35_altitude_offset",
1928 "floors": [
1929 {
1930 "parameter": "pcie_floor_index",
1931 "floors": [
1932 { "value": 1, "floor": 12700 },
1933 { "value": 2, "floor": 13500 },
1934 { "value": 3, "floor": 17400 },
1935 { "value": 4, "floor": 18000 },
1936 { "value": 5, "floor": 18000 }
1937 ]
1938 }
1939 ]
1940 },
1941 {
1942 // Entry valid for temps < 40
1943 "key": 40,
1944 "default_floor": 12600,
1945 "floor_offset_parameter": "ambient_40_altitude_offset",
1946 "floors": [
1947 {
1948 "parameter": "pcie_floor_index",
1949 "floors": [
1950 { "value": 1, "floor": 15000 },
1951 { "value": 2, "floor": 15500 },
1952 { "value": 3, "floor": 18000 },
1953 { "value": 4, "floor": 18000 },
1954 { "value": 5, "floor": 18000 }
1955 ]
1956 }
1957 ]
1958 }
1959 ]
1960 }
1961 ]
1962 }
Matthew Barthf0f213c2021-10-19 13:32:31 -05001963]