On Thu, Jan 17, 2019 at 11:08 AM Rafael J. Wysocki <rafael@xxxxxxxxxx> wrote: > > On Thu, Jan 17, 2019 at 6:49 AM Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote: > > > > On 14-01-19, 22:04, Amit Kucheria wrote: > > > Add a flag to be used by cpufreq drivers to tell cpufreq core to > > > auto-register themselves as a thermal cooling device. > > > > > > There series converts over all the drivers except arm_big_little.c. > > > Tested on SDM845 with the qcom-cpufreq-hw driver. Only compile-tested the > > > others. > > > > > > Things needing fixing: > > > - Look at how to detect that we're not in IKS mode in arm_big_little's > > > .ready callback. > > > > is_bL_switching_enabled() lets you know if IKS is enabled or not. > > Set/clear flag conditionally before the cpufreq-driver is registered, > > based on the output of is_bL_switching_enabled(). > > > > > - The other pending issue is to fix allmodconfig that leaves us with > > > CPU_FREQ=y and THERMAL=m (CPU_THERMAL=y). That leads to undefined > > > references for functions defined in cpu_cooling.c > > > > Okay, that's a terrible thing and the solution looks to be rather > > difficult. > > > > For others who may not be aware of the issue here, currently the > > cpufreq drivers use helpers of cpu_cooling.c (CONFIG_CPU_THERMAL), > > which uses helpers of the thermal core (CONFIG_THERMAL). > > CONFIG_THERMAL is defined as tristate and CONFIG_CPU_THERMAL as bool > > in Kconfigs. > > And CONFIG_CPU_THERMAL is defined under "if THERMAL". > > > The cpufreq drivers using the cpu_cooling.c file have this in their > > Kconfig entry: > > > > # if CPU_THERMAL is on and THERMAL=m, ARM_BIT_LITTLE_CPUFREQ cannot be =y > > # depends on !CPU_THERMAL || THERMAL > > > > > > This series now places the cpufreq core in place of the cpufreq driver > > and it messes up everything. It is not just about allmodconfig, but > > any configuration which makes the compilation fail. > > > > What are the solutions we have now ? > > > > 1. Have following for CONFIG_CPU_FREQ > > depends on !CPU_THERMAL || THERMAL > > Sorry, but this makes my teeth hurt. > > > The platforms which don't need CPU_THERMAL (like x86) should not > > enable CPU_THERMAL anymore if they want CONFIG_THERMAL=m. > > > > @amit: If this gets accepted, please update the Kconfig entries for > > all those drivers to not have above lines anymore. > > > > - Change CONFIG_THERMAL to bool instead of tristate ? > > > > - Anything else ? > > The design in the thermal subsystem seems to be upside-down. > Non-modular code should never be made depend on anything only defined > in a module. > > Would an explicit "select THERMAL" under CPU_THERMAL cause THERMAL to be 'y'? Alternatively, "depends on THERMAL=y" under CPU_THERMAL should work too, shouldn't it? "!CPU_THERMAL || THERMAL" would be always true then, AFAICS.