Bug 71931 - intel_pstate: cpufreq: __cpufreq_add_dev: ->get() failed
Summary: intel_pstate: cpufreq: __cpufreq_add_dev: ->get() failed
Status: CLOSED PATCH_ALREADY_AVAILABLE
Alias: None
Product: Power Management
Classification: Unclassified
Component: cpufreq (show other bugs)
Hardware: IA-32 Linux
: P1 normal
Assignee: cpufreq
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-03-11 20:41 UTC by Patrik Lundquist
Modified: 2014-03-17 03:18 UTC (History)
3 users (show)

See Also:
Kernel Version: 3.13.5
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
cpufreq: Skip current frequency initialization for ->setpolicy drivers (2.44 KB, patch)
2014-03-12 11:18 UTC, Rafael J. Wysocki
Details | Diff

Description Patrik Lundquist 2014-03-11 20:41:52 UTC
Booting 3.13.5 on a dual socket Ivy Bridge-EP resulted in this error:

[    0.194139] smpboot: CPU0: Intel(R) Xeon(R) CPU E5-2687W v2 @ 3.40GHz (fam: 06, model: 3e, stepping: 04)
...
[    0.246755] x86: Booting SMP configuration:
[    0.250935] .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7
[    0.357648] .... node  #1, CPUs:    #8  #9 #10 #11 #12 #13 #14 #15
[    0.553293] x86: Booted up 2 nodes, 16 CPUs
[    0.557666] smpboot: Total of 16 processors activated (108850.19 BogoMIPS)
...
[    5.210204] Intel P-state driver initializing.
[    5.232407] Intel pstate controlling: cpu 0
[    5.253628] Intel pstate controlling: cpu 1
[    5.274899] cpufreq: __cpufreq_add_dev: ->get() failed
[    5.294856] Intel pstate controlling: cpu 2
[    5.313553] Intel pstate controlling: cpu 3
[    5.332526] Intel pstate controlling: cpu 4
[    5.352347] Intel pstate controlling: cpu 5
[    5.372112] Intel pstate controlling: cpu 6
[    5.391097] Intel pstate controlling: cpu 7
[    5.410272] Intel pstate controlling: cpu 8
[    5.429092] Intel pstate controlling: cpu 9
[    5.447714] Intel pstate controlling: cpu 10
[    5.465872] Intel pstate controlling: cpu 11
[    5.482942] Intel pstate controlling: cpu 12
[    5.498414] Intel pstate controlling: cpu 13
[    5.513586] Intel pstate controlling: cpu 14
[    5.529200] Intel pstate controlling: cpu 15

CPU 1 is alive and well but missing the cpufreq driver. The system is running fine otherwise.

Looking closer at the problem gives that intel_pstate_init_cpu() is successful but intel_pstate_get(), which is called right after by cpufreq, fails.

Since all_cpu_data[1] is initialized it gives that sample->freq must be zero. So the bug should be in intel_pstate_calc_busy() which calculates sample->freq to zero.

core_pct is likely 0 due to truncation in intel_pstate.c:intel_pstate_calc_busy():

    core_pct = div64_u64(int_tofp(sample->aperf * 100),
                 sample->mperf);
Comment 1 Rafael J. Wysocki 2014-03-11 23:16:15 UTC
Patch: https://patchwork.kernel.org/patch/3814781/
Comment 2 Rafael J. Wysocki 2014-03-12 11:18:54 UTC
Created attachment 129151 [details]
cpufreq: Skip current frequency initialization for ->setpolicy drivers

Attached again with a changelog and stuff.  Please test!
Comment 3 Patrik Lundquist 2014-03-12 20:52:48 UTC
Patch tested on an Intel Xeon CPU E3-1240 V2 @ 3.40GHz (fam: 06, model: 3a, stepping: 09) which is also an Ivy Bridge.

The intel_pstate driver loads fine and cpufreq_driver->get() is no longer called when cpufreq adds the CPUs.
Comment 4 Lan Tianyu 2014-03-17 03:18:42 UTC
The patch has been merged into linux-pm tree.
http://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git/commit/?id=2ed99e39cb9392312c100d9da591c20641c64d12

Note You need to log in before you can comment on or make changes to this bug.