Patch "perf parse-events: Fix for term values that are raw events" has been added to the 6.6-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    perf parse-events: Fix for term values that are raw events

to the 6.6-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     perf-parse-events-fix-for-term-values-that-are-raw-e.patch
and it can be found in the queue-6.6 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3496b526a8a3bb64c0b9d9819448a46a6c78e827
Author: Ian Rogers <irogers@xxxxxxxxxx>
Date:   Wed Sep 27 17:44:31 2023 -0700

    perf parse-events: Fix for term values that are raw events
    
    [ Upstream commit b20576fd7fe39554b212095c3c0d7a3dff512515 ]
    
    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: 6fd1e5191591 ("perf parse-events: Support PMUs for legacy cache events")
    Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
    Cc: James Clark <james.clark@xxxxxxx>
    Cc: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230928004431.1926969-1-irogers@xxxxxxxxxx
    Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index da9aac47972c1..c3a86ef4b7cf3 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -79,7 +79,7 @@ static void free_list_evsel(struct list_head* list_evsel)
 %type <str> PE_MODIFIER_BP
 %type <str> PE_EVENT_NAME
 %type <str> PE_DRV_CFG_TERM
-%type <str> name_or_raw name_or_legacy
+%type <str> name_or_raw
 %destructor { free ($$); } <str>
 %type <term> event_term
 %destructor { parse_events_term__delete ($$); } <term>
@@ -680,8 +680,6 @@ event_term
 
 name_or_raw: PE_RAW | PE_NAME | PE_LEGACY_CACHE
 
-name_or_legacy: PE_NAME | PE_LEGACY_CACHE
-
 event_term:
 PE_RAW
 {
@@ -696,7 +694,7 @@ PE_RAW
 	$$ = term;
 }
 |
-name_or_raw '=' name_or_legacy
+name_or_raw '=' name_or_raw
 {
 	struct parse_events_term *term;
 	int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $3, &@1, &@3);
@@ -776,7 +774,7 @@ PE_TERM_HW
 	$$ = term;
 }
 |
-PE_TERM '=' name_or_legacy
+PE_TERM '=' name_or_raw
 {
 	struct parse_events_term *term;
 	int err = parse_events_term__str(&term, (enum parse_events__term_type)$1,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux