lkml.org 
[lkml]   [2016]   [Aug]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 071/305] perf tools: Fix perf regs mask generation
    3.16.37-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>

    commit f47822078dece7189cad0a5f472f148e5e916736 upstream.

    On some architectures (powerpc in particular), the number of registers
    exceeds what can be represented in an integer bitmask. Ensure we
    generate the proper bitmask on such platforms.

    Fixes: 71ad0f5e4 ("perf tools: Support for DWARF CFI unwinding on post processing")
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    tools/perf/util/perf_regs.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/tools/perf/util/perf_regs.c
    +++ b/tools/perf/util/perf_regs.c
    @@ -7,18 +7,18 @@ int perf_reg_value(u64 *valp, struct reg
    int i, idx = 0;
    u64 mask = regs->mask;

    - if (regs->cache_mask & (1 << id))
    + if (regs->cache_mask & (1ULL << id))
    goto out;

    - if (!(mask & (1 << id)))
    + if (!(mask & (1ULL << id)))
    return -EINVAL;

    for (i = 0; i < id; i++) {
    - if (mask & (1 << i))
    + if (mask & (1ULL << i))
    idx++;
    }

    - regs->cache_mask |= (1 << id);
    + regs->cache_mask |= (1ULL << id);
    regs->cache_regs[id] = regs->regs[idx];

    out:
    \
     
     \ /
      Last update: 2016-09-17 09:56    [W:4.201 / U:0.216 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site