Hello,

I tested powertop on Samsung Arndale Board with Ubuntu Saucy Server 14.01 with custom kernel (config file attached, powertop config options enabled), and reported a bug 1316096. Also, I found the other bug 1316096 happening on arndale board. 

In short, bug 1316096 - Powertop displays "nan" on top [summary] where it should show legal value.
                                         Summary: nan wakeups/second, nan GPU ops/seconds, nan VFS ops/sec and -0.0% CPU use <--- displays "nan" instead of valid value

       bug 1316096 - Idle stats & Frequency stats pages are empty.

I did some debugging and it seems that the root cause of both the bugs may be same. It looks like the parsing code enumerate_cpus()[src/cpu/cpu.cpp] called from main.cpp, is expecting /proc/cpuinfo file in a particular format which works on Intel but not on ARM. 

On Intel, it gets the file in the format expected. However, on ARM on Arndale board with saucy server, the file looks as below - 

processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc0f
CPU revision    : 4

processor       : 1
model name      : ARMv7 Processor rev 4 (v7l)
Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc0f
CPU revision    : 4

Hardware        : SAMSUNG EXYNOS5 (Flattened Device Tree)
Revision        : 0000
Serial          : 0000000000000000

The parsing code which gathers information about cpus, fails to parse this file and as a result the vector "all_cpus" remains empty. 

I played with it a bit more and added a few lines to get a work around as follows - 

in function enumarate_cpus():

 if (strncmp(line, "processor\t",10) == 0) {
                         char *c;
                         c = strchr(line, ':');
                        if (c) {
                                 c++;
                                 number = strtoull(c, NULL, 10);
                                 handle_one_cpu(number, "Samsung", 0, 0); [ line added]
                                 set_max_cpu(number); [ line added]
                         }
               }

With this changes, idle stat and frequency pages were populated and summary was shown properly as noted below - 

Summary: 392.6 wakeups/second,  0.0 GPU ops/seconds, 0.0 VFS ops/sec and 4.0% CPU use

I think due to this bug, the information shown on summary page was also not correct and some other info displayed by powertop may be incorrect too.

Please comment.

--
Thanks,
-Meraj