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": "init",
993420426cSMatt Spinler                "method": "name_has_owner"
1003420426cSMatt Spinler            },
1013420426cSMatt Spinler            {
1023420426cSMatt Spinler                "class": "signal",
1033420426cSMatt Spinler                "signal": "name_owner_changed"
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    {
1503420426cSMatt Spinler        // Set a fan floor if an OCC isn't active
1513420426cSMatt Spinler        "name": "Non-active OCCs",
1523420426cSMatt Spinler        "groups": [
1533420426cSMatt Spinler            {
1543420426cSMatt Spinler                "name": "occ objects",
1553420426cSMatt Spinler                "interface": "org.open_power.OCC.Status",
1563420426cSMatt Spinler                "property": {
1573420426cSMatt Spinler                    "name": "OccActive"
1583420426cSMatt Spinler                }
1593420426cSMatt Spinler            }
1603420426cSMatt Spinler        ],
1613420426cSMatt Spinler        "triggers": [
1623420426cSMatt Spinler            {
1633420426cSMatt Spinler                "class": "signal",
1643420426cSMatt Spinler                "signal": "properties_changed"
1653420426cSMatt Spinler            },
1663420426cSMatt Spinler            {
1673420426cSMatt Spinler                "class": "signal",
1683420426cSMatt Spinler                "signal": "interfaces_added"
1693420426cSMatt Spinler            },
1703420426cSMatt Spinler            {
1713420426cSMatt Spinler                "class": "init",
1723420426cSMatt Spinler                "method": "get_properties"
1733420426cSMatt Spinler            }
1743420426cSMatt Spinler        ],
1753420426cSMatt Spinler        "actions": [
1763420426cSMatt Spinler            {
1773420426cSMatt Spinler                "name": "count_state_floor",
1783420426cSMatt Spinler                "count": 1,
1793420426cSMatt Spinler                "state": false,
180338b3e3dSMatt Spinler                "floor": 17000
1813420426cSMatt Spinler            }
1823420426cSMatt Spinler        ]
1833420426cSMatt Spinler    },
1843420426cSMatt Spinler    {
1853420426cSMatt Spinler        // Set a raised fan floor when any temperature or altitude sensor is
1863420426cSMatt Spinler        // nonfunctional
1873420426cSMatt Spinler        "name": "Nonfunctional temperature sensors",
1883420426cSMatt Spinler        "groups": [
1893420426cSMatt Spinler            {
1903420426cSMatt Spinler                "name": "proc0 core temps",
1913420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1923420426cSMatt Spinler                "property": { "name": "Functional" }
1933420426cSMatt Spinler            },
1943420426cSMatt Spinler            {
1953420426cSMatt Spinler                "name": "proc0 ioring temp",
1963420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1973420426cSMatt Spinler                "property": { "name": "Functional" }
1983420426cSMatt Spinler            },
1993420426cSMatt Spinler            {
2003420426cSMatt Spinler                "name": "dram temps",
2013420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2023420426cSMatt Spinler                "property": { "name": "Functional" }
2033420426cSMatt Spinler            },
2043420426cSMatt Spinler            {
2053420426cSMatt Spinler                "name": "internal memory buffer temps",
2063420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2073420426cSMatt Spinler                "property": { "name": "Functional" }
2083420426cSMatt Spinler            },
2093420426cSMatt Spinler            {
2103420426cSMatt Spinler                "name": "vdd vrm temps",
2113420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2123420426cSMatt Spinler                "property": { "name": "Functional" }
2133420426cSMatt Spinler            },
2143420426cSMatt Spinler            {
2153420426cSMatt Spinler                "name": "nvme temps",
2163420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2173420426cSMatt Spinler                "property": { "name": "Functional" }
2183420426cSMatt Spinler            },
2193420426cSMatt Spinler            {
2203420426cSMatt Spinler                "name": "ambient temp",
2213420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2223420426cSMatt Spinler                "property": { "name": "Functional" }
2233420426cSMatt Spinler            },
2243420426cSMatt Spinler            {
2253420426cSMatt Spinler                "name": "altitude",
2263420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
2273420426cSMatt Spinler                "property": { "name": "Functional" }
2283420426cSMatt Spinler            }
2293420426cSMatt Spinler        ],
2303420426cSMatt Spinler        "triggers": [
2313420426cSMatt Spinler            {
2323420426cSMatt Spinler                "class": "signal",
2333420426cSMatt Spinler                "signal": "properties_changed"
2343420426cSMatt Spinler            },
2353420426cSMatt Spinler            {
2363420426cSMatt Spinler                "class": "signal",
2373420426cSMatt Spinler                "signal": "interfaces_added"
2383420426cSMatt Spinler            },
2393420426cSMatt Spinler            {
2403420426cSMatt Spinler                "class": "signal",
2413420426cSMatt Spinler                "signal": "interfaces_removed"
2423420426cSMatt Spinler            },
2433420426cSMatt Spinler            {
2443420426cSMatt Spinler                "class": "init",
2453420426cSMatt Spinler                "method": "get_properties"
2463420426cSMatt Spinler            }
2473420426cSMatt Spinler        ],
2483420426cSMatt Spinler        "actions": [
2493420426cSMatt Spinler            {
2503420426cSMatt Spinler                "name": "count_state_floor",
2513420426cSMatt Spinler                "count": 1,
2523420426cSMatt Spinler                "state": false,
253a8c1cf50SMatt Spinler                "delay": 5,
254338b3e3dSMatt Spinler                "floor": 17000
2553420426cSMatt Spinler            }
2563420426cSMatt Spinler        ]
2573420426cSMatt Spinler    },
2583420426cSMatt Spinler    {
2593420426cSMatt Spinler        "name": "Set Proc 0 Core DVFS parameter",
2603420426cSMatt Spinler        "groups": [
2613420426cSMatt Spinler            {
2623420426cSMatt Spinler                "name": "proc 0 core dvfs temp",
2633420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
2643420426cSMatt Spinler                "property": { "name": "Value" }
2653420426cSMatt Spinler            }
2663420426cSMatt Spinler        ],
2673420426cSMatt Spinler        "triggers": [
2683420426cSMatt Spinler            {
2693420426cSMatt Spinler                "class": "init",
2703420426cSMatt Spinler                "method": "get_properties"
2713420426cSMatt Spinler            },
2723420426cSMatt Spinler            {
2733420426cSMatt Spinler                "class": "signal",
2743420426cSMatt Spinler                "signal": "interfaces_added"
2753420426cSMatt Spinler            },
2763420426cSMatt Spinler            {
2773420426cSMatt Spinler                "class": "signal",
2783420426cSMatt Spinler                "signal": "properties_changed"
2793420426cSMatt Spinler            }
2803420426cSMatt Spinler        ],
2813420426cSMatt Spinler        "actions": [
2823420426cSMatt Spinler            {
2833420426cSMatt Spinler                "name": "set_parameter_from_group_max",
2843420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_increase_temp",
2853420426cSMatt Spinler                "modifier": {
2863420426cSMatt Spinler                    "operator": "minus",
2873420426cSMatt Spinler                    "value": 10
2883420426cSMatt Spinler                }
2893420426cSMatt Spinler            },
2903420426cSMatt Spinler            {
2913420426cSMatt Spinler                "name": "set_parameter_from_group_max",
2923420426cSMatt Spinler                "parameter_name": "proc_0_core_dvfs_decrease_temp",
2933420426cSMatt Spinler                "modifier": {
2943420426cSMatt Spinler                    "operator": "minus",
2953420426cSMatt Spinler                    "value": 13
2963420426cSMatt Spinler                }
2973420426cSMatt Spinler            }
2983420426cSMatt Spinler        ]
2993420426cSMatt Spinler    },
3003420426cSMatt Spinler    {
3013420426cSMatt Spinler        "name": "Set Proc 0 IO Ring DVFS parameter",
3023420426cSMatt Spinler        "groups": [
3033420426cSMatt Spinler            {
3043420426cSMatt Spinler                "name": "proc 0 ioring dvfs temp",
3053420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3063420426cSMatt Spinler                "property": { "name": "Value" }
3073420426cSMatt Spinler            }
3083420426cSMatt Spinler        ],
3093420426cSMatt Spinler        "triggers": [
3103420426cSMatt Spinler            {
3113420426cSMatt Spinler                "class": "init",
3123420426cSMatt Spinler                "method": "get_properties"
3133420426cSMatt Spinler            },
3143420426cSMatt Spinler            {
3153420426cSMatt Spinler                "class": "signal",
3163420426cSMatt Spinler                "signal": "interfaces_added"
3173420426cSMatt Spinler            },
3183420426cSMatt Spinler            {
3193420426cSMatt Spinler                "class": "signal",
3203420426cSMatt Spinler                "signal": "properties_changed"
3213420426cSMatt Spinler            }
3223420426cSMatt Spinler        ],
3233420426cSMatt Spinler        "actions": [
3243420426cSMatt Spinler            {
3253420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3263420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_increase_temp",
3273420426cSMatt Spinler                "modifier": {
3283420426cSMatt Spinler                    "operator": "minus",
3293420426cSMatt Spinler                    "value": 10
3303420426cSMatt Spinler                }
3313420426cSMatt Spinler            },
3323420426cSMatt Spinler            {
3333420426cSMatt Spinler                "name": "set_parameter_from_group_max",
3343420426cSMatt Spinler                "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
3353420426cSMatt Spinler                "modifier": {
3363420426cSMatt Spinler                    "operator": "minus",
3373420426cSMatt Spinler                    "value": 13
3383420426cSMatt Spinler                }
3393420426cSMatt Spinler            }
3403420426cSMatt Spinler        ]
3413420426cSMatt Spinler    },
3423420426cSMatt Spinler    {
3433420426cSMatt Spinler        // Collect group temperatures each iteration the repeating timer expires
3443420426cSMatt Spinler        "name": "Fan control timer loop",
3453420426cSMatt Spinler        "groups": [
3463420426cSMatt Spinler            {
3473420426cSMatt Spinler                "name": "proc0 core temps",
3483420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3493420426cSMatt Spinler                "property": { "name": "Value" }
3503420426cSMatt Spinler            },
3513420426cSMatt Spinler            {
3523420426cSMatt Spinler                "name": "proc0 ioring temp",
3533420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3543420426cSMatt Spinler                "property": { "name": "Value" }
3553420426cSMatt Spinler            },
3563420426cSMatt Spinler            {
3573420426cSMatt Spinler                "name": "dram temps",
3583420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3593420426cSMatt Spinler                "property": { "name": "Value" }
3603420426cSMatt Spinler            },
3613420426cSMatt Spinler            {
3623420426cSMatt Spinler                "name": "internal memory buffer temps",
3633420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3643420426cSMatt Spinler                "property": { "name": "Value" }
3653420426cSMatt Spinler            },
3663420426cSMatt Spinler            {
3673420426cSMatt Spinler                "name": "vdd vrm temps",
3683420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3693420426cSMatt Spinler                "property": { "name": "Value" }
3703420426cSMatt Spinler            },
3713420426cSMatt Spinler            {
3723420426cSMatt Spinler                "name": "nvme temps",
3733420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
3743420426cSMatt Spinler                "property": { "name": "Value" }
3753420426cSMatt Spinler            }
3763420426cSMatt Spinler        ],
3773420426cSMatt Spinler        "triggers": [
3783420426cSMatt Spinler            {
3793420426cSMatt Spinler                "class": "timer",
3803420426cSMatt Spinler                "type": "repeating",
3813420426cSMatt Spinler                "interval": 2000000,
3823420426cSMatt Spinler                "preload_groups": true
3833420426cSMatt Spinler            }
3843420426cSMatt Spinler        ],
3853420426cSMatt Spinler        "actions": [
3863420426cSMatt Spinler            {
3873420426cSMatt Spinler                "name": "set_net_increase_target",
3883420426cSMatt Spinler                "groups": [
3893420426cSMatt Spinler                    {
3903420426cSMatt Spinler                        "name": "proc0 core temps",
3913420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
3923420426cSMatt Spinler                        "property": { "name": "Value" }
3933420426cSMatt Spinler                    }
3943420426cSMatt Spinler                ],
3953420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_increase_temp",
3963420426cSMatt Spinler                "delta": 300
3973420426cSMatt Spinler            },
3983420426cSMatt Spinler            {
3993420426cSMatt Spinler                "name": "set_net_increase_target",
4003420426cSMatt Spinler                "groups": [
4013420426cSMatt Spinler                    {
4023420426cSMatt Spinler                        "name": "proc0 ioring temp",
4033420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4043420426cSMatt Spinler                        "property": { "name": "Value" }
4053420426cSMatt Spinler                    }
4063420426cSMatt Spinler                ],
4073420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
4083420426cSMatt Spinler                "delta": 300
4093420426cSMatt Spinler            },
4103420426cSMatt Spinler            {
4113420426cSMatt Spinler                "name": "set_net_increase_target",
4123420426cSMatt Spinler                "groups": [
4133420426cSMatt Spinler                    {
4143420426cSMatt Spinler                        "name": "dram temps",
4153420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4163420426cSMatt Spinler                        "property": { "name": "Value" }
4173420426cSMatt Spinler                    }
4183420426cSMatt Spinler                ],
4198ef2c86bSMatt Spinler                "state": 64.0,
4203420426cSMatt Spinler                "delta": 100
4213420426cSMatt Spinler            },
4223420426cSMatt Spinler            {
4233420426cSMatt Spinler                "name": "set_net_increase_target",
4243420426cSMatt Spinler                "groups": [
4253420426cSMatt Spinler                    {
4263420426cSMatt Spinler                        "name": "internal memory buffer temps",
4273420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4283420426cSMatt Spinler                        "property": { "name": "Value" }
4293420426cSMatt Spinler                    }
4303420426cSMatt Spinler                ],
4313420426cSMatt Spinler                "state": 74.0,
4323420426cSMatt Spinler                "delta": 100
4333420426cSMatt Spinler            },
4343420426cSMatt Spinler            {
4353420426cSMatt Spinler                "name": "set_net_increase_target",
4363420426cSMatt Spinler                "groups": [
4373420426cSMatt Spinler                    {
4383420426cSMatt Spinler                        "name": "vdd vrm temps",
4393420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4403420426cSMatt Spinler                        "property": { "name": "Value" }
4413420426cSMatt Spinler                    }
4423420426cSMatt Spinler                ],
4433420426cSMatt Spinler                "state": 82.0,
4443420426cSMatt Spinler                "delta": 300
4453420426cSMatt Spinler            },
4463420426cSMatt Spinler            {
4473420426cSMatt Spinler                "name": "set_net_increase_target",
4483420426cSMatt Spinler                "groups": [
4493420426cSMatt Spinler                    {
4503420426cSMatt Spinler                        "name": "nvme temps",
4513420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4523420426cSMatt Spinler                        "property": { "name": "Value" }
4533420426cSMatt Spinler                    }
4543420426cSMatt Spinler                ],
4553420426cSMatt Spinler                "state": 58.0,
4563420426cSMatt Spinler                "delta": 200
4573420426cSMatt Spinler            },
4583420426cSMatt Spinler            {
4593420426cSMatt Spinler                "name": "set_net_decrease_target",
4603420426cSMatt Spinler                "groups": [
4613420426cSMatt Spinler                    {
4623420426cSMatt Spinler                        "name": "proc0 core temps",
4633420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4643420426cSMatt Spinler                        "property": { "name": "Value" }
4653420426cSMatt Spinler                    }
4663420426cSMatt Spinler                ],
4673420426cSMatt Spinler                "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
4683420426cSMatt Spinler                "delta": 50
4693420426cSMatt Spinler            },
4703420426cSMatt Spinler            {
4713420426cSMatt Spinler                "name": "set_net_decrease_target",
4723420426cSMatt Spinler                "groups": [
4733420426cSMatt Spinler                    {
4743420426cSMatt Spinler                        "name": "proc0 ioring temp",
4753420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4763420426cSMatt Spinler                        "property": { "name": "Value" }
4773420426cSMatt Spinler                    }
4783420426cSMatt Spinler                ],
4793420426cSMatt Spinler                "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
4803420426cSMatt Spinler                "delta": 50
4813420426cSMatt Spinler            },
4823420426cSMatt Spinler            {
4833420426cSMatt Spinler                "name": "set_net_decrease_target",
4843420426cSMatt Spinler                "groups": [
4853420426cSMatt Spinler                    {
4863420426cSMatt Spinler                        "name": "dram temps",
4873420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
4883420426cSMatt Spinler                        "property": { "name": "Value" }
4893420426cSMatt Spinler                    }
4903420426cSMatt Spinler                ],
4918ef2c86bSMatt Spinler                "state": 61.0,
4923420426cSMatt Spinler                "delta": 40
4933420426cSMatt Spinler            },
4943420426cSMatt Spinler            {
4953420426cSMatt Spinler                "name": "set_net_decrease_target",
4963420426cSMatt Spinler                "groups": [
4973420426cSMatt Spinler                    {
4983420426cSMatt Spinler                        "name": "internal memory buffer temps",
4993420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5003420426cSMatt Spinler                        "property": { "name": "Value" }
5013420426cSMatt Spinler                    }
5023420426cSMatt Spinler                ],
5033420426cSMatt Spinler                "state": 71.0,
5043420426cSMatt Spinler                "delta": 40
5053420426cSMatt Spinler            },
5063420426cSMatt Spinler            {
5073420426cSMatt Spinler                "name": "set_net_decrease_target",
5083420426cSMatt Spinler                "groups": [
5093420426cSMatt Spinler                    {
5103420426cSMatt Spinler                        "name": "vdd vrm temps",
5113420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5123420426cSMatt Spinler                        "property": { "name": "Value" }
5133420426cSMatt Spinler                    }
5143420426cSMatt Spinler                ],
5153420426cSMatt Spinler                "state": 79.0,
5163420426cSMatt Spinler                "delta": 30
5173420426cSMatt Spinler            },
5183420426cSMatt Spinler            {
5193420426cSMatt Spinler                "name": "set_net_decrease_target",
5203420426cSMatt Spinler                "groups": [
5213420426cSMatt Spinler                    {
5223420426cSMatt Spinler                        "name": "nvme temps",
5233420426cSMatt Spinler                        "interface": "xyz.openbmc_project.Sensor.Value",
5243420426cSMatt Spinler                        "property": { "name": "Value" }
5253420426cSMatt Spinler                    }
5263420426cSMatt Spinler                ],
5273420426cSMatt Spinler                "state": 55.0,
5283420426cSMatt Spinler                "delta": 40
5293420426cSMatt Spinler            }
5303420426cSMatt Spinler        ]
5313420426cSMatt Spinler    },
5323420426cSMatt Spinler    {
5333420426cSMatt Spinler        // Remove NVMe temperature objects from cache when they are removed from
5343420426cSMatt Spinler        // dbus. There's no need to react to their removal.
5353420426cSMatt Spinler        "name": "remove nvme objects",
5363420426cSMatt Spinler        "groups": [
5373420426cSMatt Spinler            {
5383420426cSMatt Spinler                "name": "nvme temps",
5393420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
5403420426cSMatt Spinler                "property": { "name": "Value" }
5413420426cSMatt Spinler            },
5423420426cSMatt Spinler            {
5433420426cSMatt Spinler                "name": "nvme temps",
5443420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
5453420426cSMatt Spinler                "property": { "name": "Functional" }
5463420426cSMatt Spinler            }
5473420426cSMatt Spinler        ],
5483420426cSMatt Spinler        "triggers": [
5493420426cSMatt Spinler            {
5503420426cSMatt Spinler                "class": "signal",
5513420426cSMatt Spinler                "signal": "interfaces_removed"
5523420426cSMatt Spinler            }
5533420426cSMatt Spinler        ]
5543420426cSMatt Spinler    },
5553420426cSMatt Spinler    {
5563420426cSMatt Spinler        "name": "set pcie floor index",
5573420426cSMatt Spinler        "groups": [
5583420426cSMatt Spinler            {
5593420426cSMatt Spinler                "name": "pcie slots",
5603420426cSMatt Spinler                "interface": "xyz.openbmc_project.State.Decorator.PowerState",
5613420426cSMatt Spinler                "property": {
5623420426cSMatt Spinler                    "name": "PowerState"
5633420426cSMatt Spinler                }
5643420426cSMatt Spinler            },
5653420426cSMatt Spinler            {
5663420426cSMatt Spinler                "name": "pcie cards",
5673420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
5683420426cSMatt Spinler                "property": {
5693420426cSMatt Spinler                    "name": "Function0DeviceId"
5703420426cSMatt Spinler                }
5713420426cSMatt Spinler            },
5723420426cSMatt Spinler            {
5733420426cSMatt Spinler                "name": "pcie cards",
5743420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
5753420426cSMatt Spinler                "property": {
5763420426cSMatt Spinler                    "name": "Function0VendorId"
5773420426cSMatt Spinler                }
5783420426cSMatt Spinler            },
5793420426cSMatt Spinler            {
5803420426cSMatt Spinler                "name": "pcie cards",
5813420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
5823420426cSMatt Spinler                "property": {
5833420426cSMatt Spinler                    "name": "Function0SubsystemId"
5843420426cSMatt Spinler                }
5853420426cSMatt Spinler            },
5863420426cSMatt Spinler            {
5873420426cSMatt Spinler                "name": "pcie cards",
5883420426cSMatt Spinler                "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
5893420426cSMatt Spinler                "property": {
5903420426cSMatt Spinler                    "name": "Function0SubsystemVendorId"
5913420426cSMatt Spinler                }
5923420426cSMatt Spinler            }
5933420426cSMatt Spinler        ],
5943420426cSMatt Spinler        "triggers": [
5953420426cSMatt Spinler            {
5963420426cSMatt Spinler                "class": "init",
5973420426cSMatt Spinler                "method": "get_properties"
5983420426cSMatt Spinler            },
5993420426cSMatt Spinler            {
6003420426cSMatt Spinler                "class": "signal",
6013420426cSMatt Spinler                "signal": "properties_changed"
6023420426cSMatt Spinler            },
6033420426cSMatt Spinler            {
6043420426cSMatt Spinler                "class": "signal",
6053420426cSMatt Spinler                "signal": "interfaces_added"
6063420426cSMatt Spinler            }
6073420426cSMatt Spinler        ],
6083420426cSMatt Spinler        "actions": [
6093420426cSMatt Spinler            {
6103420426cSMatt Spinler                "name": "pcie_card_floors",
6113420426cSMatt Spinler                "use_config_specific_files": true,
6123420426cSMatt Spinler                "settle_time": 2
6133420426cSMatt Spinler            }
6143420426cSMatt Spinler        ]
6153420426cSMatt Spinler    },
6163420426cSMatt Spinler    {
6173420426cSMatt Spinler        "name": "Set altitude offset parameter",
6183420426cSMatt Spinler        "groups": [
6193420426cSMatt Spinler            {
6203420426cSMatt Spinler                "name": "altitude",
6213420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
6223420426cSMatt Spinler                "property": { "name": "Value" }
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": "interfaces_added"
6333420426cSMatt Spinler            },
6343420426cSMatt Spinler            {
6353420426cSMatt Spinler                // Refresh altitude every 24hrs
6363420426cSMatt Spinler                "class": "timer",
6373420426cSMatt Spinler                "type": "repeating",
6383420426cSMatt Spinler                "interval": 86400000000,
6393420426cSMatt Spinler                "preload_groups": true
6403420426cSMatt Spinler            }
6413420426cSMatt Spinler        ],
6423420426cSMatt Spinler        "actions": [
6433420426cSMatt Spinler            {
6443420426cSMatt Spinler                "name": "set_parameter_from_group_max",
645*950ff459SMatt Spinler                "parameter_name": "ambient_24_5_altitude_offset",
6463420426cSMatt Spinler                "modifier": {
6473420426cSMatt Spinler                    "operator": "less_than",
6483420426cSMatt Spinler                    "default_value": 10000,
6493420426cSMatt Spinler                    "value": [
6503420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
651338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 180 },
652338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 320 },
653338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 650 },
654338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1010 },
655338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1370 }
6563420426cSMatt Spinler                    ]
6573420426cSMatt Spinler                }
6583420426cSMatt Spinler            },
6593420426cSMatt Spinler            {
6603420426cSMatt Spinler                "name": "set_parameter_from_group_max",
661*950ff459SMatt Spinler                "parameter_name": "ambient_29_5_altitude_offset",
6623420426cSMatt Spinler                "modifier": {
6633420426cSMatt Spinler                    "operator": "less_than",
6643420426cSMatt Spinler                    "default_value": 10000,
6653420426cSMatt Spinler                    "value": [
6663420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
667338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 200 },
668338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 340 },
669338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 580 },
670338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 950 },
671338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1500 }
6723420426cSMatt Spinler                    ]
6733420426cSMatt Spinler                }
6743420426cSMatt Spinler            },
6753420426cSMatt Spinler            {
6763420426cSMatt Spinler                "name": "set_parameter_from_group_max",
677*950ff459SMatt Spinler                "parameter_name": "ambient_34_5_altitude_offset",
6783420426cSMatt Spinler                "modifier": {
6793420426cSMatt Spinler                    "operator": "less_than",
6803420426cSMatt Spinler                    "default_value": 10000,
6813420426cSMatt Spinler                    "value": [
6823420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
683338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 250 },
684338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 580 },
685338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 980 },
686338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1430 },
687338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 1930 }
6883420426cSMatt Spinler                    ]
6893420426cSMatt Spinler                }
6903420426cSMatt Spinler            },
6913420426cSMatt Spinler            {
6923420426cSMatt Spinler                "name": "set_parameter_from_group_max",
693*950ff459SMatt Spinler                "parameter_name": "ambient_39_5_altitude_offset",
6943420426cSMatt Spinler                "modifier": {
6953420426cSMatt Spinler                    "operator": "less_than",
6963420426cSMatt Spinler                    "default_value": 10000,
6973420426cSMatt Spinler                    "value": [
6983420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
699338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 340 },
700338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 720 },
701338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 1180 },
702338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 1800 },
703338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 2550 }
7043420426cSMatt Spinler                    ]
7053420426cSMatt Spinler                }
7063420426cSMatt Spinler            },
7073420426cSMatt Spinler            {
7083420426cSMatt Spinler                "name": "set_parameter_from_group_max",
709*950ff459SMatt Spinler                "parameter_name": "ambient_44_5_altitude_offset",
7103420426cSMatt Spinler                "modifier": {
7113420426cSMatt Spinler                    "operator": "less_than",
7123420426cSMatt Spinler                    "default_value": 10000,
7133420426cSMatt Spinler                    "value": [
7143420426cSMatt Spinler                        { "arg_value": 500, "parameter_value": 0 },
715338b3e3dSMatt Spinler                        { "arg_value": 1000, "parameter_value": 450 },
716338b3e3dSMatt Spinler                        { "arg_value": 1500, "parameter_value": 1050 },
717338b3e3dSMatt Spinler                        { "arg_value": 2000, "parameter_value": 1820 },
718338b3e3dSMatt Spinler                        { "arg_value": 2500, "parameter_value": 2590 },
719338b3e3dSMatt Spinler                        { "arg_value": 3050, "parameter_value": 3360 }
7203420426cSMatt Spinler                    ]
7213420426cSMatt Spinler                }
7223420426cSMatt Spinler            }
7233420426cSMatt Spinler        ]
7243420426cSMatt Spinler    },
7253420426cSMatt Spinler    {
7263420426cSMatt Spinler        "name": "Fan floors",
7273420426cSMatt Spinler        "groups": [
7283420426cSMatt Spinler            {
7293420426cSMatt Spinler                "name": "ambient temp",
7303420426cSMatt Spinler                "interface": "xyz.openbmc_project.Sensor.Value",
7313420426cSMatt Spinler                "property": { "name": "Value" }
7323420426cSMatt Spinler            }
7333420426cSMatt Spinler        ],
7343420426cSMatt Spinler        "triggers": [
7353420426cSMatt Spinler            {
7363420426cSMatt Spinler                "class": "init",
7373420426cSMatt Spinler                "method": "get_properties"
7383420426cSMatt Spinler            },
7393420426cSMatt Spinler            {
7403420426cSMatt Spinler                "class": "signal",
7413420426cSMatt Spinler                "signal": "properties_changed"
7423420426cSMatt Spinler            },
7433420426cSMatt Spinler            {
7443420426cSMatt Spinler                "class": "signal",
7453420426cSMatt Spinler                "signal": "interfaces_added"
7463420426cSMatt Spinler            },
7473420426cSMatt Spinler            {
7483420426cSMatt Spinler                "class": "parameter",
7493420426cSMatt Spinler                "parameter": "pcie_floor_index"
7503420426cSMatt Spinler            },
7513420426cSMatt Spinler            {
7523420426cSMatt Spinler                "class": "parameter",
753*950ff459SMatt Spinler                "parameter": "ambient_24_5_altitude_offset"
7543420426cSMatt Spinler            },
7553420426cSMatt Spinler            {
7563420426cSMatt Spinler                "class": "parameter",
757*950ff459SMatt Spinler                "parameter": "ambient_29_5_altitude_offset"
7583420426cSMatt Spinler            },
7593420426cSMatt Spinler            {
7603420426cSMatt Spinler                "class": "parameter",
761*950ff459SMatt Spinler                "parameter": "ambient_34_5_altitude_offset"
7623420426cSMatt Spinler            },
7633420426cSMatt Spinler            {
7643420426cSMatt Spinler                "class": "parameter",
765*950ff459SMatt Spinler                "parameter": "ambient_39_5_altitude_offset"
7663420426cSMatt Spinler            },
7673420426cSMatt Spinler            {
7683420426cSMatt Spinler                "class": "parameter",
769*950ff459SMatt Spinler                "parameter": "ambient_44_5_altitude_offset"
7703420426cSMatt Spinler            }
7713420426cSMatt Spinler        ],
7723420426cSMatt Spinler        "actions": [
7733420426cSMatt Spinler            {
7743420426cSMatt Spinler                "name": "mapped_floor",
7753420426cSMatt Spinler                "key_group": "ambient temp",
7763420426cSMatt Spinler                "fan_floors": [
7773420426cSMatt Spinler                    {
778*950ff459SMatt Spinler                        // Entry valid for temps < 24.5
779*950ff459SMatt Spinler                        "key": 24.5,
780338b3e3dSMatt Spinler                        "default_floor": 4130,
781*950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_24_5_altitude_offset",
7823420426cSMatt Spinler                        "floors": [
7833420426cSMatt Spinler                            {
7843420426cSMatt Spinler                                "parameter": "pcie_floor_index",
78551465352SMatt Spinler                                "floors": []
7863420426cSMatt Spinler                            }
7873420426cSMatt Spinler                        ]
7883420426cSMatt Spinler                    },
7893420426cSMatt Spinler                    {
790*950ff459SMatt Spinler                        // Entry valid for temps < 29.5
791*950ff459SMatt Spinler                        "key": 29.5,
792338b3e3dSMatt Spinler                        "default_floor": 4810,
793*950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_29_5_altitude_offset",
7943420426cSMatt Spinler                        "floors": [
7953420426cSMatt Spinler                            {
7963420426cSMatt Spinler                                "parameter": "pcie_floor_index",
79751465352SMatt Spinler                                "floors": []
7983420426cSMatt Spinler                            }
7993420426cSMatt Spinler                        ]
8003420426cSMatt Spinler                    },
8013420426cSMatt Spinler                    {
802*950ff459SMatt Spinler                        // Entry valid for temps < 34.5
803*950ff459SMatt Spinler                        "key": 34.5,
804338b3e3dSMatt Spinler                        "default_floor": 5930,
805*950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_34_5_altitude_offset",
8063420426cSMatt Spinler                        "floors": [
8073420426cSMatt Spinler                            {
8083420426cSMatt Spinler                                "parameter": "pcie_floor_index",
80951465352SMatt Spinler                                "floors": []
8103420426cSMatt Spinler                            }
8113420426cSMatt Spinler                        ]
8123420426cSMatt Spinler                    },
8133420426cSMatt Spinler                    {
814*950ff459SMatt Spinler                        // Entry valid for temps < 39.5
815*950ff459SMatt Spinler                        "key": 39.5,
816338b3e3dSMatt Spinler                        "default_floor": 7940,
817*950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_39_5_altitude_offset",
8183420426cSMatt Spinler                        "floors": [
8193420426cSMatt Spinler                            {
8203420426cSMatt Spinler                                "parameter": "pcie_floor_index",
82151465352SMatt Spinler                                "floors": []
8223420426cSMatt Spinler                            }
8233420426cSMatt Spinler                        ]
8243420426cSMatt Spinler                    },
8253420426cSMatt Spinler                    {
826*950ff459SMatt Spinler                        // Entry valid for temps < 44.5
827*950ff459SMatt Spinler                        "key": 44.5,
828338b3e3dSMatt Spinler                        "default_floor": 10670,
829*950ff459SMatt Spinler                        "floor_offset_parameter": "ambient_44_5_altitude_offset",
8303420426cSMatt Spinler                        "floors": [
8313420426cSMatt Spinler                            {
8323420426cSMatt Spinler                                "parameter": "pcie_floor_index",
83351465352SMatt Spinler                                "floors": []
8343420426cSMatt Spinler                            }
8353420426cSMatt Spinler                        ]
8363420426cSMatt Spinler                    }
8373420426cSMatt Spinler                ]
8383420426cSMatt Spinler            }
8393420426cSMatt Spinler        ]
8403420426cSMatt Spinler    }
8413420426cSMatt Spinler]
842