Loading drivers/devfreq/governor_cache_hwmon.c +8 −7 Original line number Diff line number Diff line Loading @@ -134,7 +134,8 @@ static unsigned long measure_mrps_and_set_irq(struct cache_hwmon_node *node, dev_dbg(hw->df->dev.parent, "stat H=%3lu, M=%3lu, T=%3lu, b=%3u, f=%4lu, us=%d\n", stat->high, stat->med, stat->high + stat->med, stat->mrps[HIGH], stat->mrps[MED], stat->mrps[HIGH] + stat->mrps[MED], stat->busy_percent, hw->df->previous_freq / 1000, us); return 0; Loading @@ -146,9 +147,9 @@ static void compute_cache_freq(struct cache_hwmon_node *node, unsigned long new_mhz; unsigned int busy; new_mhz = mrps->high * node->cycles_per_high_req + mrps->med * node->cycles_per_med_req + mrps->low * node->cycles_per_low_req; new_mhz = mrps->mrps[HIGH] * node->cycles_per_high_req + mrps->mrps[MED] * node->cycles_per_med_req + mrps->mrps[LOW] * node->cycles_per_low_req; busy = max(node->min_busy, mrps->busy_percent); busy = min(node->max_busy, busy); Loading Loading @@ -278,9 +279,9 @@ static int start_monitoring(struct devfreq *df) node->prev_ts = ktime_get(); node->prev_mhz = 0; mrps.high = (df->previous_freq / 1000) - node->guard_band_mhz; mrps.high /= node->cycles_per_high_req; mrps.med = mrps.low = 0; mrps.mrps[HIGH] = (df->previous_freq / 1000) - node->guard_band_mhz; mrps.mrps[HIGH] /= node->cycles_per_high_req; mrps.mrps[MED] = mrps.mrps[LOW] = 0; ret = hw->start_hwmon(hw, &mrps); if (ret) { Loading drivers/devfreq/governor_cache_hwmon.h +8 −3 Original line number Diff line number Diff line Loading @@ -17,10 +17,15 @@ #include <linux/kernel.h> #include <linux/devfreq.h> enum request_group { HIGH, MED, LOW, MAX_NUM_GROUPS, }; struct mrps_stats { unsigned long high; unsigned long med; unsigned long low; unsigned long mrps[MAX_NUM_GROUPS]; unsigned int busy_percent; }; Loading drivers/devfreq/krait-l2pm.c +4 −4 Original line number Diff line number Diff line Loading @@ -328,9 +328,9 @@ static unsigned long meas_mrps_and_set_irq(struct cache_hwmon *hw, mon_enable(L2_M_REQ_MON); mon_enable(L2_CYC_MON); mrps->high = t_mrps - m_mrps; mrps->med = m_mrps; mrps->low = 0; mrps->mrps[HIGH] = t_mrps - m_mrps; mrps->mrps[MED] = m_mrps; mrps->mrps[LOW] = 0; mrps->busy_percent = mult_frac(l2_cyc, 1000, us) * 100 / f; return 0; Loading Loading @@ -363,7 +363,7 @@ static int start_mrps_hwmon(struct cache_hwmon *hw, struct mrps_stats *mrps) mon_disable(L2_M_REQ_MON); mon_disable(L2_CYC_MON); limit = mrps_to_count(mrps->high, hw->df->profile->polling_ms, 0); limit = mrps_to_count(mrps->mrps[HIGH], hw->df->profile->polling_ms, 0); prev_req_start_val = mon_set_limit(L2_H_REQ_MON, limit); mon_set_limit(L2_M_REQ_MON, 0xFFFFFFFF); mon_set_limit(L2_CYC_MON, 0xFFFFFFFF); Loading Loading
drivers/devfreq/governor_cache_hwmon.c +8 −7 Original line number Diff line number Diff line Loading @@ -134,7 +134,8 @@ static unsigned long measure_mrps_and_set_irq(struct cache_hwmon_node *node, dev_dbg(hw->df->dev.parent, "stat H=%3lu, M=%3lu, T=%3lu, b=%3u, f=%4lu, us=%d\n", stat->high, stat->med, stat->high + stat->med, stat->mrps[HIGH], stat->mrps[MED], stat->mrps[HIGH] + stat->mrps[MED], stat->busy_percent, hw->df->previous_freq / 1000, us); return 0; Loading @@ -146,9 +147,9 @@ static void compute_cache_freq(struct cache_hwmon_node *node, unsigned long new_mhz; unsigned int busy; new_mhz = mrps->high * node->cycles_per_high_req + mrps->med * node->cycles_per_med_req + mrps->low * node->cycles_per_low_req; new_mhz = mrps->mrps[HIGH] * node->cycles_per_high_req + mrps->mrps[MED] * node->cycles_per_med_req + mrps->mrps[LOW] * node->cycles_per_low_req; busy = max(node->min_busy, mrps->busy_percent); busy = min(node->max_busy, busy); Loading Loading @@ -278,9 +279,9 @@ static int start_monitoring(struct devfreq *df) node->prev_ts = ktime_get(); node->prev_mhz = 0; mrps.high = (df->previous_freq / 1000) - node->guard_band_mhz; mrps.high /= node->cycles_per_high_req; mrps.med = mrps.low = 0; mrps.mrps[HIGH] = (df->previous_freq / 1000) - node->guard_band_mhz; mrps.mrps[HIGH] /= node->cycles_per_high_req; mrps.mrps[MED] = mrps.mrps[LOW] = 0; ret = hw->start_hwmon(hw, &mrps); if (ret) { Loading
drivers/devfreq/governor_cache_hwmon.h +8 −3 Original line number Diff line number Diff line Loading @@ -17,10 +17,15 @@ #include <linux/kernel.h> #include <linux/devfreq.h> enum request_group { HIGH, MED, LOW, MAX_NUM_GROUPS, }; struct mrps_stats { unsigned long high; unsigned long med; unsigned long low; unsigned long mrps[MAX_NUM_GROUPS]; unsigned int busy_percent; }; Loading
drivers/devfreq/krait-l2pm.c +4 −4 Original line number Diff line number Diff line Loading @@ -328,9 +328,9 @@ static unsigned long meas_mrps_and_set_irq(struct cache_hwmon *hw, mon_enable(L2_M_REQ_MON); mon_enable(L2_CYC_MON); mrps->high = t_mrps - m_mrps; mrps->med = m_mrps; mrps->low = 0; mrps->mrps[HIGH] = t_mrps - m_mrps; mrps->mrps[MED] = m_mrps; mrps->mrps[LOW] = 0; mrps->busy_percent = mult_frac(l2_cyc, 1000, us) * 100 / f; return 0; Loading Loading @@ -363,7 +363,7 @@ static int start_mrps_hwmon(struct cache_hwmon *hw, struct mrps_stats *mrps) mon_disable(L2_M_REQ_MON); mon_disable(L2_CYC_MON); limit = mrps_to_count(mrps->high, hw->df->profile->polling_ms, 0); limit = mrps_to_count(mrps->mrps[HIGH], hw->df->profile->polling_ms, 0); prev_req_start_val = mon_set_limit(L2_H_REQ_MON, limit); mon_set_limit(L2_M_REQ_MON, 0xFFFFFFFF); mon_set_limit(L2_CYC_MON, 0xFFFFFFFF); Loading