diff --git a/drivers/devfreq/governor_bw_hwmon.c b/drivers/devfreq/governor_bw_hwmon.c index e2c5ed06ce76..3f9892cbc5c4 100644 --- a/drivers/devfreq/governor_bw_hwmon.c +++ b/drivers/devfreq/governor_bw_hwmon.c @@ -409,7 +409,6 @@ static unsigned long get_bw_and_set_irq(struct hwmon_node *node, hw->up_wake_mbps = (max(MIN_MBPS, req_mbps) * (100 + node->up_thres)) / 100; hw->down_wake_mbps = 0; - hw->undo_over_req_mbps = 0; thres = mbps_to_bytes(max(MIN_MBPS, req_mbps / 2), node->sample_ms); } else { @@ -422,10 +421,6 @@ static unsigned long get_bw_and_set_irq(struct hwmon_node *node, */ hw->up_wake_mbps = (req_mbps * (100 + node->up_thres)) / 100; hw->down_wake_mbps = (meas_mbps * node->down_thres) / 100; - if (node->wake == UP_WAKE) - hw->undo_over_req_mbps = min(req_mbps, meas_mbps_zone); - else - hw->undo_over_req_mbps = 0; thres = mbps_to_bytes(meas_mbps, node->sample_ms); } @@ -462,6 +457,14 @@ static unsigned long get_bw_and_set_irq(struct hwmon_node *node, *freq, hw->up_wake_mbps, hw->down_wake_mbps); + + trace_bw_hwmon_debug(dev_name(node->hw->df->dev.parent), + req_mbps, + meas_mbps_zone, + node->hist_max_mbps, + node->hist_mem, + node->hyst_mbps, + node->hyst_en); return req_mbps; } @@ -537,7 +540,6 @@ static int start_monitor(struct devfreq *df, bool init) mbps = (df->previous_freq * node->io_percent) / 100; hw->up_wake_mbps = mbps; hw->down_wake_mbps = MIN_MBPS; - hw->undo_over_req_mbps = 0; ret = hw->start_hwmon(hw, mbps); } else { ret = hw->resume_hwmon(hw); diff --git a/drivers/devfreq/governor_bw_hwmon.h b/drivers/devfreq/governor_bw_hwmon.h index 8cde9ce4c265..c88fa1d0ab8f 100644 --- a/drivers/devfreq/governor_bw_hwmon.h +++ b/drivers/devfreq/governor_bw_hwmon.h @@ -52,7 +52,6 @@ struct bw_hwmon { struct device_node *of_node; struct devfreq_governor *gov; unsigned long up_wake_mbps; - unsigned long undo_over_req_mbps; unsigned long down_wake_mbps; unsigned int down_cnt; struct devfreq *df; diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 6d47fdee7993..0b48a7474441 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -585,6 +585,44 @@ TRACE_EVENT(bw_hwmon_update, __entry->down_thres) ); +TRACE_EVENT(bw_hwmon_debug, + + TP_PROTO(const char *name, unsigned long mbps, unsigned long zone, + unsigned long hist_max, unsigned long hist_mem, + unsigned long hyst_mbps, unsigned long hyst_len), + + TP_ARGS(name, mbps, zone, hist_max, hist_mem, hyst_mbps, hyst_len), + + TP_STRUCT__entry( + __string(name, name) + __field(unsigned long, mbps) + __field(unsigned long, zone) + __field(unsigned long, hist_max) + __field(unsigned long, hist_mem) + __field(unsigned long, hyst_mbps) + __field(unsigned long, hyst_len) + ), + + TP_fast_assign( + __assign_str(name, name); + __entry->mbps = mbps; + __entry->zone = zone; + __entry->hist_max = hist_max; + __entry->hist_mem = hist_mem; + __entry->hyst_mbps = hyst_mbps; + __entry->hyst_len = hyst_len; + ), + + TP_printk("dev=%s mbps=%lu zone=%lu hist_max=%lu hist_mem=%lu hyst_mbps=%lu hyst_len=%lu", + __get_str(name), + __entry->mbps, + __entry->zone, + __entry->hist_max, + __entry->hist_mem, + __entry->hyst_mbps, + __entry->hyst_len) +); + TRACE_EVENT(cache_hwmon_meas, TP_PROTO(const char *name, unsigned long high_mrps, unsigned long med_mrps, unsigned long low_mrps, diff --git a/kernel/trace/power-traces.c b/kernel/trace/power-traces.c index 95d81de6589e..1f57dc8fee89 100644 --- a/kernel/trace/power-traces.c +++ b/kernel/trace/power-traces.c @@ -25,3 +25,4 @@ EXPORT_TRACEPOINT_SYMBOL(cache_hwmon_update); EXPORT_TRACEPOINT_SYMBOL(cache_hwmon_meas); EXPORT_TRACEPOINT_SYMBOL(bw_hwmon_update); EXPORT_TRACEPOINT_SYMBOL(bw_hwmon_meas); +EXPORT_TRACEPOINT_SYMBOL(bw_hwmon_debug);