blob: acb23bccb751e7bc9f0531241c58a030bd4824b7 [file] [log] [blame]
[
{
// Hold fans at the given target when a number of fans are missing.
"name": "fan(s) missing",
"groups": [
{
"name": "fan inventory",
"interface": "xyz.openbmc_project.Inventory.Item",
"property": { "name": "Present" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "count_state_before_target",
"count": 1,
"state": false,
"target": 10000
}
]
},
{
// Hold fans at the given target when a number of rotors are nonfunctional.
"name": "fan rotor(s) faulted",
"groups": [
{
"name": "fan0 rotor inventory",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan1 rotor inventory",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan2 rotor inventory",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
},
{
"name": "fan4 rotor inventory",
"interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
"property": { "name": "Functional" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "count_state_before_target",
"count": 1,
"state": false,
"target": 10000
}
]
},
{
// Hold fans at the given target when any critical service
// is not running for 5 seconds.
"name": "service(s) missing",
"groups": [
{
"name": "fan inventory",
"interface": "xyz.openbmc_project.Inventory.Item",
"property": { "name": "Present" }
},
{
"name": "occ objects",
"interface": "org.open_power.OCC.Status",
"property": { "name": "OccActive" }
}
],
"triggers": [
{
"class": "init",
"method": "name_has_owner"
},
{
"class": "signal",
"signal": "name_owner_changed"
}
],
"actions": [
{
"name": "call_actions_based_on_timer",
"timer": {
"interval": 5000000,
"type": "oneshot"
},
"actions": [
{
"name": "set_target_on_missing_owner",
"groups": [
{
"name": "fan inventory",
"interface": "xyz.openbmc_project.Inventory.Item",
"property": { "name": "Present" }
},
{
"name": "occ objects",
"interface": "org.open_power.OCC.Status",
"property": { "name": "OccActive" }
}
],
"target": 10000
}
]
}
]
},
{
// Set a fan floor if an OCC isn't active
"name": "Non-active OCC(s)",
"groups": [
{
"name": "occ objects",
"interface": "org.open_power.OCC.Status",
"property": {
"name": "OccActive"
}
}
],
"triggers": [
{
"class": "signal",
"signal": "properties_changed"
},
{
"class": "signal",
"signal": "interfaces_added"
},
{
"class": "init",
"method": "get_properties"
}
],
"actions": [
{
"name": "count_state_floor",
"count": 1,
"state": false,
"floor": 10000
}
]
},
{
"name": "Set Proc 0 Core DVFS parameter",
"groups": [
{
"name": "proc 0 core dvfs temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "interfaces_added"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_0_core_dvfs_increase_temp",
"modifier": {
"operator": "minus",
"value": 10
}
},
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_0_core_dvfs_decrease_temp",
"modifier": {
"operator": "minus",
"value": 13
}
}
]
},
{
"name": "Set Proc 1 Core DVFS parameter",
"groups": [
{
"name": "proc 1 core dvfs temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "interfaces_added"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_1_core_dvfs_increase_temp",
"modifier": {
"operator": "minus",
"value": 10
}
},
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_1_core_dvfs_decrease_temp",
"modifier": {
"operator": "minus",
"value": 13
}
}
]
},
{
"name": "Set Proc 0 IO Ring DVFS parameter",
"groups": [
{
"name": "proc 0 ioring dvfs temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "interfaces_added"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_0_ioring_dvfs_increase_temp",
"modifier": {
"operator": "minus",
"value": 10
}
},
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_0_ioring_dvfs_decrease_temp",
"modifier": {
"operator": "minus",
"value": 13
}
}
]
},
{
"name": "Set Proc 1 IO Ring DVFS parameter",
"groups": [
{
"name": "proc 1 ioring dvfs temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "init",
"method": "get_properties"
},
{
"class": "signal",
"signal": "interfaces_added"
},
{
"class": "signal",
"signal": "properties_changed"
}
],
"actions": [
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_1_ioring_dvfs_increase_temp",
"modifier": {
"operator": "minus",
"value": 10
}
},
{
"name": "set_parameter_from_group_max",
"parameter_name": "proc_1_ioring_dvfs_decrease_temp",
"modifier": {
"operator": "minus",
"value": 13
}
}
]
},
{
// Collect group temperatures each iteration the repeating timer expires
"name": "Fan control timer loop",
"groups": [
{
"name": "proc0 core temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "proc1 core temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "proc0 ioring temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "proc1 ioring temp",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "dram temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "pmic temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "internal memory buffer temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "dram and external memory buffer temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "external memory buffer temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
},
{
"name": "vdd vrm temps",
"interface": "xyz.openbmc_project.Sensor.Value",
"property": { "name": "Value" }
}
],
"triggers": [
{
"class": "timer",
"type": "repeating",
"interval": 2000000,
"preload_groups": true
}
]
}
]