Intel Atom N2600 / N2800 CPUs are still categorically considered Intel CPUs even if the on-die GPU is not designed in-house (Imagination Technologies PowerVR SGX).
So can somebody tell me why in the following cases-in-point, it seems that support for these specific Atom CPUs are (intentionally left?) missing from source code?
CASE 1: Missing C-states
The generic ACPI processor driver (acpi_cpuidle) from Linux-3.9.8 does not expose C-states for this CPU to the OS, nor does intel_idle v0.4:
Powertop-2.1 shows empty idle states.
Here's an excerpt from drivers/idle/intel_idle.c where it shows the CPUs it runs on:
I have a family 6 model 28 (0x1c from the code above) Intel Atom N280 CPU and its C-states are exposed by intel_idle. So why is a family 6 model 54 (0x36) Intel Atom N2800 missing support from intel_idle? Intel Atom Processor D2000 and N2000 series datasheet [1] shows that this processor supports C-states:
[1] https://www-ssl.intel.com/content/ww...datasheet.html
Patching intel_idle.c like so:
then recompiling the kernel, intel_idle now reports:
And Powertop-2.1 now reports idle states (POLL, C1E-ATM, C2-ATM, C4-ATM, C6-ATM).
CASE 2: Intel PowerClamp does not support this CPU
And I found out why
From the module's aliases above we can see that it supports my family 6 model 28 (001C) Intel Atom N280 CPU, but is missing support for my family 6 model 54 (0036) Intel Atom N2800.
Considering the above presentations I have made, I am under the impression that these particular Atom CPUs, being unfortunately the odd-man out among Intel's great FOSS-supported CPU line-up, are being singled-out from support by Intel OTC.
It's already a rough road getting decent graphics performance from these Atoms, but seeing some CPU-specific, not to mention the important C-state, support missing for these models I am more inclined to think that support is cursed for this product, at least from a GNU/Linux point-of-view. Intel really dropped the ball on this one.
Can somebody from Intel start adding CPU support where it's missing for these particular Atom CPUs, please?
Code:
$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 54 model name : Intel(R) Atom(TM) CPU N2800 @ 1.86GHz stepping : 1 microcode : 0x10c cpu MHz : 1862.000 cache size : 512 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fdiv_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon pebs bts nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 xtpr pdcm movbe lahf_lm arat dtherm bogomips : 3723.94 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 32 bits virtual power management:
CASE 1: Missing C-states
The generic ACPI processor driver (acpi_cpuidle) from Linux-3.9.8 does not expose C-states for this CPU to the OS, nor does intel_idle v0.4:
Code:
$ dmesg | grep idle intel_idle: does not run on family 6 model 54 cpuidle: using governor ladder cpuidle: using governor menu
Here's an excerpt from drivers/idle/intel_idle.c where it shows the CPUs it runs on:
Code:
static const struct x86_cpu_id intel_idle_ids[] = { ICPU(0x1a, idle_cpu_nehalem), ICPU(0x1e, idle_cpu_nehalem), ICPU(0x1f, idle_cpu_nehalem), ICPU(0x25, idle_cpu_nehalem), ICPU(0x2c, idle_cpu_nehalem), ICPU(0x2e, idle_cpu_nehalem), ICPU(0x1c, idle_cpu_atom), ICPU(0x26, idle_cpu_lincroft), ICPU(0x2f, idle_cpu_nehalem), ICPU(0x2a, idle_cpu_snb), ICPU(0x2d, idle_cpu_snb), ICPU(0x3a, idle_cpu_ivb), ICPU(0x3e, idle_cpu_ivb), ICPU(0x3c, idle_cpu_hsw), ICPU(0x3f, idle_cpu_hsw), ICPU(0x45, idle_cpu_hsw), ICPU(0x46, idle_cpu_hsw), {} };
Support CPU states: C0 and C1 (for D2000 series); C0-C4, C1E-C4E, Deep Power
Down Technology (code named C6)(for N2000 series)
Down Technology (code named C6)(for N2000 series)
Patching intel_idle.c like so:
Code:
--- linux-3.9/drivers/idle/intel_idle.c.orig 2013-06-28 09:52:26.270075222 +0800 +++ linux-3.9/drivers/idle/intel_idle.c 2013-06-28 09:52:09.478076218 +0800 @@ -456,6 +456,7 @@ ICPU(0x2c, idle_cpu_nehalem), ICPU(0x2e, idle_cpu_nehalem), ICPU(0x1c, idle_cpu_atom), + ICPU(0x36, idle_cpu_atom), ICPU(0x26, idle_cpu_lincroft), ICPU(0x2f, idle_cpu_nehalem), ICPU(0x2a, idle_cpu_snb),
Code:
$ dmesg | grep idle intel_idle: MWAIT substates: 0x3020220 intel_idle: v0.4 model 0x36 intel_idle: lapic_timer_reliable_states 0xffffffff cpuidle: using governor ladder cpuidle: using governor menu
CASE 2: Intel PowerClamp does not support this CPU
Code:
# modprobe intel_powerclamp FATAL: Error inserting intel_powerclamp (lib/modules/3.9.8/kernel/drivers/thermal/intel_powerclamp.ko): No such device
Code:
# modinfo intel_powerclamp filename: /lib/modules/3.9.8/kernel/drivers/thermal/intel_powerclamp.ko description: Package Level C-state Idle Injection for Intel CPUs author: Jacob Pan <[email protected]> author: Arjan van de Ven <[email protected]> license: GPL srcversion: 4FEB61B99F664447271957F alias: x86cpu:vendor:0000:family:0006:model:003A:feature:* alias: x86cpu:vendor:0000:family:0006:model:002F:feature:* alias: x86cpu:vendor:0000:family:0006:model:002E:feature:* alias: x86cpu:vendor:0000:family:0006:model:002D:feature:* alias: x86cpu:vendor:0000:family:0006:model:002C:feature:* alias: x86cpu:vendor:0000:family:0006:model:002A:feature:* alias: x86cpu:vendor:0000:family:0006:model:0026:feature:* alias: x86cpu:vendor:0000:family:0006:model:0025:feature:* alias: x86cpu:vendor:0000:family:0006:model:001F:feature:* alias: x86cpu:vendor:0000:family:0006:model:001E:feature:* alias: x86cpu:vendor:0000:family:0006:model:001C:feature:* alias: x86cpu:vendor:0000:family:0006:model:001A:feature:* depends: intree: Y vermagic: 3.9.8 SMP preempt mod_unload modversions ATOM parm: duration:forced idle time for each attempt in msec. parm: window_size:sliding window in number of clamping cycles powerclamp controls idle ratio within this window. larger window size results in slower response time but more smooth clamping results. default to 2.
Considering the above presentations I have made, I am under the impression that these particular Atom CPUs, being unfortunately the odd-man out among Intel's great FOSS-supported CPU line-up, are being singled-out from support by Intel OTC.
It's already a rough road getting decent graphics performance from these Atoms, but seeing some CPU-specific, not to mention the important C-state, support missing for these models I am more inclined to think that support is cursed for this product, at least from a GNU/Linux point-of-view. Intel really dropped the ball on this one.
Can somebody from Intel start adding CPU support where it's missing for these particular Atom CPUs, please?
Comment