powerpc/perf_counters: Reduce stack usage of power_check_constraints
authorPaul Mackerras <paulus@samba.org>
Wed, 9 Sep 2009 20:28:49 +0000 (20:28 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 11 Sep 2009 01:27:59 +0000 (11:27 +1000)
commite51ee31e8af22948dcc3b115978469b09c96c3fd
tree92ca44af0d69da2f434d199c425650d933f25474
parenta6dbf93a2ad853585409e715eb96dca9177e3c39
powerpc/perf_counters: Reduce stack usage of power_check_constraints

Michael Ellerman reported stack-frame size warnings being produced
for power_check_constraints(), which uses an 8*8 array of u64 and
two 8*8 arrays of unsigned long, which are currently allocated on the
stack, along with some other smaller variables.  These arrays come
to 1.5kB on 64-bit or 1kB on 32-bit, which is a bit too much for the
stack.

This fixes the problem by putting these arrays in the existing
per-cpu cpu_hw_counters struct.  This is OK because two of the call
sites have interrupts disabled already; for the third call site we
use get_cpu_var, which disables preemption, so we know we won't
get a context switch while we're in power_check_constraints().
Note that power_check_constraints() can be called during context
switch but is not called from interrupts.

Reported-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Cc: <stable@kernel.org)
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/perf_counter.c