From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752377AbcISQ64 (ORCPT ); Mon, 19 Sep 2016 12:58:56 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:33220 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750898AbcISQ6y (ORCPT ); Mon, 19 Sep 2016 12:58:54 -0400 Date: Mon, 19 Sep 2016 09:58:10 -0700 From: Sukadev Bhattiprolu To: Arnaldo Carvalho de Melo Cc: peterz@infradead.org, maddy@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, Michael Ellerman , Jiri Olsa , mingo@kernel.org, ak@linux.intel.com, namhyung@kernel.org Subject: Re: [PATCH v21 00/20] perf, tools: Add support for PMU events in JSON format References: <1473978296-20712-1-git-send-email-sukadev@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1473978296-20712-1-git-send-email-sukadev@linux.vnet.ibm.com> X-Operating-System: Linux 2.0.32 on an i486 User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16091916-0028-0000-0000-000005A3A4A2 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00005786; HX=3.00000240; KW=3.00000007; PH=3.00000004; SC=3.00000185; SDB=6.00759189; UDB=6.00360788; IPR=6.00533407; BA=6.00004736; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00012715; XFM=3.00000011; UTC=2016-09-19 16:58:51 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16091916-0029-0000-0000-00002F5E2B2B Message-Id: <20160919165810.GA6879@us.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-09-19_10:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609020000 definitions=main-1609190230 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org I messed up the Cc list. Fixing it now. Sukadev Bhattiprolu [sukadev@linux.vnet.ibm.com] wrote: > CPUs support a large number of performance monitoring events (PMU events) > and often these events are very specific to an architecture/model of the > CPU. To use most of these PMU events with perf, we currently have to identify > them by their raw codes: > > perf stat -e r100f2 sleep 1 > > This patchset allows architectures to specify these PMU events in JSON > files located in 'tools/perf/pmu-events/arch/' of the mainline tree. > The events from the JSON files for the architecture are then built into > the perf binary. > > At run time, perf identifies the specific set of events for the CPU and > creates "event aliases". These aliases allow users to specify events by > "name" as: > > perf stat -e pm_1plus_ppc_cmpl sleep 1 > > The file, 'tools/perf/pmu-events/README' in [PATCH 15/19] gives more > details. > > Note: > - All known events tables for the architecture are included in the > perf binary. > > - For architectures that don't have any JSON files, an empty mapping > table is created and they should continue to build. > > Thanks to input from Andi Kleen, Jiri Olsa, Namhyung Kim and Ingo Molnar. > > These patches are available from: > > https://github.com/sukadev/linux.git > > Branch Description > ------------------------------------------------------ > json-code-v21 Source Code only > json-code+data-v21 Both code and data (for build/test/pull) > > NOTE: Only "source code" patches (i.e those in json-code-v21) are being > emailed. Please pull the json-code+data-v21 branch for build/test. > > Changelog[v21] > - Rebase to recent perf/core > - Group the PMU events supported by a CPU model into topics and > create a separate JSON file for each topic for each CPU (code > and input from Jiri Olsa). > > Changelog[v20] > - Rebase to recent perf/core > - Add Patch 20/20 to allow perf-stat to work with the period= field > > Changelog[v19] > Rebase to recent perf/core; fix couple lines >80 chars. > > Changelog[v18] > Rebase to recent perf/core; fix minor merge conflicts. > > Changelog[v17] > Rebase to recent perf/core; couple of small fixes to processing Intel > JSON files; allow case-insensitive PMU event names. > > Changelog[v16] > Rebase to recent perf/core; fix minor merge conflicts; drop 3 patches > that were merged into perf/core. > > Changelog[v15] > Code changes: > - Fix 'perf list' usage string and update man page. > - Remove a redundant __maybe_unused tag. > - Rebase to recent perf/core branch. > > Data files updates: json-files-5 branch > - Rebase to perf/intel-json-files-5 from Andi Kleen > - Add patch from Madhavan Srinivasan for couple more Powerpc models > > Changelog[v14] > Comments from Jiri Olsa: > - Change parameter name/type for pmu_add_cpu_aliases (from void *data > to list_head *head) > - Use asprintf() in file_name_to_tablename() and simplify/reorg code. > - Use __weak definition from > - Use fopen() with mode "w" and eliminate unlink() > - Remove minor TODO. > - Add error check for return value from strdup() in print_pmu_events(). > - Move independent changes from patches 3,11,12 .. to separate patches > for easier review/backport. > - Clarify mapfile's "header line support" in patch description. > - Fix build failure with DEBUG=1 > > Comment from Andi Kleen: > - In tools/perf/pmu-events/Build, check for 'mapfile.csv' rather than > 'mapfile*' > > Misc: > - Minor changes/clarifications to tools/perf/pmu-events/README. > > > Changelog[v13] > Version: Individual patches have their own history :-) that I am > preserving. Patchset version (v13) is for overall patchset and is > somewhat arbitrary. > > - Added support for "categories" of events to perf > - Add mapfile, jevents build dependency on pmu-events.c > - Silence jevents when parsing JSON files unless V=1 is specified > - Cleanup error messages > - Fix memory leak with ->cpuid > - Rebase to Arnaldo's tree > - Allow overriding CPUID via environment variable > - Support long descriptions for events > - Handle header line in mapfile.csv > - Cleanup JSON files (trim PublicDescription if identical to/prefix of > BriefDescription field) > > > Andi Kleen (12): > perf, tools: Add jsmn `jasmine' JSON parser > perf, tools, jevents: Program to convert JSON file to C style file > perf, tools: Support CPU id matching for x86 v2 > perf, tools: Support alias descriptions > perf, tools: Query terminal width and use in perf list > perf, tools: Add a --no-desc flag to perf list > perf, tools: Add override support for event list CPUID > perf, tools: Add support for event list topics > perf, tools, jevents: Handle header line in mapfile > perf, tools: Make alias matching case-insensitive > perf, tools, pmu-events: Fix fixed counters on Intel > perf, tools, pmu-events: Add Skylake frontend MSR support > > Sukadev Bhattiprolu (7): > perf, tools: Use pmu_events table to create aliases > perf, tools: Support CPU ID matching for Powerpc > perf, tools, jevents: Add support for long descriptions > perf, tools: Add alias support for long descriptions > perf, tools: Support long descriptions with perf list > perf, tools: Add README for info on parsing JSON/map files > Allow period= in perf stat CPU event descriptions. > > tools/lib/subcmd/pager.c | 16 + > tools/lib/subcmd/pager.h | 1 + > tools/perf/Documentation/perf-list.txt | 12 +- > tools/perf/Makefile.perf | 28 +- > tools/perf/arch/powerpc/util/header.c | 11 + > tools/perf/arch/x86/util/header.c | 24 +- > tools/perf/builtin-list.c | 20 +- > tools/perf/pmu-events/Build | 11 + > tools/perf/pmu-events/README | 148 ++++++ > tools/perf/pmu-events/jevents.c | 811 +++++++++++++++++++++++++++++++++ > tools/perf/pmu-events/jevents.h | 18 + > tools/perf/pmu-events/jsmn.c | 313 +++++++++++++ > tools/perf/pmu-events/jsmn.h | 67 +++ > tools/perf/pmu-events/json.c | 162 +++++++ > tools/perf/pmu-events/json.h | 42 ++ > tools/perf/pmu-events/pmu-events.h | 37 ++ > tools/perf/util/header.h | 1 + > tools/perf/util/parse-events.c | 8 +- > tools/perf/util/parse-events.h | 3 +- > tools/perf/util/pmu.c | 177 ++++++- > tools/perf/util/pmu.h | 6 +- > 21 files changed, 1880 insertions(+), 36 deletions(-) > create mode 100644 tools/perf/pmu-events/Build > create mode 100644 tools/perf/pmu-events/README > create mode 100644 tools/perf/pmu-events/jevents.c > create mode 100644 tools/perf/pmu-events/jevents.h > create mode 100644 tools/perf/pmu-events/jsmn.c > create mode 100644 tools/perf/pmu-events/jsmn.h > create mode 100644 tools/perf/pmu-events/json.c > create mode 100644 tools/perf/pmu-events/json.h > create mode 100644 tools/perf/pmu-events/pmu-events.h > > -- > 1.8.3.1