control:p10bmc: Events to set DVFS temp params
Create the events that use the set_parameter_from_group_max action to
set parameters with the processor core and IO ring DVFS (Dynamic
Frequency and Voltage Slewing) temperatures, minus 3 degrees.
Subtracting 3 degrees allows the fans to start increasing before the
DVFS kicks in. The value chosen is just a starting point.
Parameter names:
* proc_N_core_dvfs_temp
* proc_N_ioring_dvfs_temp
These parameters can then be used by the set_net_increase_target action
as the value to compare the actual temperatures against to know when to
start increasing fan targets.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I40320ef87b2e3ccd5ea6761b61b3c3fcc3f0b526
diff --git a/control/config_files/p10bmc/ibm,rainier-4u/events.json b/control/config_files/p10bmc/ibm,rainier-4u/events.json
index 70d0b7d..1a27273 100644
--- a/control/config_files/p10bmc/ibm,rainier-4u/events.json
+++ b/control/config_files/p10bmc/ibm,rainier-4u/events.json
@@ -170,5 +170,278 @@
"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_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "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_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 2 Core DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 2 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_2_core_dvfs_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 3 Core DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 3 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_3_core_dvfs_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "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_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+
+ {
+ "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_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 2 IO Ring DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 2 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_2_ioring_dvfs_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 3 IO Ring DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 3 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_3_ioring_dvfs_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 3
+ }
+ }
+ ]
+ }
]
diff --git a/control/config_files/p10bmc/ibm,rainier-4u/groups.json b/control/config_files/p10bmc/ibm,rainier-4u/groups.json
index 29f990b..38e903c 100644
--- a/control/config_files/p10bmc/ibm,rainier-4u/groups.json
+++ b/control/config_files/p10bmc/ibm,rainier-4u/groups.json
@@ -420,5 +420,53 @@
"/xyz/openbmc_project/sensors/temperature/vrm_vdd2_temp",
"/xyz/openbmc_project/sensors/temperature/vrm_vdd3_temp"
]
+ },
+ {
+ "name": "proc 0 core dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_core_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 1 core dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc1_core_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 2 core dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc2_core_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 3 core dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc3_core_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 0 ioring dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_ioring_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 1 ioring dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc1_ioring_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 2 ioring dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc2_ioring_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 3 ioring dvfs temp",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc3_ioring_dvfs_temp"
+ ]
}
]