android_kernel_motorola_sm6225/arch
Anton Blanchard ad5d1c888e powerpc: Fix accounting of softirq time when idle
commit cf9efce0ce (powerpc: Account time using timebase rather
than PURR) used in_irq() to detect if the time was spent in
interrupt processing. This only catches hardirq context so if we
are in softirq context and in the idle loop we end up accounting it
as idle time. If we instead use in_interrupt() we catch both softirq
and hardirq time.

The issue was found when running a network intensive workload. top
showed the following:

0.0%us,  1.1%sy,  0.0%ni, 85.7%id,  0.0%wa,  9.9%hi,  3.3%si,  0.0%st

85.7% idle. But this was wildly different to the perf events data.
To confirm the suspicion I ran something to keep the core busy:

# yes > /dev/null &

8.2%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa, 10.3%hi, 81.4%si,  0.0%st

We only got 8.2% of the CPU for the userspace task and softirq has
shot up to 81.4%.

With the patch below top shows the correct stats:

0.0%us,  0.0%sy,  0.0%ni,  5.3%id,  0.0%wa, 13.3%hi, 81.3%si,  0.0%st

Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-03-30 10:44:18 +11:00
..
alpha alpha: Use generic show_interrupts() 2011-03-29 14:47:58 +02:00
arm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-03-29 12:09:30 -07:00
avr32 Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
blackfin bfin: Use proper accessors in trace 2011-03-29 14:47:59 +02:00
cris Merge branch 'for-linus' of git://www.jni.nu/cris 2011-03-28 15:44:06 -07:00
frv FRV: Use generic show_interrupts() 2011-03-29 14:05:13 +01:00
h8300 Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
ia64 ia64: Remove redundant declaration of irq_desc[] 2011-03-29 14:48:05 +02:00
m32r Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
m68k m68k: Convert irq function namespace 2011-03-29 14:48:15 +02:00
microblaze microblaze: Use generic show_interrupts() 2011-03-29 14:48:06 +02:00
mips mips: vr41xx: Use irdq_irq_disabled() 2011-03-29 14:48:07 +02:00
mn10300 mn10300: Use generic show_interrupts() 2011-03-29 14:48:19 +02:00
parisc parisc: Use irq_to_desc() in show_interrupts() 2011-03-29 14:48:08 +02:00
powerpc powerpc: Fix accounting of softirq time when idle 2011-03-30 10:44:18 +11:00
s390 Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6 2011-03-25 17:47:04 -07:00
score score: Use generic show_interrupts() 2011-03-28 12:03:35 +08:00
sh Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc 2011-03-29 12:09:30 -07:00
sparc sparc: Use generic show_interrupts() 2011-03-29 14:48:14 +02:00
tile Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-27 20:58:56 -07:00
um um: Use generic show_interrupts() 2011-03-24 20:35:57 +01:00
unicore32 unicore32: Use generic show_interrupts() 2011-03-29 14:48:15 +02:00
x86 Merge branch 'stable/bug-fixes-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen 2011-03-29 11:36:52 -07:00
xtensa Merge branch 'irq-cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2011-03-25 20:24:05 -07:00
.gitignore
Kconfig oprofile, s390: Cleanups 2011-03-16 14:30:40 +01:00