• Paul Mackerras's avatar
    powerpc/perf_counters: Reduce stack usage of power_check_constraints · e51ee31e
    Paul Mackerras authored
    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: default avatarMichael Ellerman <michael@ellerman.id.au>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Cc: <stable@kernel.org)
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    e51ee31e
perf_counter.c 32.1 KB