• Ian Rogers's avatar
    perf parse-events: Fix for term values that are raw events · b20576fd
    Ian Rogers authored
    Raw events can be strings like 'r0xead' but the 0x is optional so they
    can also be 'read'. On IcelakeX uncore_imc_free_running has an event
    called 'read' which may be programmed as:
    ```
    $ perf stat -e 'uncore_imc_free_running/event=read/' -a sleep 1
    ```
    However, the PE_RAW type isn't allowed on the right of a term, even
    though in this case we just want to interpret it as a string. This
    leads to the following error on IcelakeX:
    ```
    $ perf stat -e 'uncore_imc_free_running/event=read/' -a sleep 1
    event syntax error: '..nning/event=read/'
                                      \___ parser error
    Run 'perf list' for a list of valid events
    
     Usage: perf stat [<options>] [<command>]
    
        -e, --event <event> event selector. use 'perf list' to list available events
    ```
    Fix this by allowing raw types on the right of terms and treat them as
    strings, just as is already done for PE_LEGACY_CACHE. Make this
    consistent by just entirely removing name_or_legacy and always using
    name_or_raw that covers all three cases.
    
    Fixes: 6fd1e519
    
     ("perf parse-events: Support PMUs for legacy cache events")
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20230928004431.1926969-1-irogers@google.com
    
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    b20576fd
parse-events.y 15.7 KB