71 lines
2.8 KiB
Diff
71 lines
2.8 KiB
Diff
From 576ac10f0805c4dd6385a6acf53dd129e9052312 Mon Sep 17 00:00:00 2001
|
|
From: Zhengjun Xing <zhengjun.xing@linux.intel.com>
|
|
Date: Wed, 25 May 2022 22:04:10 +0800
|
|
Subject: [PATCH 153/201] perf jevents: Fix event syntax error caused by ExtSel
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
mainline inclusion
|
|
from mainline-v5.19-rc1
|
|
commit f4df0dbbe62ee8e4405a57b27ccd54393971c773
|
|
category: bugfix
|
|
bugzilla: https://gitee.com/openeuler/kernel/issues/I8C0CX
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4df0dbbe62ee8e4405a57b27ccd54393971c773
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
In the origin code, when "ExtSel" is 1, the eventcode will change to
|
|
"eventcode |= 1 << 21”. For event “UNC_Q_RxL_CREDITS_CONSUMED_VN0.DRS",
|
|
its "ExtSel" is "1", its eventcode will change from 0x1E to 0x20001E,
|
|
but in fact the eventcode should <=0x1FF, so this will cause the parse
|
|
fail:
|
|
|
|
# perf stat -e "UNC_Q_RxL_CREDITS_CONSUMED_VN0.DRS" -a sleep 0.1
|
|
event syntax error: '.._RxL_CREDITS_CONSUMED_VN0.DRS'
|
|
\___ value too big for format, maximum is 511
|
|
|
|
On the perf kernel side, the kernel assumes the valid bits are continuous.
|
|
It will adjust the 0x100 (bit 8 for perf tool) to bit 21 in HW.
|
|
|
|
DEFINE_UNCORE_FORMAT_ATTR(event_ext, event, "config:0-7,21");
|
|
|
|
So the perf tool follows the kernel side and just set bit8 other than bit21.
|
|
|
|
Fixes: fedb2b518239cbc0 ("perf jevents: Add support for parsing uncore json files")
|
|
Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
|
|
Signed-off-by: Xing Zhengjun <zhengjun.xing@linux.intel.com>
|
|
Acked-by: Ian Rogers <irogers@google.com>
|
|
Cc: Adrian Hunter <adrian.hunter@intel.com>
|
|
Cc: Alexander Shishkin <alexander.shishkin@intel.com>
|
|
Cc: Andi Kleen <ak@linux.intel.com>
|
|
Cc: Ingo Molnar <mingo@redhat.com>
|
|
Cc: Jiri Olsa <jolsa@kernel.org>
|
|
Cc: Peter Zijlstra <peterz@infradead.org>
|
|
Link: https://lore.kernel.org/r/20220525140410.1706851-1-zhengjun.xing@linux.intel.com
|
|
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
Signed-off-by: hongrongxuan <hongrongxuan@huawei.com>
|
|
---
|
|
tools/perf/pmu-events/jevents.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/tools/perf/pmu-events/jevents.c b/tools/perf/pmu-events/jevents.c
|
|
index d547dc5e6efa..c84180b7fd3d 100644
|
|
--- a/tools/perf/pmu-events/jevents.c
|
|
+++ b/tools/perf/pmu-events/jevents.c
|
|
@@ -579,7 +579,7 @@ static int json_events(const char *fn,
|
|
} else if (json_streq(map, field, "ExtSel")) {
|
|
char *code = NULL;
|
|
addfield(map, &code, "", "", val);
|
|
- eventcode |= strtoul(code, NULL, 0) << 21;
|
|
+ eventcode |= strtoul(code, NULL, 0) << 8;
|
|
free(code);
|
|
} else if (json_streq(map, field, "EventName")) {
|
|
addfield(map, &je.name, "", "", val);
|
|
--
|
|
2.27.0
|
|
|