linux/arch/powerpc/kernel
Paul Mackerras e51ee31e8a 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>
2009-09-11 11:27:59 +10:00
..
vdso32 powerpc: Enable GCOV 2009-08-20 10:29:28 +10:00
vdso64 powerpc: Enable GCOV 2009-08-20 10:29:28 +10:00
.gitignore powerpc: Ignore generated vmlinux.lds in git 2008-10-07 14:26:18 +11:00
Makefile powerpc/pci: move pci_64.c device tree scanning code into pci-common.c 2009-08-28 14:24:15 +10:00
align.c powerpc: Keep track of emulated instructions 2009-05-21 15:44:26 +10:00
asm-offsets.c Merge commit 'paulus-perf/master' into next 2009-08-20 11:07:56 +10:00
audit.c
btext.c powerpc: Use the common ascii hex helpers 2008-08-20 16:34:57 +10:00
cacheinfo.c powerpc/cacheinfo: Rename cache_dir per-cpu variable 2009-01-13 14:48:02 +11:00
cacheinfo.h powerpc: Rewrite sysfs processor cache info code 2009-01-08 16:25:10 +11:00
clock.c
compat_audit.c
cpu_setup_6xx.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
cpu_setup_44x.S AMCC PPC 460SX redwood SoC platform initial framework 2009-02-14 14:41:29 -05:00
cpu_setup_fsl_booke.S powerpc/fsl-booke: Enable L1 cache on e500v1/e500v2/e500mc CPUs 2009-06-15 21:45:30 -05:00
cpu_setup_pa6t.S
cpu_setup_ppc970.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
cputable.c powerpc/book3e-64: Move the default cpu table entry 2009-08-28 14:24:13 +10:00
crash.c powerpc: Increase CRASH_HANDLER_MAX 2008-06-30 22:31:00 +10:00
crash_dump.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
dbell.c powerpc: Add support for using doorbells for SMP IPI 2009-02-23 15:53:03 +11:00
dma-iommu.c powerpc: use dma_map_ops struct 2009-08-28 14:24:10 +10:00
dma-swiotlb.c powerpc: Handle SWIOTLB mapping error properly 2009-08-28 14:24:11 +10:00
dma.c powerpc: Add CONFIG_DMA_API_DEBUG support 2009-08-28 14:24:11 +10:00
entry_32.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
entry_64.S powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
exceptions-64e.S powerpc/book3e-64: Add support to initial_tlb_book3e for non-HES TLB 2009-08-28 14:24:14 +10:00
exceptions-64s.S Merge commit 'paulus-perf/master' into next 2009-08-20 11:07:56 +10:00
firmware.c
fpu.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
ftrace.c Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-20 10:56:46 -07:00
head_8xx.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_32.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_40x.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_44x.S powerpc/mm: Cleanup handling of execute permission 2009-08-27 13:12:51 +10:00
head_64.S powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
head_booke.h powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
head_fsl_booke.S powerpc/fsl-booke: Use HW PTE format if CONFIG_PTE_64BIT 2009-09-02 16:20:41 +10:00
ibmebus.c powerpc: use dma_map_ops struct 2009-08-28 14:24:10 +10:00
idle.c powerpc: ftrace, do not latency trace idle 2008-11-20 10:51:15 -08:00
idle_6xx.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_e500.S powerpc: Fix for getting CPU number in power_save_ppc32_restore() 2008-09-03 20:53:47 +10:00
idle_power4.S
init_task.c mm: consolidate init_mm definition 2009-06-16 19:47:28 -07:00
io.c ftrace: support for PowerPC 2008-05-23 22:43:11 +02:00
iomap.c
iommu.c powerpc: Change u64/s64 to a long long integer type 2009-01-13 14:47:59 +11:00
irq.c Merge commit 'origin/master' into next 2009-06-12 16:53:38 +10:00
isa-bridge.c [POWERPC] Remove leftover printk in isa-bridge.c 2008-05-09 20:22:59 +10:00
kgdb.c kgdb, x86, arm, mips, powerpc: ignore user space single stepping 2008-09-26 10:36:41 -05:00
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
l2cr_6xx.S Convert files to UTF-8 and some cleanups 2007-10-19 23:21:04 +02:00
legacy_serial.c powerpc/powermac: Fixup default serial port device for pmac_zilog 2008-07-28 16:30:53 +10:00
lparcfg.c powerpc/pseries: Fix to handle slb resize across migration 2009-09-02 16:19:01 +10:00
machine_kexec.c powerpc: Allow mem=x cmdline to work with 4G+ 2009-05-15 16:43:41 +10:00
machine_kexec_32.c kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
machine_kexec_64.c powerpc/32: Setup OF properties for kdump 2008-12-23 15:13:29 +11:00
misc.S powerpc: Use LOAD_REG_IMMEDIATE only for constants on 64-bit 2008-09-15 11:08:35 -07:00
misc_32.S powerpc: Fix __flush_icache_range on 44x 2009-08-27 13:12:52 +10:00
misc_64.S powerpc: Move VMX and VSX asm code to vector.S 2009-06-09 16:46:25 +10:00
module.c module: cleanup FIXME comments about trimming exception table entries. 2009-06-12 21:47:05 +09:30
module_32.c powerpc/ppc32: ftrace, dynamic ftrace to handle modules 2008-11-20 10:52:53 -08:00
module_64.c powerpc: Unify opcode definitions and support 2009-02-23 10:48:56 +11:00
mpc7450-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
msi.c powerpc/PCI: include pci.h in powerpc MSI implementation 2009-03-25 08:54:29 -07:00
nvram_64.c
of_device.c powerpc/of: Fix usage of dev_set_name() in of_device_alloc() 2009-06-26 16:55:35 +10:00
of_platform.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() 2009-09-02 15:45:53 +10:00
paca.c powerpc: Add PACA fields specific to 64-bit Book3E processors 2009-08-20 10:25:08 +10:00
pci-common.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() 2009-09-02 15:45:53 +10:00
pci_32.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() 2009-09-02 15:45:53 +10:00
pci_64.c powerpc/pci: Merge ppc32 and ppc64 versions of phb_scan() 2009-09-02 15:45:53 +10:00
pci_dn.c powerpc/pci: Move pseries code into pseries platform specific area 2009-05-21 15:44:24 +10:00
pci_of_scan.c powerpc/pci: move pci_64.c device tree scanning code into pci-common.c 2009-08-28 14:24:15 +10:00
perf_callchain.c perf_counter: powerpc: Add callchain support 2009-08-18 14:48:47 +10:00
perf_counter.c powerpc/perf_counters: Reduce stack usage of power_check_constraints 2009-09-11 11:27:59 +10:00
pmc.c [POWERPC] Made FSL Book-E PMC support more generic 2008-02-05 23:34:14 -06:00
power4-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5+-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power5-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power6-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
power7-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc32.h powerpc: Add VSX context save/restore, ptrace and signal support 2008-07-01 11:28:50 +10:00
ppc970-pmu.c perf_counter/powerpc: Check oprofile_cpu_type for NULL before using it 2009-08-06 13:55:09 +02:00
ppc_ksyms.c powerpc: Export cacheable_memzero as its now used in a driver 2009-01-08 16:25:17 +11:00
ppc_save_regs.S powerpc: Prepare xmon_save_regs for use with kdump 2008-12-23 15:13:28 +11:00
proc_ppc64.c powerpc: use non-racy method for proc entries creation 2008-04-29 08:06:22 -07:00
process.c powerpc: Clean ifdef usage in copy_thread() 2009-08-20 10:12:43 +10:00
prom.c powerpc: Shield code specific to 64-bit server processors 2009-06-09 16:47:38 +10:00
prom_init.c powerpc/prom_init: Evaluate mem kernel parameter for early allocation 2009-08-20 10:29:25 +10:00
prom_init_check.sh powerpc: Print linux_banner in prom_init 2009-03-11 17:11:33 +11:00
prom_parse.c powerpc: Fix of_node_put() exit path in of_irq_map_one() 2009-04-20 12:18:43 -06:00
ptrace.c powerpc: Fix booke user_disable_single_step() 2009-07-15 17:41:45 +10:00
ptrace32.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
reloc_64.S powerpc: Make the 64-bit kernel as a position-independent executable 2008-09-15 11:08:38 -07:00
rtas-proc.c [POWERPC] Fix sparse warnings in arch/powerpc/kernel 2008-05-14 22:31:59 +10:00
rtas-rtc.c
rtas.c powerpc/pseries: Fix to handle slb resize across migration 2009-09-02 16:19:01 +10:00
rtas_flash.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
rtas_pci.c powerpc/pci: Clean up direct access to sysdata by RTAS 2009-05-21 15:44:23 +10:00
setup-common.c powerpc: Remove duplicated #include's 2009-04-07 15:18:58 +10:00
setup.h
setup_32.c powerpc: Add irqtrace support for 32-bit powerpc 2009-06-26 14:37:27 +10:00
setup_64.c powerpc: Remaining 64-bit Book3E support 2009-08-20 10:25:11 +10:00
signal.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal.h powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal_32.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
signal_64.c powerpc: Sanitize stack pointer in signal handling code 2009-03-27 16:58:24 +11:00
smp-tbsync.c powerpc: Silence software timebase sync 2008-11-05 22:08:28 +11:00
smp.c powerpc/85xx: Fix SMP compile error and allow NULL for smp_ops 2009-09-11 11:27:57 +10:00
softemu8xx.c Remove asm/a.out.h files for all architectures without a.out support. 2008-09-06 19:30:24 +01:00
stacktrace.c powerpc: Removed duplicated include in stacktrace.c 2008-07-28 16:30:47 +10:00
suspend.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
swsusp.c powerpc/mm: Split mmu_context handling 2008-12-21 14:21:15 +11:00
swsusp_32.S powerpc/mm: Introduce MMU features 2008-12-21 14:21:16 +11:00
swsusp_64.c
swsusp_asm64.S powerpc: Fix 64-bit hibernation with 64k pages 2008-10-07 14:26:20 +11:00
sys_ppc32.c powerpc: Add compat_sys_truncate 2009-08-20 10:12:34 +10:00
syscalls.c powerpc/mm: Add Strong Access Ordering support 2008-07-09 16:30:45 +10:00
sysfs.c powerpc: Fix bug where perf_counters breaks oprofile 2009-09-11 11:27:58 +10:00
systbl.S
systbl_chk.c [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
systbl_chk.sh [POWERPC] Fix a couple of copyright symbols 2008-01-25 22:52:50 +11:00
tau_6xx.c on_each_cpu(): kill unused 'retry' parameter 2008-06-26 11:24:38 +02:00
time.c powerpc: Properly start decrementer on BookE secondary CPUs 2009-08-28 14:25:04 +10:00
traps.c powerpc: Add PTRACE_SINGLEBLOCK support 2009-06-09 13:29:25 +10:00
udbg.c powerpc/udbg: Fix lost byte during console handover; change LFCR to CRLF 2009-03-11 17:11:34 +11:00
udbg_16550.c powerpc/440: Fix warning early debug code 2009-06-26 16:55:35 +10:00
vdso.c powerpc: Move 64bit VDSO to improve context switch performance 2009-08-20 10:12:24 +10:00
vecemu.c
vector.S powerpc: Use names rather than numbers for SPRGs (v2) 2009-08-20 10:12:27 +10:00
vio.c powerpc: use dma_map_ops struct 2009-08-28 14:24:10 +10:00
vmlinux.lds.S powerpc/vmlinux.lds: Move _edata down 2009-08-20 10:29:29 +10:00