• Ian Rogers's avatar
    perf parse-events: Fix propagation of term's no_value when cloning · 64199ae4
    Ian Rogers authored
    The no_value field in 'struct parse_events_term' indicates that the val
    variable isn't used, the case for an event name.
    
    Cloning wasn't propagating this, making cloned event name terms
    appearing to have a constant assinged to them.
    
    Working around the bug would check for a value of 1 assigned to value,
    but then this meant a user value of 1 couldn't be differentiated causing
    the value to be lost in debug printing and perf list.
    
    The change fixes the cloning and updates the "val.num ==/!= 1" tests to
    use no_value instead.
    
    To better check the no_value is set appropriately parameter comments are
    added for constant values.
    
    This found that no_value wasn't set correctly in parse_events_multi_pmu_add,
    which matters now that no_value is used to indicate an event name.
    
    Fixes: 7a6e9164 ("perf parse-events: Make common term list to strbuf helper")
    Fixes: 99e7138e ("perf tools: Fail on using multiple bits long terms without value")
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20230831071421.2201358-4-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    64199ae4
pmu.c 46.3 KB