control:configs:everest: Use memory DVFS temps
Instead of hardcoding the increase and decrease temperatures for the
memory related sensors, do the same as what was done for the processor
core and ioring temps and use an offset from the DVFS (dynamic
voltage and frequency scaling) sensor for that sensor type.
This is being done because DDR4 and DDR5 memory have different DVFS
temperatures where the OCC starts throttling/slewing, and so just
hardcoding a single temperature value wouldn't work.
The *_increase_temp and *_decrease_temp modifier values were chosen such that
the final increase and decrease parameter temperature values were the
same as what the hardcoded temperatures were for DDR4. They were
calculated by subtracting the old increase/decrease temp values from the
DVFS value.
Tested:
Checked the parameters that were present on an Everest:
"dram_extmb_dvfs_decrease_temp": 52.0,
"dram_extmb_dvfs_increase_temp": 55.0,
"pmic_dvfs_decrease_temp": 55.0,
"pmic_dvfs_increase_temp": 58.0,
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I4e76cfc13325df3a3c3d0a993381f2418c088c24
diff --git a/control/config_files/p10bmc/ibm,everest/events.json b/control/config_files/p10bmc/ibm,everest/events.json
index 45e4c44..2213ba3 100644
--- a/control/config_files/p10bmc/ibm,everest/events.json
+++ b/control/config_files/p10bmc/ibm,everest/events.json
@@ -1166,6 +1166,216 @@
]
},
{
+ "name": "Set DRAM DVFS parameter",
+ "groups": [
+ {
+ "name": "dram dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "dram_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 8
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "dram_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 11
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set PMIC DVFS parameter",
+ "groups": [
+ {
+ "name": "pmic dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "pmic_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 10
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "pmic_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 13
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set internal memory buffer DVFS parameter",
+ "groups": [
+ {
+ "name": "internal memory buffer dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "intmb_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 9
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "intmb_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 12
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set DRAM and external memory buffer DVFS parameter",
+ "groups": [
+ {
+ "name": "dram and external memory buffer dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "dram_extmb_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 10
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "dram_extmb_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 13
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set external memory buffer DVFS parameter",
+ "groups": [
+ {
+ "name": "external memory buffer dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "extmb_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 10
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "extmb_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 13
+ }
+ }
+ ]
+ },
+ {
// Collect group temperatures each iteration the repeating timer expires
"name": "Fan control timer loop",
"groups": [
@@ -1505,7 +1715,7 @@
"property": { "name": "Value" }
}
],
- "state": 69.0,
+ "state_parameter_name": "dram_dvfs_increase_temp",
"delta": 175
},
{
@@ -1517,7 +1727,7 @@
"property": { "name": "Value" }
}
],
- "state": 58.0,
+ "state_parameter_name": "pmic_dvfs_increase_temp",
"delta": 200
},
{
@@ -1529,7 +1739,7 @@
"property": { "name": "Value" }
}
],
- "state": 75.0,
+ "state_parameter_name": "intmb_dvfs_increase_temp",
"delta": 150
},
{
@@ -1541,7 +1751,7 @@
"property": { "name": "Value" }
}
],
- "state": 55.0,
+ "state_parameter_name": "dram_extmb_dvfs_increase_temp",
"delta": 200
},
{
@@ -1553,7 +1763,7 @@
"property": { "name": "Value" }
}
],
- "state": 55.0,
+ "state_parameter_name": "extmb_dvfs_increase_temp",
"delta": 200
},
{
@@ -1805,7 +2015,7 @@
"property": { "name": "Value" }
}
],
- "state": 66.0,
+ "state_parameter_name": "dram_dvfs_decrease_temp",
"delta": 40
},
{
@@ -1817,7 +2027,7 @@
"property": { "name": "Value" }
}
],
- "state": 55.0,
+ "state_parameter_name": "pmic_dvfs_decrease_temp",
"delta": 40
},
{
@@ -1829,7 +2039,7 @@
"property": { "name": "Value" }
}
],
- "state": 72.0,
+ "state_parameter_name": "intmb_dvfs_decrease_temp",
"delta": 40
},
{
@@ -1841,7 +2051,7 @@
"property": { "name": "Value" }
}
],
- "state": 52.0,
+ "state_parameter_name": "dram_extmb_dvfs_decrease_temp",
"delta": 40
},
{
@@ -1853,7 +2063,7 @@
"property": { "name": "Value" }
}
],
- "state": 52.0,
+ "state_parameter_name": "extmb_dvfs_decrease_temp",
"delta": 40
},
{
diff --git a/control/config_files/p10bmc/ibm,everest/groups.json b/control/config_files/p10bmc/ibm,everest/groups.json
index 526b7dc..f328a80 100644
--- a/control/config_files/p10bmc/ibm,everest/groups.json
+++ b/control/config_files/p10bmc/ibm,everest/groups.json
@@ -481,6 +481,13 @@
]
},
{
+ "name": "dram dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm_dram_dvfs_temp"
+ ]
+ },
+ {
"name": "pmic temps",
"service": "org.open_power.OCC.Control",
"members": [
@@ -551,6 +558,13 @@
]
},
{
+ "name": "pmic dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm_pmic_dvfs_temp"
+ ]
+ },
+ {
"name": "internal memory buffer temps",
"service": "org.open_power.OCC.Control",
"members": [
@@ -621,6 +635,14 @@
]
},
{
+ "name": "internal memory buffer dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm_intmb_dvfs_temp"
+ ]
+ },
+ {
+ // Repurposed as DRAM temperature sensors for 4U DDIMMs
"name": "dram and external memory buffer temps",
"service": "org.open_power.OCC.Control",
"members": [
@@ -691,6 +713,14 @@
]
},
{
+ "name": "dram and external memory buffer dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm_dram_extmb_dvfs_temp"
+ ]
+ },
+ {
+ // Repurposed as PMIC temperature sensors for 4U DDIMMs
"name": "external memory buffer temps",
"service": "org.open_power.OCC.Control",
"members": [
@@ -761,6 +791,13 @@
]
},
{
+ "name": "external memory buffer dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm_extmb_dvfs_temp"
+ ]
+ },
+ {
"name": "vdd vrm temps",
"service": "org.open_power.OCC.Control",
"members": [