diff mbox

[v12,0/6] cpufreq: use generic cpufreq drivers for exynos platforms

Message ID 7hioi4l92v.fsf@deeprootsystems.com (mailing list archive)
State New, archived
Headers show

Commit Message

Kevin Hilman Nov. 24, 2014, 6:58 p.m. UTC
Hi Thomas,

Thomas Abraham <thomas.ab@samsung.com> writes:

> Changes since v11:
> - Rebased on top of git://linuxtv.org/snawrocki/samsung.git for-v3.19-exynos-clk

Thanks for rebasing/reposting.

> This patch series removes the use of Exynos4210 and Exynos5250 specific cpufreq
> drivers and enables the use of cpufreq-dt driver for these platforms. This
> series also enables cpufreq support for Exynos5420 using arm_big_little cpufreq
> driver.
>
> This series is based on the following branch.
> git://linuxtv.org/snawrocki/samsung.git for-v3.19-exynos-clk
>
> This series depends on the following patch which can be picked from
> git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git samsung/dt
> e540920cf21c (ARM: dts: add CPU nodes for Exynos4 SoCs).
>
> This patch series has been tested on Exynos4210/5250/5420 based boards.
> Tomasz Figa had plans to take this in the Samsung clock tree for v3.19
> (http://www.spinics.net/lists/linux-samsung-soc/msg37933.html).
> Sylwester, could you consider to merge this in your tree?

I tested this on exynos5800-peach-pi, and noticed a few things.

First, since voltage scaling is not currently supported, the CPU cluster
regulators (vdd_arm, and vdd_kfc) have to be set at sufficietnly high
voltage to support all the OPPs, otherwise things will likely hang.  I
think you should include something like the patch below[1] in this
series as well.

Second, as with earlier versions of this series, I'm still seeing lots
of "wait_until_divider_stable: timeout in divider stablization" messages
coming out when running powertop.

Speaking of powertop, in the "frequency stats" tab, I'm not seeing 0%
time spent in all the P-states, so not sure what's going on there.  The
stats/time_in_state sysfs files under cpufreq seem to show the right
values, so I'm not sure what's going on with powertop there.

Kevin

[1]



> Thomas Abraham (6):
>   clk: samsung: add infrastructure to register cpu clocks
>   clk: samsung: add cpu clock configuration data and instantiate cpu clock
>   ARM: dts: Exynos: add CPU OPP and regulator supply property
>   ARM: Exynos: switch to using generic cpufreq driver for Exynos4210/5250/5420
>   cpufreq: exynos: remove exynos4210/5250 specific cpufreq driver support
>   clk: samsung: remove unused clock aliases and update clock flags
>
>  arch/arm/boot/dts/exynos4210-origen.dts         |    4 +
>  arch/arm/boot/dts/exynos4210-trats.dts          |    4 +
>  arch/arm/boot/dts/exynos4210-universal_c210.dts |    4 +
>  arch/arm/boot/dts/exynos4210.dtsi               |   14 ++-
>  arch/arm/boot/dts/exynos5250-arndale.dts        |    4 +
>  arch/arm/boot/dts/exynos5250-smdk5250.dts       |    4 +
>  arch/arm/boot/dts/exynos5250-snow.dts           |    4 +
>  arch/arm/boot/dts/exynos5250.dtsi               |   25 +++-
>  arch/arm/boot/dts/exynos5420.dtsi               |   38 ++++
>  arch/arm/mach-exynos/exynos.c                   |   26 +++-
>  drivers/clk/samsung/Makefile                    |    2 +-
>  drivers/clk/samsung/clk-exynos4.c               |   63 +++++---
>  drivers/clk/samsung/clk-exynos5250.c            |   44 ++++-
>  drivers/clk/samsung/clk-exynos5420.c            |   72 +++++++-
>  drivers/cpufreq/Kconfig.arm                     |   22 ---
>  drivers/cpufreq/Makefile                        |    2 -
>  drivers/cpufreq/exynos4210-cpufreq.c            |  184 --------------------
>  drivers/cpufreq/exynos5250-cpufreq.c            |  210 -----------------------
>  include/dt-bindings/clock/exynos5250.h          |    1 +
>  include/dt-bindings/clock/exynos5420.h          |    2 +
>  20 files changed, 266 insertions(+), 463 deletions(-)
>  delete mode 100644 drivers/cpufreq/exynos4210-cpufreq.c
>  delete mode 100644 drivers/cpufreq/exynos5250-cpufreq.c
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Kevin Hilman Nov. 25, 2014, 7:57 p.m. UTC | #1
Hi Thomas,

On Mon, Nov 24, 2014 at 10:58 AM, Kevin Hilman <khilman@kernel.org> wrote:

[...]

> Second, as with earlier versions of this series, I'm still seeing lots
> of "wait_until_divider_stable: timeout in divider stablization" messages
> coming out when running powertop.

I found a simpler way to reproduce these messages.  If I simply use
the userspace governor and cycle through all the A7 OPPs, I'll hit
this message (script below[1]).  Note that I'm also using my DTS
change that fixes the vdd_arm and vdd_kfc voltages to a voltage that
is high enough for all the OPPs.

Kevin

[1]
#!/bin/sh
cpu=cpu4
reg_name=vdd_kfc
cpu_reg=$(dirname `find /sys/class/regulator/regulator.*/ -name name
-exec grep -l $reg_name {} \;`)
echo $cpu_reg

# Cycle through frequencies (and check voltage)
cd /sys/devices/system/cpu/$cpu/cpufreq
echo userspace > scaling_governor
for freq in `cat scaling_available_frequencies`; do
  echo ${freq} > scaling_setspeed
  echo -n "current freq: "
  cat scaling_cur_freq
  echo -n "current voltage: "
  cat ${cpu_reg}/microvolts
  sleep 1
done
Kevin Hilman Nov. 26, 2014, 6:27 p.m. UTC | #2
Kevin Hilman <khilman@kernel.org> writes:

> Hi Thomas,
>
> Thomas Abraham <thomas.ab@samsung.com> writes:
>
>> Changes since v11:
>> - Rebased on top of git://linuxtv.org/snawrocki/samsung.git for-v3.19-exynos-clk
>
> Thanks for rebasing/reposting.
>
>> This patch series removes the use of Exynos4210 and Exynos5250 specific cpufreq
>> drivers and enables the use of cpufreq-dt driver for these platforms. This
>> series also enables cpufreq support for Exynos5420 using arm_big_little cpufreq
>> driver.
>>
>> This series is based on the following branch.
>> git://linuxtv.org/snawrocki/samsung.git for-v3.19-exynos-clk
>>
>> This series depends on the following patch which can be picked from
>> git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git samsung/dt
>> e540920cf21c (ARM: dts: add CPU nodes for Exynos4 SoCs).
>>
>> This patch series has been tested on Exynos4210/5250/5420 based boards.
>> Tomasz Figa had plans to take this in the Samsung clock tree for v3.19
>> (http://www.spinics.net/lists/linux-samsung-soc/msg37933.html).
>> Sylwester, could you consider to merge this in your tree?
>
> I tested this on exynos5800-peach-pi, and noticed a few things.
>
> First, since voltage scaling is not currently supported, the CPU cluster
> regulators (vdd_arm, and vdd_kfc) have to be set at sufficietnly high
> voltage to support all the OPPs, otherwise things will likely hang.  I
> think you should include something like the patch below[1] in this
> series as well.
>
> Second, as with earlier versions of this series, I'm still seeing lots
> of "wait_until_divider_stable: timeout in divider stablization" messages
> coming out when running powertop.

And, I just found another issue:

On exynos5800-peach-pi, setting the cpufreq default governor to
performance at compile time (CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y)
makes the kernel boot hang when the cpufreq driver is initialized.

However, setting the compile-time default to the userspace governor, and
then setting the performance governor via sysfs after the boot finishes
seems to work fine.

Kevin
diff mbox

Patch

diff --git a/arch/arm/boot/dts/exynos5800-peach-pi.dts
b/arch/arm/boot/dts/exynos5800-peach-pi.dts
index e8fdda827fc9..5160735aad3b 100644
--- a/arch/arm/boot/dts/exynos5800-peach-pi.dts
+++ b/arch/arm/boot/dts/exynos5800-peach-pi.dts
@@ -195,8 +195,8 @@ 

                        buck2_reg: BUCK2 {
                                regulator-name = "vdd_arm";
-                               regulator-min-microvolt = <800000>;
-                               regulator-max-microvolt = <1500000>;
+                               regulator-min-microvolt = <1250000>;
+                               regulator-max-microvolt = <1250000>;
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-ramp-delay = <12500>;
@@ -230,8 +230,8 @@ 

                        buck6_reg: BUCK6 {
                                regulator-name = "vdd_kfc";
-                               regulator-min-microvolt = <800000>;
-                               regulator-max-microvolt = <1500000>;
+                               regulator-min-microvolt = <1275000>;
+                               regulator-max-microvolt = <1275000>;
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-ramp-delay = <12500>;