• Quentin Perret's avatar
    thermal: cpu_cooling: Migrate to using the EM framework · a4e893e8
    Quentin Perret authored
    The newly introduced Energy Model framework manages power cost tables in
    a generic way. Moreover, it supports several types of models since the
    tables can come from DT or firmware (through SCMI) for example. On the
    other hand, the cpu_cooling subsystem manages its own power cost tables
    using only DT data.
    
    In order to avoid the duplication of data in the kernel, and in order to
    enable IPA with EMs coming from more than just DT, remove the private
    tables from cpu_cooling.c and migrate it to using the centralized EM
    framework. Doing so should have no visible functional impact for
    existing users of IPA since:
    
     - recent extenstions to the the PM_OPP infrastructure enable the
       registration of EMs in PM_EM using the DT property used by IPA;
    
     - the existing upstream cpufreq drivers marked with the
       'CPUFREQ_IS_COOLING_DEV' flag all use the aforementioned PM_OPP
       infrastructure, which means they all support PM_EM. The only two
       exceptions are qoriq-cpufreq which doesn't in fact use an EM and
       scmi-cpufreq which doesn't use DT for power costs.
    
    For existing users of cpu_cooling, PM_EM tables will contain the exact
    same power values that IPA used to compute on its own until now. The
    only new dependency for them is to compile in CONFIG_ENERGY_MODEL.
    
    The case where the thermal subsystem is used without an Energy Model
    (cpufreq_cooling_ops) is handled by looking directly at CPUFreq's
    frequency table which is already a dependency for cpu_cooling.c anyway.
    Since the thermal framework expects the cooling states in a particular
    order, bail out whenever the CPUFreq table is unsorted, since that is
    fairly uncommon in general, and there are currently no users of
    cpu_cooling for this use-case.
    Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: default avatarQuentin Perret <qperret@google.com>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20191030151451.7961-5-qperret@google.com
    a4e893e8
cpu_cooling.c 19.3 KB