Messages in this thread | | | From | "Rafael J. Wysocki" <> | Date | Wed, 13 Mar 2024 20:49:38 +0100 | Subject | Re: [PATCH] PM: EM: Force device drivers to provide power in uW |
| |
On Fri, Mar 8, 2024 at 1:31 PM Lukasz Luba <lukasz.luba@arm.com> wrote: > > The EM only supports power in uW. Make sure that it is not possible to > register some downstream driver which doesn't provide power in uW. > The only exception is artificial EM, but that EM is ignored by the rest of > kernel frameworks (thermal, powercap, etc). > > Reported-by: PoShao Chen <poshao.chen@mediatek.com> > Signed-off-by: Lukasz Luba <lukasz.luba@arm.com> > --- > > Hi all, > > The was an issue reported recently that the EM could be used with > not aligned drivers which provide milli-Watts. This patch prevents such > drivers to register EM (although there are no such in upstream). > > Regards, > Lukasz > > kernel/power/energy_model.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c > index b686ac0345bd9..9e1c9aa399ea9 100644 > --- a/kernel/power/energy_model.c > +++ b/kernel/power/energy_model.c > @@ -612,6 +612,17 @@ int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states, > else if (cb->get_cost) > flags |= EM_PERF_DOMAIN_ARTIFICIAL; > > + /* > + * EM only supports uW (exception is artificial EM). > + * Therefore, check and force the drivers to provide > + * power in uW. > + */ > + if (!microwatts && !(flags & EM_PERF_DOMAIN_ARTIFICIAL)) { > + dev_err(dev, "EM: only supports uW power values\n"); > + ret = -EINVAL; > + goto unlock; > + } > + > ret = em_create_pd(dev, nr_states, cb, cpus, flags); > if (ret) > goto unlock; > --
Applied as 6.9-rc material, thanks!
| |