Message ID | 20240402155822.505491-5-lukasz.luba@arm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Update Energy Model after chip binning adjusted voltages | expand |
On 02/04/2024 17:58, Lukasz Luba wrote: [...] > @@ -97,9 +98,17 @@ static int exynos_asv_update_opps(struct exynos_asv *asv) > last_opp_table = opp_table; > > ret = exynos_asv_update_cpu_opps(asv, cpu); > - if (ret < 0) > + if (!ret) { > + /* > + * When the voltage for OPPs could be changed, > + * make sure to update the EM power values, to > + * reflect the reality and not use stale data. > + */ Maybe shorter? /* * Update EM power values since OPP * voltage values may have changed. */ [...]
diff --git a/drivers/soc/samsung/exynos-asv.c b/drivers/soc/samsung/exynos-asv.c index d60af8acc3916..d6d003e3a81ab 100644 --- a/drivers/soc/samsung/exynos-asv.c +++ b/drivers/soc/samsung/exynos-asv.c @@ -11,6 +11,7 @@ #include <linux/cpu.h> #include <linux/device.h> +#include <linux/energy_model.h> #include <linux/errno.h> #include <linux/of.h> #include <linux/pm_opp.h> @@ -97,9 +98,17 @@ static int exynos_asv_update_opps(struct exynos_asv *asv) last_opp_table = opp_table; ret = exynos_asv_update_cpu_opps(asv, cpu); - if (ret < 0) + if (!ret) { + /* + * When the voltage for OPPs could be changed, + * make sure to update the EM power values, to + * reflect the reality and not use stale data. + */ + em_dev_update_chip_binning(cpu); + } else { dev_err(asv->dev, "Couldn't udate OPPs for cpu%d\n", cpuid); + } } dev_pm_opp_put_opp_table(opp_table);