• sukadev@linux.vnet.ibm.com's avatar
    powerpc/perf/hv-24x7: Use per-cpu page buffer · 5c7308f5
    sukadev@linux.vnet.ibm.com authored
    commit f34b6c72 upstream.
    
    The 24x7 counters are continuously running and not updated on an
    interrupt. So we record the event counts when stopping the event or
    deleting it.
    
    But to "read" a single counter in 24x7, we allocate a page and pass it
    into the hypervisor (The HV returns the page full of counters from which
    we extract the specific counter for this event).
    
    We allocate a page using GFP_USER and when deleting the event, we end up
    with the following warning because we are blocking in interrupt context.
    
      [  698.641709] BUG: scheduling while atomic: swapper/0/0/0x10010000
    
    We could use GFP_ATOMIC but that could result in failures. Pre-allocate
    a buffer so we don't have to allocate in interrupt context. Further as
    Michael Ellerman suggested, use Per-CPU buffer so we only need to
    allocate once per CPU.
    Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    5c7308f5
hv-24x7.c 11.4 KB