Thread (18 messages) read the whole thread 18 messages, 2 authors, 2020-02-17

RE: [EXT] Re: Ask for help about cpufreq issue

From: Andy Tang <hidden>
Date: 2020-02-11 04:20:19

Hi Viresh,

I checked the clk part, no issue was found.
I did found a odd thing in cpufreq directory.

# cat scaling_available_frequencies
1600000 1000000 800000 500000
# cat scaling_max_freq
500000

Why there is a 1600Mhz frequency available, but the max freq is only 500M?
How the max freq is set?

Thanks,
Andy
-----Original Message-----
From: Viresh Kumar <viresh.kumar@linaro.org>
Sent: 2020年2月7日 15:06
To: Andy Tang <redacted>
Cc: rjw@rjwysocki.net; linux-pm@vger.kernel.org
Subject: Re: [EXT] Re: Ask for help about cpufreq issue

Caution: EXT Email

On 07-02-20, 06:03, Andy Tang wrote:
quoted
Hi Viresh,

I have tried performance governor, cpu frequency is at the lowest
frequency.
quoted
I also tried ondemand governor with high cpu load, cpu frequency doesn't
increase too.
quoted
root@localhost:~# cat
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
root@localhost:~# cat
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1600000 1000000 800000 500000
root@localhost:~#
root@localhost:~# cat
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
500000

root@localhost:~# cat /sys/devices/system/cpu/cpufreq/policy0/stats/*
cat: /sys/devices/system/cpu/cpufreq/policy0/stats/reset: Permission
denied
1600000 214
1000000 91
800000 82
500000 480088
240
   From  :    To
         :   1600000   1000000    800000    500000
  1600000:         0        15        10        10
  1000000:        21         0        22        18
   800000:         6        23         0        44
   500000:         7        23        41         0
See, frequencies are getting changed according to this table (at least from
cpufreq's point of view), which means that cpufreq transitions are passing
just fine.

I just had a look at the driver and may have some idea on what's going on.
The cpufreq driver doesn't program the frequencies, but instead it just
switches the parent clk for changing the frequency. And when you try to read
the frequency, all we do is read the frequency from the clk pointer using
clk_get_rate().

So, here are the things which can go wrong, in order of how I would like to
debug them.

- The frequency of all parent clocks is set to 500 MHz by someone and
  so clk_get_rate() always report that despite changes to the stats
  table.

- clk_set_parent() isn't setting the parent correctly.

Try putting some print messages to the driver to see if target_index() routine
is able to set the parent clk properly or not.

--
viresh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help