• sukadev@linux.vnet.ibm.com's avatar
    powerpc/perf/hv-24x7: Use per-cpu page buffer · f34b6c72
    sukadev@linux.vnet.ibm.com authored
    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.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    f34b6c72
hv-24x7.c 11.4 KB