13420426cSMatt Spinler[
23420426cSMatt Spinler    {
33420426cSMatt Spinler        // Hold fans at the given target when a number of fans are missing.
43420426cSMatt Spinler        "name": "fan(s) missing",
53420426cSMatt Spinler        "groups": [
63420426cSMatt Spinler            {
73420426cSMatt Spinler                "name": "fan inventory",
83420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item",
93420426cSMatt Spinler                "property": { "name": "Present" }
103420426cSMatt Spinler            }
113420426cSMatt Spinler        ],
123420426cSMatt Spinler        "triggers": [
133420426cSMatt Spinler            {
143420426cSMatt Spinler                "class": "init",
153420426cSMatt Spinler                "method": "get_properties"
163420426cSMatt Spinler            },
173420426cSMatt Spinler            {
183420426cSMatt Spinler                "class": "signal",
193420426cSMatt Spinler                "signal": "properties_changed"
203420426cSMatt Spinler            }
213420426cSMatt Spinler        ],
223420426cSMatt Spinler        "actions": [
233420426cSMatt Spinler            {
243420426cSMatt Spinler                "name": "count_state_before_target",
253420426cSMatt Spinler                "count": 1,
263420426cSMatt Spinler                "state": false,
27338b3e3dSMatt Spinler                "target": 17000
283420426cSMatt Spinler            }
293420426cSMatt Spinler        ]
303420426cSMatt Spinler    },
313420426cSMatt Spinler    {
323420426cSMatt Spinler        // Hold fans at the given target when a number of rotors are nonfunctional.
333420426cSMatt Spinler        "name": "fan rotor(s) faulted",
343420426cSMatt Spinler        "groups": [
353420426cSMatt Spinler            {
363420426cSMatt Spinler                "name": "fan0 rotor inventory",
373420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
383420426cSMatt Spinler                "property": { "name": "Functional" }
393420426cSMatt Spinler            },
403420426cSMatt Spinler            {
413420426cSMatt Spinler                "name": "fan1 rotor inventory",
423420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
433420426cSMatt Spinler                "property": { "name": "Functional" }
443420426cSMatt Spinler            }
453420426cSMatt Spinler        ],
463420426cSMatt Spinler        "triggers": [
473420426cSMatt Spinler            {
483420426cSMatt Spinler                "class": "init",
493420426cSMatt Spinler                "method": "get_properties"
503420426cSMatt Spinler            },
513420426cSMatt Spinler            {
523420426cSMatt Spinler                "class": "signal",
533420426cSMatt Spinler                "signal": "properties_changed"
543420426cSMatt Spinler            }
553420426cSMatt Spinler        ],
563420426cSMatt Spinler        "actions": [
573420426cSMatt Spinler            {
583420426cSMatt Spinler                "name": "count_state_before_target",
593420426cSMatt Spinler                "count": 1,
603420426cSMatt Spinler                "state": false,
61338b3e3dSMatt Spinler                "target": 17000
623420426cSMatt Spinler            }
633420426cSMatt Spinler        ]
643420426cSMatt Spinler    },
653420426cSMatt Spinler    {
663420426cSMatt Spinler        // Hold fans at the given target when any critical service
673420426cSMatt Spinler        // is not running for 5 seconds.
683420426cSMatt Spinler        "name": "service(s) missing",
693420426cSMatt Spinler        "groups": [
703420426cSMatt Spinler            {
713420426cSMatt Spinler                "name": "fan inventory",
723420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item",
733420426cSMatt Spinler                "property": { "name": "Present" }
743420426cSMatt Spinler            },
753420426cSMatt Spinler            {
763420426cSMatt Spinler                "name": "occ objects",
773420426cSMatt Spinler                "interface": "org.open_power.OCC.Status",
783420426cSMatt Spinler                "property": { "name": "OccActive" }
793420426cSMatt Spinler            },
803420426cSMatt Spinler            {
813420426cSMatt Spinler                "name": "nvme temps",
823420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
833420426cSMatt Spinler                "property": { "name": "Value" }
843420426cSMatt Spinler            },
853420426cSMatt Spinler            {
863420426cSMatt Spinler                "name": "ambient temp",
873420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
883420426cSMatt Spinler                "property": { "name": "Value" }
893420426cSMatt Spinler            },
903420426cSMatt Spinler            {
913420426cSMatt Spinler                "name": "altitude",
923420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
933420426cSMatt Spinler                "property": { "name": "Value" }
943420426cSMatt Spinler            }
953420426cSMatt Spinler        ],
963420426cSMatt Spinler        "triggers": [
973420426cSMatt Spinler            {
983420426cSMatt Spinler                "class": "signal",
993420426cSMatt Spinler                "signal": "name_owner_changed"
100*6ef0d514SMatt Spinler            },
101*6ef0d514SMatt Spinler            {
102*6ef0d514SMatt Spinler                "class": "init",
103*6ef0d514SMatt Spinler                "method": "name_has_owner"
1043420426cSMatt Spinler            }
1053420426cSMatt Spinler        ],
1063420426cSMatt Spinler        "actions": [
1073420426cSMatt Spinler            {
1083420426cSMatt Spinler                "name": "call_actions_based_on_timer",
1093420426cSMatt Spinler                "timer": {
1103420426cSMatt Spinler                    "interval": 5000000,
1113420426cSMatt Spinler                    "type": "oneshot"
1123420426cSMatt Spinler                },
1133420426cSMatt Spinler                "actions": [
1143420426cSMatt Spinler                    {
1153420426cSMatt Spinler                        "name": "set_target_on_missing_owner",
1163420426cSMatt Spinler                        "groups": [
1173420426cSMatt Spinler                            {
1183420426cSMatt Spinler                                "name": "fan inventory",
1193420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Inventory.Item",
1203420426cSMatt Spinler                                "property": { "name": "Present" }
1213420426cSMatt Spinler                            },
1223420426cSMatt Spinler                            {
1233420426cSMatt Spinler                                "name": "occ objects",
1243420426cSMatt Spinler                                "interface": "org.open_power.OCC.Status",
1253420426cSMatt Spinler                                "property": { "name": "OccActive" }
1263420426cSMatt Spinler                            },
1273420426cSMatt Spinler                            {
1283420426cSMatt Spinler                                "name": "nvme temps",
1293420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
1303420426cSMatt Spinler                                "property": { "name": "Value" }
1313420426cSMatt Spinler                            },
1323420426cSMatt Spinler                            {
1333420426cSMatt Spinler                                "name": "ambient temp",
1343420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
1353420426cSMatt Spinler                                "property": { "name": "Value" }
1363420426cSMatt Spinler                            },
1373420426cSMatt Spinler                            {
1383420426cSMatt Spinler                                "name": "altitude",
1393420426cSMatt Spinler                                "interface": "xyz.openbmc_project.Sensor.Value",
1403420426cSMatt Spinler                                "property": { "name": "Value" }
1413420426cSMatt Spinler                            }
1423420426cSMatt Spinler                        ],
143338b3e3dSMatt Spinler                        "target": 17000
1443420426cSMatt Spinler                    }
1453420426cSMatt Spinler                ]
1463420426cSMatt Spinler            }
1473420426cSMatt Spinler        ]
1483420426cSMatt Spinler    },
1493420426cSMatt Spinler    {
150*6ef0d514SMatt Spinler        "name": "Force retry on the OCC status objects",
151*6ef0d514SMatt Spinler        "groups": [
152*6ef0d514SMatt Spinler            {
153*6ef0d514SMatt Spinler                "name": "occ objects",
154*6ef0d514SMatt Spinler                "interface": "org.open_power.OCC.Status",
155*6ef0d514SMatt Spinler                "property": { "name": "OccActive" }
156*6ef0d514SMatt Spinler            }
157*6ef0d514SMatt Spinler        ],
158*6ef0d514SMatt Spinler        "triggers": [
159*6ef0d514SMatt Spinler            {
160*6ef0d514SMatt Spinler                "class": "timer",
161*6ef0d514SMatt Spinler                "type": "oneshot",
162*6ef0d514SMatt Spinler                "interval": 30000000,
163*6ef0d514SMatt Spinler                "preload_groups": true
164*6ef0d514SMatt Spinler            }
165*6ef0d514SMatt Spinler        ],
166*6ef0d514SMatt Spinler        "actions": [
167*6ef0d514SMatt Spinler            {
168*6ef0d514SMatt Spinler                "name": "set_target_on_missing_owner",
169*6ef0d514SMatt Spinler                "groups": [
170*6ef0d514SMatt Spinler                    {
171*6ef0d514SMatt Spinler                        "name": "occ objects",
172*6ef0d514SMatt Spinler                        "interface": "org.open_power.OCC.Status",
173*6ef0d514SMatt Spinler                        "property": { "name": "OccActive" }
174*6ef0d514SMatt Spinler                    }
175*6ef0d514SMatt Spinler                ],
176*6ef0d514SMatt Spinler                "target": 17000
177*6ef0d514SMatt Spinler            }
178*6ef0d514SMatt Spinler        ]
179*6ef0d514SMatt Spinler    },
180*6ef0d514SMatt Spinler    {
1813420426cSMatt Spinler        // Set a fan floor if an OCC isn't active
1823420426cSMatt Spinler        "name": "Non-active OCCs",
1833420426cSMatt Spinler        "groups": [
1843420426cSMatt Spinler            {
1853420426cSMatt Spinler                "name": "occ objects",
1863420426cSMatt Spinler                "interface": "org.open_power.OCC.Status",
1873420426cSMatt Spinler                "property": {
1883420426cSMatt Spinler                    "name": "OccActive"
1893420426cSMatt Spinler                }
1903420426cSMatt Spinler            }
1913420426cSMatt Spinler        ],
1923420426cSMatt Spinler        "triggers": [
1933420426cSMatt Spinler            {
1943420426cSMatt Spinler                "class": "signal",
1953420426cSMatt Spinler                "signal": "properties_changed"
1963420426cSMatt Spinler            },
1973420426cSMatt Spinler            {
1983420426cSMatt Spinler                "class": "signal",
1993420426cSMatt Spinler                "signal": "interfaces_added"
2003420426cSMatt Spinler            },
2013420426cSMatt Spinler            {
2023420426cSMatt Spinler                "class": "init",
2033420426cSMatt Spinler                "method": "get_properties"
2043420426cSMatt Spinler            }
2053420426cSMatt Spinler        ],
2063420426cSMatt Spinler        "actions": [
2073420426cSMatt Spinler            {
2083420426cSMatt Spinler                "name": "count_state_floor",
2093420426cSMatt Spinler                "count": 1,
2103420426cSMatt Spinler                "state": false,
211338b3e3dSMatt Spinler                "floor": 17000
2123420426cSMatt Spinler            }
2133420426cSMatt Spinler        ]
2143420426cSMatt Spinler    },
2153420426cSMatt Spinler    {
2163420426cSMatt Spinler        // Set a raised fan floor when any temperature or altitude sensor is
2173420426cSMatt Spinler        // nonfunctional
2183420426cSMatt Spinler        "name": "Nonfunctional temperature sensors",
2193420426cSMatt Spinler        "groups": [
2203420426cSMatt Spinler            {
2213420426cSMatt Spinler                "name": "proc0 core temps",
2223420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2233420426cSMatt Spinler                "property": { "name": "Functional" }
2243420426cSMatt Spinler            },
2253420426cSMatt Spinler            {
2263420426cSMatt Spinler                "name": "proc0 ioring temp",
2273420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2283420426cSMatt Spinler                "property": { "name": "Functional" }
2293420426cSMatt Spinler            },
2303420426cSMatt Spinler            {
2313420426cSMatt Spinler                "name": "dram temps",
2323420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2333420426cSMatt Spinler                "property": { "name": "Functional" }
2343420426cSMatt Spinler            },
2353420426cSMatt Spinler            {
2363420426cSMatt Spinler                "name": "internal memory buffer temps",
2373420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2383420426cSMatt Spinler                "property": { "name": "Functional" }
2393420426cSMatt Spinler            },
2403420426cSMatt Spinler            {
2413420426cSMatt Spinler                "name": "vdd vrm temps",
2423420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2433420426cSMatt Spinler                "property": { "name": "Functional" }
2443420426cSMatt Spinler            },
2453420426cSMatt Spinler            {
2463420426cSMatt Spinler                "name": "nvme temps",
2473420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2483420426cSMatt Spinler                "property": { "name": "Functional" }
2493420426cSMatt Spinler            },
2503420426cSMatt Spinler            {
2513420426cSMatt Spinler                "name": "ambient temp",
2523420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2533420426cSMatt Spinler                "property": { "name": "Functional" }
2543420426cSMatt Spinler            },
2553420426cSMatt Spinler            {
2563420426cSMatt Spinler                "name": "altitude",
2573420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2583420426cSMatt Spinler                "property": { "name": "Functional" }
2593420426cSMatt Spinler            }
2603420426cSMatt Spinler        ],
2613420426cSMatt Spinler        "triggers": [
2623420426cSMatt Spinler            {
2633420426cSMatt Spinler                "class": "signal",
2643420426cSMatt Spinler                "signal": "properties_changed"
2653420426cSMatt Spinler            },
2663420426cSMatt Spinler            {
2673420426cSMatt Spinler                "class": "signal",
2683420426cSMatt Spinler                "signal": "interfaces_added"
2693420426cSMatt Spinler            },
2703420426cSMatt Spinler            {
2713420426cSMatt Spinler                "class": "signal",
2723420426cSMatt Spinler                "signal": "interfaces_removed"
2733420426cSMatt Spinler            },
2743420426cSMatt Spinler            {
2753420426cSMatt Spinler                "class": "init",
2763420426cSMatt Spinler                "method": "get_properties"
2773420426cSMatt Spinler            }
2783420426cSMatt Spinler        ],
2793420426cSMatt Spinler        "actions": [
2803420426cSMatt Spinler            {
2813420426cSMatt Spinler                "name": "count_state_floor",
2823420426cSMatt Spinler                "count": 1,
2833420426cSMatt Spinler                "state": false,
284a8c1cf50SMatt Spinler                "delay": 5,
285338b3e3dSMatt Spinler                "floor": 17000
2863420426cSMatt Spinler            }
2873420426cSMatt Spinler        ]
2883420426cSMatt Spinler    },
2893420426cSMatt Spinler    {
2903420426cSMatt Spinler        "name": "Set Proc 0 Core DVFS parameter",
2913420426cSMatt Spinler        "groups": [
2923420426cSMatt Spinler            {
2933420426cSMatt Spinler                "name": "proc 0 core dvfs temp",
2943420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
2953420426cSMatt Spinler                "property": { "name": "Value" }
2963420426cSMatt Spinler            }
2973420426cSMatt Spinler        ],
2983420426cSMatt Spinler        "triggers": [
2993420426cSMatt Spinler            {
3003420426cSMatt Spinler                "class": "init",
3013420426cSMatt Spinler                "method": "get_properties"
3023420426cSMatt Spinler            },
3033420426cSMatt Spinler            {
3043420426cSMatt Spinler                "class": "signal",
3053420426cSMatt Spinler                "signal": "interfaces_added"
3063420426cSMatt Spinler            },
3073420426cSMatt Spinler            {
3083420426cSMatt Spinler                "class": "signal",
3093420426cSMatt Spinler                "signal": "properties_changed"
3103420426cSMatt Spinler            }
3113420426cSMatt Spinler        ],
3123420426cSMatt Spinler        "actions": [
3133420426cSMatt Spinler            {
3143420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3153420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_increase_temp",
3163420426cSMatt Spinler                "modifier": {
3173420426cSMatt Spinler                    "operator": "minus",
3183420426cSMatt Spinler                    "value": 10
3193420426cSMatt Spinler                }
3203420426cSMatt Spinler            },
3213420426cSMatt Spinler            {
3223420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3233420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_decrease_temp",
3243420426cSMatt Spinler                "modifier": {
3253420426cSMatt Spinler                    "operator": "minus",
3263420426cSMatt Spinler                    "value": 13
3273420426cSMatt Spinler                }
3283420426cSMatt Spinler            }
3293420426cSMatt Spinler        ]
3303420426cSMatt Spinler    },
3313420426cSMatt Spinler    {
3323420426cSMatt Spinler        "name": "Set Proc 0 IO Ring DVFS parameter",
3333420426cSMatt Spinler        "groups": [
3343420426cSMatt Spinler            {
3353420426cSMatt Spinler                "name": "proc 0 ioring dvfs temp",
3363420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3373420426cSMatt Spinler                "property": { "name": "Value" }
3383420426cSMatt Spinler            }
3393420426cSMatt Spinler        ],
3403420426cSMatt Spinler        "triggers": [
3413420426cSMatt Spinler            {
3423420426cSMatt Spinler                "class": "init",
3433420426cSMatt Spinler                "method": "get_properties"
3443420426cSMatt Spinler            },
3453420426cSMatt Spinler            {
3463420426cSMatt Spinler                "class": "signal",
3473420426cSMatt Spinler                "signal": "interfaces_added"
3483420426cSMatt Spinler            },
3493420426cSMatt Spinler            {
3503420426cSMatt Spinler                "class": "signal",
3513420426cSMatt Spinler                "signal": "properties_changed"
3523420426cSMatt Spinler            }
3533420426cSMatt Spinler        ],
3543420426cSMatt Spinler        "actions": [
3553420426cSMatt Spinler            {
3563420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3573420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_increase_temp",
3583420426cSMatt Spinler                "modifier": {
3593420426cSMatt Spinler                    "operator": "minus",
3603420426cSMatt Spinler                    "value": 10
3613420426cSMatt Spinler                }
3623420426cSMatt Spinler            },
3633420426cSMatt Spinler            {
3643420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3653420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
3663420426cSMatt Spinler                "modifier": {
3673420426cSMatt Spinler                    "operator": "minus",
3683420426cSMatt Spinler                    "value": 13
3693420426cSMatt Spinler                }
3703420426cSMatt Spinler            }
3713420426cSMatt Spinler        ]
3723420426cSMatt Spinler    },
3733420426cSMatt Spinler    {
3743420426cSMatt Spinler        // Collect group temperatures each iteration the repeating timer expires
3753420426cSMatt Spinler        "name": "Fan control timer loop",
3763420426cSMatt Spinler        "groups": [
3773420426cSMatt Spinler            {
3783420426cSMatt Spinler                "name": "proc0 core temps",
3793420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3803420426cSMatt Spinler                "property": { "name": "Value" }
3813420426cSMatt Spinler            },
3823420426cSMatt Spinler            {
3833420426cSMatt Spinler                "name": "proc0 ioring temp",
3843420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3853420426cSMatt Spinler                "property": { "name": "Value" }
3863420426cSMatt Spinler            },
3873420426cSMatt Spinler            {
3883420426cSMatt Spinler                "name": "dram temps",
3893420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3903420426cSMatt Spinler                "property": { "name": "Value" }
3913420426cSMatt Spinler            },
3923420426cSMatt Spinler            {
3933420426cSMatt Spinler                "name": "internal memory buffer temps",
3943420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3953420426cSMatt Spinler                "property": { "name": "Value" }
3963420426cSMatt Spinler            },
3973420426cSMatt Spinler            {
3983420426cSMatt Spinler                "name": "vdd vrm temps",
3993420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
4003420426cSMatt Spinler                "property": { "name": "Value" }
4013420426cSMatt Spinler            },
4023420426cSMatt Spinler            {
4033420426cSMatt Spinler                "name": "nvme temps",
4043420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
4053420426cSMatt Spinler                "property": { "name": "Value" }
4063420426cSMatt Spinler            }
4073420426cSMatt Spinler        ],
4083420426cSMatt Spinler        "triggers": [
4093420426cSMatt Spinler            {
4103420426cSMatt Spinler                "class": "timer",
4113420426cSMatt Spinler                "type": "repeating",
4123420426cSMatt Spinler                "interval": 2000000,
4133420426cSMatt Spinler                "preload_groups": true
4143420426cSMatt Spinler            }
4153420426cSMatt Spinler        ],
4163420426cSMatt Spinler        "actions": [
4173420426cSMatt Spinler            {
4183420426cSMatt Spinler                "name": "set_net_increase_target",
4193420426cSMatt Spinler                "groups": [
4203420426cSMatt Spinler                    {
4213420426cSMatt Spinler                        "name": "proc0 core temps",
4223420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4233420426cSMatt Spinler                        "property": { "name": "Value" }
4243420426cSMatt Spinler                    }
4253420426cSMatt Spinler                ],
4263420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_increase_temp",
4273420426cSMatt Spinler                "delta": 300
4283420426cSMatt Spinler            },
4293420426cSMatt Spinler            {
4303420426cSMatt Spinler                "name": "set_net_increase_target",
4313420426cSMatt Spinler                "groups": [
4323420426cSMatt Spinler                    {
4333420426cSMatt Spinler                        "name": "proc0 ioring temp",
4343420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4353420426cSMatt Spinler                        "property": { "name": "Value" }
4363420426cSMatt Spinler                    }
4373420426cSMatt Spinler                ],
4383420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
4393420426cSMatt Spinler                "delta": 300
4403420426cSMatt Spinler            },
4413420426cSMatt Spinler            {
4423420426cSMatt Spinler                "name": "set_net_increase_target",
4433420426cSMatt Spinler                "groups": [
4443420426cSMatt Spinler                    {
4453420426cSMatt Spinler                        "name": "dram temps",
4463420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4473420426cSMatt Spinler                        "property": { "name": "Value" }
4483420426cSMatt Spinler                    }
4493420426cSMatt Spinler                ],
4508ef2c86bSMatt Spinler                "state": 64.0,
4513420426cSMatt Spinler                "delta": 100
4523420426cSMatt Spinler            },
4533420426cSMatt Spinler            {
4543420426cSMatt Spinler                "name": "set_net_increase_target",
4553420426cSMatt Spinler                "groups": [
4563420426cSMatt Spinler                    {
4573420426cSMatt Spinler                        "name": "internal memory buffer temps",
4583420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4593420426cSMatt Spinler                        "property": { "name": "Value" }
4603420426cSMatt Spinler                    }
4613420426cSMatt Spinler                ],
4623420426cSMatt Spinler                "state": 74.0,
4633420426cSMatt Spinler                "delta": 100
4643420426cSMatt Spinler            },
4653420426cSMatt Spinler            {
4663420426cSMatt Spinler                "name": "set_net_increase_target",
4673420426cSMatt Spinler                "groups": [
4683420426cSMatt Spinler                    {
4693420426cSMatt Spinler                        "name": "vdd vrm temps",
4703420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4713420426cSMatt Spinler                        "property": { "name": "Value" }
4723420426cSMatt Spinler                    }
4733420426cSMatt Spinler                ],
4743420426cSMatt Spinler                "state": 82.0,
4753420426cSMatt Spinler                "delta": 300
4763420426cSMatt Spinler            },
4773420426cSMatt Spinler            {
4783420426cSMatt Spinler                "name": "set_net_increase_target",
4793420426cSMatt Spinler                "groups": [
4803420426cSMatt Spinler                    {
4813420426cSMatt Spinler                        "name": "nvme temps",
4823420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4833420426cSMatt Spinler                        "property": { "name": "Value" }
4843420426cSMatt Spinler                    }
4853420426cSMatt Spinler                ],
4863420426cSMatt Spinler                "state": 58.0,
4873420426cSMatt Spinler                "delta": 200
4883420426cSMatt Spinler            },
4893420426cSMatt Spinler            {
4903420426cSMatt Spinler                "name": "set_net_decrease_target",
4913420426cSMatt Spinler                "groups": [
4923420426cSMatt Spinler                    {
4933420426cSMatt Spinler                        "name": "proc0 core temps",
4943420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4953420426cSMatt Spinler                        "property": { "name": "Value" }
4963420426cSMatt Spinler                    }
4973420426cSMatt Spinler                ],
4983420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
4993420426cSMatt Spinler                "delta": 50
5003420426cSMatt Spinler            },
5013420426cSMatt Spinler            {
5023420426cSMatt Spinler                "name": "set_net_decrease_target",
5033420426cSMatt Spinler                "groups": [
5043420426cSMatt Spinler                    {
5053420426cSMatt Spinler                        "name": "proc0 ioring temp",
5063420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5073420426cSMatt Spinler                        "property": { "name": "Value" }
5083420426cSMatt Spinler                    }
5093420426cSMatt Spinler                ],
5103420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
5113420426cSMatt Spinler                "delta": 50
5123420426cSMatt Spinler            },
5133420426cSMatt Spinler            {
5143420426cSMatt Spinler                "name": "set_net_decrease_target",
5153420426cSMatt Spinler                "groups": [
5163420426cSMatt Spinler                    {
5173420426cSMatt Spinler                        "name": "dram temps",
5183420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5193420426cSMatt Spinler                        "property": { "name": "Value" }
5203420426cSMatt Spinler                    }
5213420426cSMatt Spinler                ],
5228ef2c86bSMatt Spinler                "state": 61.0,
5233420426cSMatt Spinler                "delta": 40
5243420426cSMatt Spinler            },
5253420426cSMatt Spinler            {
5263420426cSMatt Spinler                "name": "set_net_decrease_target",
5273420426cSMatt Spinler                "groups": [
5283420426cSMatt Spinler                    {
5293420426cSMatt Spinler                        "name": "internal memory buffer temps",
5303420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5313420426cSMatt Spinler                        "property": { "name": "Value" }
5323420426cSMatt Spinler                    }
5333420426cSMatt Spinler                ],
5343420426cSMatt Spinler                "state": 71.0,
5353420426cSMatt Spinler                "delta": 40
5363420426cSMatt Spinler            },
5373420426cSMatt Spinler            {
5383420426cSMatt Spinler                "name": "set_net_decrease_target",
5393420426cSMatt Spinler                "groups": [
5403420426cSMatt Spinler                    {
5413420426cSMatt Spinler                        "name": "vdd vrm temps",
5423420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5433420426cSMatt Spinler                        "property": { "name": "Value" }
5443420426cSMatt Spinler                    }
5453420426cSMatt Spinler                ],
5463420426cSMatt Spinler                "state": 79.0,
5473420426cSMatt Spinler                "delta": 30
5483420426cSMatt Spinler            },
5493420426cSMatt Spinler            {
5503420426cSMatt Spinler                "name": "set_net_decrease_target",
5513420426cSMatt Spinler                "groups": [
5523420426cSMatt Spinler                    {
5533420426cSMatt Spinler                        "name": "nvme temps",
5543420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5553420426cSMatt Spinler                        "property": { "name": "Value" }
5563420426cSMatt Spinler                    }
5573420426cSMatt Spinler                ],
5583420426cSMatt Spinler                "state": 55.0,
5593420426cSMatt Spinler                "delta": 40
5603420426cSMatt Spinler            }
5613420426cSMatt Spinler        ]
5623420426cSMatt Spinler    },
5633420426cSMatt Spinler    {
5643420426cSMatt Spinler        // Remove NVMe temperature objects from cache when they are removed from
5653420426cSMatt Spinler        // dbus. There's no need to react to their removal.
5663420426cSMatt Spinler        "name": "remove nvme objects",
5673420426cSMatt Spinler        "groups": [
5683420426cSMatt Spinler            {
5693420426cSMatt Spinler                "name": "nvme temps",
5703420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
5713420426cSMatt Spinler                "property": { "name": "Value" }
5723420426cSMatt Spinler            },
5733420426cSMatt Spinler            {
5743420426cSMatt Spinler                "name": "nvme temps",
5753420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
5763420426cSMatt Spinler                "property": { "name": "Functional" }
5773420426cSMatt Spinler            }
5783420426cSMatt Spinler        ],
5793420426cSMatt Spinler        "triggers": [
5803420426cSMatt Spinler            {
5813420426cSMatt Spinler                "class": "signal",
5823420426cSMatt Spinler                "signal": "interfaces_removed"
5833420426cSMatt Spinler            }
5843420426cSMatt Spinler        ]
5853420426cSMatt Spinler    },
5863420426cSMatt Spinler    {
5873420426cSMatt Spinler        "name": "set pcie floor index",
5883420426cSMatt Spinler        "groups": [
5893420426cSMatt Spinler            {
5903420426cSMatt Spinler                "name": "pcie slots",
5913420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.PowerState",
5923420426cSMatt Spinler                "property": {
5933420426cSMatt Spinler                    "name": "PowerState"
5943420426cSMatt Spinler                }
5953420426cSMatt Spinler            },
5963420426cSMatt Spinler            {
5973420426cSMatt Spinler                "name": "pcie cards",
5983420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
5993420426cSMatt Spinler                "property": {
6003420426cSMatt Spinler                    "name": "Function0DeviceId"
6013420426cSMatt Spinler                }
6023420426cSMatt Spinler            },
6033420426cSMatt Spinler            {
6043420426cSMatt Spinler                "name": "pcie cards",
6053420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
6063420426cSMatt Spinler                "property": {
6073420426cSMatt Spinler                    "name": "Function0VendorId"
6083420426cSMatt Spinler                }
6093420426cSMatt Spinler            },
6103420426cSMatt Spinler            {
6113420426cSMatt Spinler                "name": "pcie cards",
6123420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
6133420426cSMatt Spinler                "property": {
6143420426cSMatt Spinler                    "name": "Function0SubsystemId"
6153420426cSMatt Spinler                }
6163420426cSMatt Spinler            },
6173420426cSMatt Spinler            {
6183420426cSMatt Spinler                "name": "pcie cards",
6193420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
6203420426cSMatt Spinler                "property": {
6213420426cSMatt Spinler                    "name": "Function0SubsystemVendorId"
6223420426cSMatt Spinler                }
6233420426cSMatt Spinler            }
6243420426cSMatt Spinler        ],
6253420426cSMatt Spinler        "triggers": [
6263420426cSMatt Spinler            {
6273420426cSMatt Spinler                "class": "init",
6283420426cSMatt Spinler                "method": "get_properties"
6293420426cSMatt Spinler            },
6303420426cSMatt Spinler            {
6313420426cSMatt Spinler                "class": "signal",
6323420426cSMatt Spinler                "signal": "properties_changed"
6333420426cSMatt Spinler            },
6343420426cSMatt Spinler            {
6353420426cSMatt Spinler                "class": "signal",
6363420426cSMatt Spinler                "signal": "interfaces_added"
6373420426cSMatt Spinler            }
6383420426cSMatt Spinler        ],
6393420426cSMatt Spinler        "actions": [
6403420426cSMatt Spinler            {
6413420426cSMatt Spinler                "name": "pcie_card_floors",
6423420426cSMatt Spinler                "use_config_specific_files": true,
6433420426cSMatt Spinler                "settle_time": 2
6443420426cSMatt Spinler            }
6453420426cSMatt Spinler        ]
6463420426cSMatt Spinler    },
6473420426cSMatt Spinler    {
6483420426cSMatt Spinler        "name": "Set altitude offset parameter",
6493420426cSMatt Spinler        "groups": [
6503420426cSMatt Spinler            {
6513420426cSMatt Spinler                "name": "altitude",
6523420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
6533420426cSMatt Spinler                "property": { "name": "Value" }
6543420426cSMatt Spinler            }
6553420426cSMatt Spinler        ],
6563420426cSMatt Spinler        "triggers": [
6573420426cSMatt Spinler            {
6583420426cSMatt Spinler                "class": "init",
6593420426cSMatt Spinler                "method": "get_properties"
6603420426cSMatt Spinler            },
6613420426cSMatt Spinler            {
6623420426cSMatt Spinler                "class": "signal",
6633420426cSMatt Spinler                "signal": "interfaces_added"
6643420426cSMatt Spinler            },
6653420426cSMatt Spinler            {
6663420426cSMatt Spinler                // Refresh altitude every 24hrs
6673420426cSMatt Spinler                "class": "timer",
6683420426cSMatt Spinler                "type": "repeating",
6693420426cSMatt Spinler                "interval": 86400000000,
6703420426cSMatt Spinler                "preload_groups": true
6713420426cSMatt Spinler            }
6723420426cSMatt Spinler        ],
6733420426cSMatt Spinler        "actions": [
6743420426cSMatt Spinler            {
6753420426cSMatt Spinler                "name": "set_parameter_from_group_max",
676950ff459SMatt Spinler                "parameter_name": "ambient_24_5_altitude_offset",
6773420426cSMatt Spinler                "modifier": {
6783420426cSMatt Spinler                    "operator": "less_than",
6793420426cSMatt Spinler                    "default_value": 10000,
6803420426cSMatt Spinler                    "value": [
6813420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
682338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 180 },
683338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 320 },
684338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 650 },
685338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1010 },
686338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1370 }
6873420426cSMatt Spinler                    ]
6883420426cSMatt Spinler                }
6893420426cSMatt Spinler            },
6903420426cSMatt Spinler            {
6913420426cSMatt Spinler                "name": "set_parameter_from_group_max",
692950ff459SMatt Spinler                "parameter_name": "ambient_29_5_altitude_offset",
6933420426cSMatt Spinler                "modifier": {
6943420426cSMatt Spinler                    "operator": "less_than",
6953420426cSMatt Spinler                    "default_value": 10000,
6963420426cSMatt Spinler                    "value": [
6973420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
698338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 200 },
699338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 340 },
700338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 580 },
701338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 950 },
702338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1500 }
7033420426cSMatt Spinler                    ]
7043420426cSMatt Spinler                }
7053420426cSMatt Spinler            },
7063420426cSMatt Spinler            {
7073420426cSMatt Spinler                "name": "set_parameter_from_group_max",
708950ff459SMatt Spinler                "parameter_name": "ambient_34_5_altitude_offset",
7093420426cSMatt Spinler                "modifier": {
7103420426cSMatt Spinler                    "operator": "less_than",
7113420426cSMatt Spinler                    "default_value": 10000,
7123420426cSMatt Spinler                    "value": [
7133420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
714338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 250 },
715338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 580 },
716338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 980 },
717338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1430 },
718338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1930 }
7193420426cSMatt Spinler                    ]
7203420426cSMatt Spinler                }
7213420426cSMatt Spinler            },
7223420426cSMatt Spinler            {
7233420426cSMatt Spinler                "name": "set_parameter_from_group_max",
724950ff459SMatt Spinler                "parameter_name": "ambient_39_5_altitude_offset",
7253420426cSMatt Spinler                "modifier": {
7263420426cSMatt Spinler                    "operator": "less_than",
7273420426cSMatt Spinler                    "default_value": 10000,
7283420426cSMatt Spinler                    "value": [
7293420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
730338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 340 },
731338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 720 },
732338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 1180 },
733338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1800 },
734338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 2550 }
7353420426cSMatt Spinler                    ]
7363420426cSMatt Spinler                }
7373420426cSMatt Spinler            },
7383420426cSMatt Spinler            {
7393420426cSMatt Spinler                "name": "set_parameter_from_group_max",
740950ff459SMatt Spinler                "parameter_name": "ambient_44_5_altitude_offset",
7413420426cSMatt Spinler                "modifier": {
7423420426cSMatt Spinler                    "operator": "less_than",
7433420426cSMatt Spinler                    "default_value": 10000,
7443420426cSMatt Spinler                    "value": [
7453420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
746338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 450 },
747338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 1050 },
748338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 1820 },
749338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 2590 },
750338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 3360 }
7513420426cSMatt Spinler                    ]
7523420426cSMatt Spinler                }
7533420426cSMatt Spinler            }
7543420426cSMatt Spinler        ]
7553420426cSMatt Spinler    },
7563420426cSMatt Spinler    {
7573420426cSMatt Spinler        "name": "Fan floors",
7583420426cSMatt Spinler        "groups": [
7593420426cSMatt Spinler            {
7603420426cSMatt Spinler                "name": "ambient temp",
7613420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
7623420426cSMatt Spinler                "property": { "name": "Value" }
7633420426cSMatt Spinler            }
7643420426cSMatt Spinler        ],
7653420426cSMatt Spinler        "triggers": [
7663420426cSMatt Spinler            {
7673420426cSMatt Spinler                "class": "init",
7683420426cSMatt Spinler                "method": "get_properties"
7693420426cSMatt Spinler            },
7703420426cSMatt Spinler            {
7713420426cSMatt Spinler                "class": "signal",
7723420426cSMatt Spinler                "signal": "properties_changed"
7733420426cSMatt Spinler            },
7743420426cSMatt Spinler            {
7753420426cSMatt Spinler                "class": "signal",
7763420426cSMatt Spinler                "signal": "interfaces_added"
7773420426cSMatt Spinler            },
7783420426cSMatt Spinler            {
7793420426cSMatt Spinler                "class": "parameter",
7803420426cSMatt Spinler                "parameter": "pcie_floor_index"
7813420426cSMatt Spinler            },
7823420426cSMatt Spinler            {
7833420426cSMatt Spinler                "class": "parameter",
784950ff459SMatt Spinler                "parameter": "ambient_24_5_altitude_offset"
7853420426cSMatt Spinler            },
7863420426cSMatt Spinler            {
7873420426cSMatt Spinler                "class": "parameter",
788950ff459SMatt Spinler                "parameter": "ambient_29_5_altitude_offset"
7893420426cSMatt Spinler            },
7903420426cSMatt Spinler            {
7913420426cSMatt Spinler                "class": "parameter",
792950ff459SMatt Spinler                "parameter": "ambient_34_5_altitude_offset"
7933420426cSMatt Spinler            },
7943420426cSMatt Spinler            {
7953420426cSMatt Spinler                "class": "parameter",
796950ff459SMatt Spinler                "parameter": "ambient_39_5_altitude_offset"
7973420426cSMatt Spinler            },
7983420426cSMatt Spinler            {
7993420426cSMatt Spinler                "class": "parameter",
800950ff459SMatt Spinler                "parameter": "ambient_44_5_altitude_offset"
8013420426cSMatt Spinler            }
8023420426cSMatt Spinler        ],
8033420426cSMatt Spinler        "actions": [
8043420426cSMatt Spinler            {
8053420426cSMatt Spinler                "name": "mapped_floor",
8063420426cSMatt Spinler                "key_group": "ambient temp",
8073420426cSMatt Spinler                "fan_floors": [
8083420426cSMatt Spinler                    {
809950ff459SMatt Spinler                        // Entry valid for temps < 24.5
810950ff459SMatt Spinler                        "key": 24.5,
811338b3e3dSMatt Spinler                        "default_floor": 4130,
812950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_24_5_altitude_offset",
8133420426cSMatt Spinler                        "floors": [
8143420426cSMatt Spinler                            {
8153420426cSMatt Spinler                                "parameter": "pcie_floor_index",
8168dab554bSMatt Spinler                                "floors": [{ "value": 1, "floor": 6200 }]
8173420426cSMatt Spinler                            }
8183420426cSMatt Spinler                        ]
8193420426cSMatt Spinler                    },
8203420426cSMatt Spinler                    {
821950ff459SMatt Spinler                        // Entry valid for temps < 29.5
822950ff459SMatt Spinler                        "key": 29.5,
823338b3e3dSMatt Spinler                        "default_floor": 4810,
824950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_29_5_altitude_offset",
8253420426cSMatt Spinler                        "floors": [
8263420426cSMatt Spinler                            {
8273420426cSMatt Spinler                                "parameter": "pcie_floor_index",
8288dab554bSMatt Spinler                                "floors": [{ "value": 1, "floor": 6800 }]
8293420426cSMatt Spinler                            }
8303420426cSMatt Spinler                        ]
8313420426cSMatt Spinler                    },
8323420426cSMatt Spinler                    {
833950ff459SMatt Spinler                        // Entry valid for temps < 34.5
834950ff459SMatt Spinler                        "key": 34.5,
835338b3e3dSMatt Spinler                        "default_floor": 5930,
836950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_34_5_altitude_offset",
8373420426cSMatt Spinler                        "floors": [
8383420426cSMatt Spinler                            {
8393420426cSMatt Spinler                                "parameter": "pcie_floor_index",
8408dab554bSMatt Spinler                                "floors": [{ "value": 1, "floor": 7400 }]
8413420426cSMatt Spinler                            }
8423420426cSMatt Spinler                        ]
8433420426cSMatt Spinler                    },
8443420426cSMatt Spinler                    {
845950ff459SMatt Spinler                        // Entry valid for temps < 39.5
846950ff459SMatt Spinler                        "key": 39.5,
847338b3e3dSMatt Spinler                        "default_floor": 7940,
848950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_39_5_altitude_offset",
8493420426cSMatt Spinler                        "floors": [
8503420426cSMatt Spinler                            {
8513420426cSMatt Spinler                                "parameter": "pcie_floor_index",
8528dab554bSMatt Spinler                                "floors": [{ "value": 1, "floor": 8500 }]
8533420426cSMatt Spinler                            }
8543420426cSMatt Spinler                        ]
8553420426cSMatt Spinler                    },
8563420426cSMatt Spinler                    {
857950ff459SMatt Spinler                        // Entry valid for temps < 44.5
858950ff459SMatt Spinler                        "key": 44.5,
859338b3e3dSMatt Spinler                        "default_floor": 10670,
860950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_44_5_altitude_offset",
8613420426cSMatt Spinler                        "floors": [
8623420426cSMatt Spinler                            {
8633420426cSMatt Spinler                                "parameter": "pcie_floor_index",
8648dab554bSMatt Spinler                                "floors": [{ "value": 1, "floor": 9800 }]
8653420426cSMatt Spinler                            }
8663420426cSMatt Spinler                        ]
8673420426cSMatt Spinler                    }
8683420426cSMatt Spinler                ]
8693420426cSMatt Spinler            }
8703420426cSMatt Spinler        ]
8713420426cSMatt Spinler    }
8723420426cSMatt Spinler]
873