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