From: Wang Weidong <wangweidong1@huawei.com> To: <rjw@rjwysocki.net>, <viresh.kumar@linaro.org> Cc: <linux-pm@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, wangweidong <wangweidong1@huawei.com> Subject: [PATCH] cpufreq: get the cur_freq from acpi_processor_performance Date: Fri, 1 Aug 2014 17:52:41 +0800 [thread overview] Message-ID: <53DB6369.8070907@huawei.com> (raw) As the initialized freq_tables maybe different from the p-states values, so the array index is different as well. p-states value: [2400 2400 2000 ...], while the freq_tables: [2400 2000 ... CPUFREQ_TABLE_END]. After setted the freqs 2000, the perf->state is 3 while the freqs_table's index should be 2. So when call the get_cur_freq_on_cpu, the freqs value we get is 2400. So, fix the problem with the correct tables. Signed-off-by: Wang Weidong <wangweidong1@huawei.com> --- drivers/cpufreq/acpi-cpufreq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index b0c18ed..2b934cb 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c @@ -365,6 +365,7 @@ static u32 get_cur_val(const struct cpumask *mask) static unsigned int get_cur_freq_on_cpu(unsigned int cpu) { struct acpi_cpufreq_data *data = per_cpu(acfreq_data, cpu); + struct acpi_processor_performance *perf; unsigned int freq; unsigned int cached_freq; @@ -375,7 +376,8 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu) return 0; } - cached_freq = data->freq_table[data->acpi_data->state].frequency; + perf = data->acpi_data; + cached_freq = perf->states[perf->state].core_frequency * 1000; freq = extract_freq(get_cur_val(cpumask_of(cpu)), data); if (freq != cached_freq) { /* -- 1.7.12
WARNING: multiple messages have this Message-ID (diff)
From: Wang Weidong <wangweidong1@huawei.com> To: rjw@rjwysocki.net, viresh.kumar@linaro.org Cc: linux-pm@vger.kernel.org, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, wangweidong <wangweidong1@huawei.com> Subject: [PATCH] cpufreq: get the cur_freq from acpi_processor_performance Date: Fri, 1 Aug 2014 17:52:41 +0800 [thread overview] Message-ID: <53DB6369.8070907@huawei.com> (raw) As the initialized freq_tables maybe different from the p-states values, so the array index is different as well. p-states value: [2400 2400 2000 ...], while the freq_tables: [2400 2000 ... CPUFREQ_TABLE_END]. After setted the freqs 2000, the perf->state is 3 while the freqs_table's index should be 2. So when call the get_cur_freq_on_cpu, the freqs value we get is 2400. So, fix the problem with the correct tables. Signed-off-by: Wang Weidong <wangweidong1@huawei.com> --- drivers/cpufreq/acpi-cpufreq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index b0c18ed..2b934cb 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c @@ -365,6 +365,7 @@ static u32 get_cur_val(const struct cpumask *mask) static unsigned int get_cur_freq_on_cpu(unsigned int cpu) { struct acpi_cpufreq_data *data = per_cpu(acfreq_data, cpu); + struct acpi_processor_performance *perf; unsigned int freq; unsigned int cached_freq; @@ -375,7 +376,8 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu) return 0; } - cached_freq = data->freq_table[data->acpi_data->state].frequency; + perf = data->acpi_data; + cached_freq = perf->states[perf->state].core_frequency * 1000; freq = extract_freq(get_cur_val(cpumask_of(cpu)), data); if (freq != cached_freq) { /* -- 1.7.12
next reply other threads:[~2014-08-01 9:53 UTC|newest] Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-01 9:52 Wang Weidong [this message] 2014-08-01 9:52 ` [PATCH] cpufreq: get the cur_freq from acpi_processor_performance Wang Weidong
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=53DB6369.8070907@huawei.com \ --to=wangweidong1@huawei.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=rjw@rjwysocki.net \ --cc=viresh.kumar@linaro.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.