platform/x86/amd/pmf: Add PMF debug facilities
At times, when the mode transitions fail to happen, the current driver does not give enough debug information on why the transition failed or the default preset values did not load. Having an on-demand logs guarded by CONFIG would be helpful in such cases. Co-developed-by: Patil Rajesh Reddy <Patil.Reddy@amd.com> Signed-off-by: Patil Rajesh Reddy <Patil.Reddy@amd.com> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> Link: https://lore.kernel.org/r/20230510144751.66601-2-Shyam-sundar.S-k@amd.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
a82ebb3d80
commit
63b5dbfdb7
@ -179,11 +179,34 @@ void amd_pmf_trans_automode(struct amd_pmf_dev *dev, int socket_power, ktime_t t
|
||||
config_store.transition[i].applied = false;
|
||||
update = true;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AMD_PMF_DEBUG
|
||||
dev_dbg(dev->dev, "[AUTO MODE] average_power : %d mW mode: %s\n", avg_power,
|
||||
state_as_str(config_store.current_mode));
|
||||
|
||||
dev_dbg(dev->dev, "[AUTO MODE] time: %lld ms timer: %u ms tc: %u ms\n",
|
||||
time_elapsed_ms, config_store.transition[i].timer,
|
||||
config_store.transition[i].time_constant);
|
||||
|
||||
dev_dbg(dev->dev, "[AUTO MODE] shiftup: %u pt: %u mW pf: %u mW pd: %u mW\n",
|
||||
config_store.transition[i].shifting_up,
|
||||
config_store.transition[i].power_threshold,
|
||||
config_store.mode_set[i].power_floor,
|
||||
config_store.transition[i].power_delta);
|
||||
#endif
|
||||
}
|
||||
|
||||
dev_dbg(dev->dev, "[AUTO_MODE] avg power: %u mW mode: %s\n", avg_power,
|
||||
state_as_str(config_store.current_mode));
|
||||
|
||||
#ifdef CONFIG_AMD_PMF_DEBUG
|
||||
dev_dbg(dev->dev, "[AUTO MODE] priority1: %u priority2: %u priority3: %u priority4: %u\n",
|
||||
config_store.transition[0].applied,
|
||||
config_store.transition[1].applied,
|
||||
config_store.transition[2].applied,
|
||||
config_store.transition[3].applied);
|
||||
#endif
|
||||
|
||||
if (update) {
|
||||
for (j = 0; j < AUTO_TRANSITION_MAX; j++) {
|
||||
/* Apply the mode with highest priority indentified */
|
||||
|
@ -175,6 +175,13 @@ int amd_pmf_trans_cnqf(struct amd_pmf_dev *dev, int socket_power, ktime_t time_l
|
||||
config_store.trans_param[src][i].count++;
|
||||
|
||||
tp = &config_store.trans_param[src][i];
|
||||
|
||||
#ifdef CONFIG_AMD_PMF_DEBUG
|
||||
dev_dbg(dev->dev, "avg_power: %u mW total_power: %u mW count: %u timer: %u ms\n",
|
||||
avg_power, config_store.trans_param[src][i].total_power,
|
||||
config_store.trans_param[src][i].count,
|
||||
config_store.trans_param[src][i].timer);
|
||||
#endif
|
||||
if (tp->timer >= tp->time_constant && tp->count) {
|
||||
avg_power = tp->total_power / tp->count;
|
||||
|
||||
@ -195,6 +202,18 @@ int amd_pmf_trans_cnqf(struct amd_pmf_dev *dev, int socket_power, ktime_t time_l
|
||||
dev_dbg(dev->dev, "[CNQF] Avg power: %u mW socket power: %u mW mode:%s\n",
|
||||
avg_power, socket_power, state_as_str(config_store.current_mode));
|
||||
|
||||
#ifdef CONFIG_AMD_PMF_DEBUG
|
||||
dev_dbg(dev->dev, "[CNQF] priority1: %u priority2: %u priority3: %u\n",
|
||||
config_store.trans_param[src][0].priority,
|
||||
config_store.trans_param[src][1].priority,
|
||||
config_store.trans_param[src][2].priority);
|
||||
|
||||
dev_dbg(dev->dev, "[CNQF] priority4: %u priority5: %u priority6: %u\n",
|
||||
config_store.trans_param[src][3].priority,
|
||||
config_store.trans_param[src][4].priority,
|
||||
config_store.trans_param[src][5].priority);
|
||||
#endif
|
||||
|
||||
for (j = 0; j < CNQF_TRANSITION_MAX; j++) {
|
||||
/* apply the highest priority */
|
||||
if (config_store.trans_param[src][j].priority) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user