Hi, Fedora and RHEL 7 use an unbundled libpfm rather than the one bundled with PAPI. This power9 to allow the use of PM_LD_MISS_L1 and PM_ST_MISS_L1 at the same time should be put into the upstream libpfm. -Will Cohen
-------- Forwarded Message -------- Subject: [PATCH, papi 1/2] add power9 alternate events (papi) Date: Thu, 16 Nov 2017 11:58:29 -0600 From: Will Schmidt <will_schm...@vnet.ibm.com> Reply-To: will_schm...@vnet.ibm.com To: William Cohen <wco...@redhat.com> CC: perfapi-de...@icl.utk.edu, Carl Love <c...@us.ibm.com>, Michael Petlan <mpet...@redhat.com> [PATCH, papi] Add alternate event numbers for power9. I had previously missed adding the _ALT entries, which allow some events to be specified on different counters. This fills those in. Signed-off-by: Will Schmidt <will_schm...@vnet.ibm.com> diff --git a/src/libpfm4/lib/events/power9_events.h b/src/libpfm4/lib/events/power9_events.h index 72c481b..d77bab3 100644 --- a/src/libpfm4/lib/events/power9_events.h +++ b/src/libpfm4/lib/events/power9_events.h @@ -7,10 +7,11 @@ * c...@us.ibm.com * * Mods: * Initial content generated by Will Schmidt. (Jan 31, 2017). * Refresh/update generated Jun 06, 2017 by Will Schmidt. +* missing _ALT events added, Nov 16, 2017 by Will Schmidt. * * Contributed by * (C) Copyright IBM Corporation, 2017. All Rights Reserved. * * Note: This code was automatically generated and should not be modified by @@ -967,10 +968,22 @@ #define POWER9_PME_PM_VSU_FSQRT_FDIV 941 #define POWER9_PME_PM_VSU_NON_FLOP_CMPL 942 #define POWER9_PME_PM_XLATE_HPT_MODE 943 #define POWER9_PME_PM_XLATE_MISS 944 #define POWER9_PME_PM_XLATE_RADIX_MODE 945 +#define POWER9_PME_PM_BR_2PATH_ALT 946 +#define POWER9_PME_PM_CYC_ALT 947 +#define POWER9_PME_PM_CYC_ALT2 948 +#define POWER9_PME_PM_CYC_ALT3 949 +#define POWER9_PME_PM_INST_CMPL_ALT 950 +#define POWER9_PME_PM_INST_CMPL_ALT2 951 +#define POWER9_PME_PM_INST_CMPL_ALT3 952 +#define POWER9_PME_PM_INST_DISP_ALT 953 +#define POWER9_PME_PM_LD_MISS_L1_ALT 954 +#define POWER9_PME_PM_SUSPENDED_ALT 955 +#define POWER9_PME_PM_SUSPENDED_ALT2 956 +#define POWER9_PME_PM_SUSPENDED_ALT3 957 static const pme_power_entry_t power9_pe[] = { [ POWER9_PME_PM_1FLOP_CMPL ] = { .pme_name = "PM_1FLOP_CMPL", .pme_code = 0x0000045050, @@ -1029,10 +1042,11 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_BFU_BUSY", .pme_code = 0x000003005C, .pme_short_desc = "Cycles in which all 4 Binary Floating Point units are busy.", .pme_long_desc = "Cycles in which all 4 Binary Floating Point units are busy. The BFU is running at capacity", }, +/* See also alternate entries for 0000020036 / POWER9_PME_PM_BR_2PATH with code(s) 0000040036 at the bottom of this table. \n */ [ POWER9_PME_PM_BR_2PATH ] = { .pme_name = "PM_BR_2PATH", .pme_code = 0x0000020036, .pme_short_desc = "Branches that are not strongly biased", .pme_long_desc = "Branches that are not strongly biased", @@ -1557,10 +1571,11 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_CO_USAGE", .pme_code = 0x000002688C, .pme_short_desc = "Continuous 16 cycle (2to1) window where this signals rotates thru sampling each CO machine busy.", .pme_long_desc = "Continuous 16 cycle (2to1) window where this signals rotates thru sampling each CO machine busy. PMU uses this wave to then do 16 cyc count to sample total number of machs running", }, +/* See also alternate entries for 000001001E / POWER9_PME_PM_CYC with code(s) 000002001E 000003001E 000004001E at the bottom of this table. \n */ [ POWER9_PME_PM_CYC ] = { .pme_name = "PM_CYC", .pme_code = 0x000001001E, .pme_short_desc = "Processor cycles", .pme_long_desc = "Processor cycles", @@ -2667,16 +2682,18 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_INST_CHIP_PUMP_CPRED", .pme_code = 0x0000014050, .pme_short_desc = "Initial and Final Pump Scope was chip pump (prediction=correct) for an instruction fetch", .pme_long_desc = "Initial and Final Pump Scope was chip pump (prediction=correct) for an instruction fetch", }, +/* See also alternate entries for 0000010002 / POWER9_PME_PM_INST_CMPL with code(s) 0000020002 0000030002 0000040002 at the bottom of this table. \n */ [ POWER9_PME_PM_INST_CMPL ] = { .pme_name = "PM_INST_CMPL", .pme_code = 0x0000010002, .pme_short_desc = "Number of PowerPC Instructions that completed.", .pme_long_desc = "Number of PowerPC Instructions that completed.", }, +/* See also alternate entries for 00000200F2 / POWER9_PME_PM_INST_DISP with code(s) 00000300F2 at the bottom of this table. \n */ [ POWER9_PME_PM_INST_DISP ] = { .pme_name = "PM_INST_DISP", .pme_code = 0x00000200F2, .pme_short_desc = "# PPC Dispatched", .pme_long_desc = "# PPC Dispatched", @@ -4005,10 +4022,11 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_LD_MISS_L1_FIN", .pme_code = 0x000002C04E, .pme_short_desc = "Number of load instructions that finished with an L1 miss.", .pme_long_desc = "Number of load instructions that finished with an L1 miss. Note that even if a load spans multiple slices this event will increment only once per load op.", }, +/* See also alternate entries for 000003E054 / POWER9_PME_PM_LD_MISS_L1 with code(s) 00000400F0 at the bottom of this table. \n */ [ POWER9_PME_PM_LD_MISS_L1 ] = { .pme_name = "PM_LD_MISS_L1", .pme_code = 0x000003E054, .pme_short_desc = "Load Missed L1, counted at execution time (can be greater than loads finished).", .pme_long_desc = "Load Missed L1, counted at execution time (can be greater than loads finished). LMQ merges are not included in this count. i.e. if a load instruction misses on an address that is already allocated on the LMQ, this event will not increment for that load). Note that this count is per slice, so if a load spans multiple slices this event will increment multiple times for a single load.", @@ -6147,10 +6165,11 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_STOP_FETCH_PENDING_CYC", .pme_code = 0x00000048A4, .pme_short_desc = "Fetching is stopped due to an incoming instruction that will result in a flush", .pme_long_desc = "Fetching is stopped due to an incoming instruction that will result in a flush", }, +/* See also alternate entries for 0000010000 / POWER9_PME_PM_SUSPENDED with code(s) 0000020000 0000030000 0000040000 at the bottom of this table. \n */ [ POWER9_PME_PM_SUSPENDED ] = { .pme_name = "PM_SUSPENDED", .pme_code = 0x0000010000, .pme_short_desc = "Counter OFF", .pme_long_desc = "Counter OFF", @@ -6645,8 +6664,80 @@ static const pme_power_entry_t power9_pe[] = { .pme_name = "PM_XLATE_RADIX_MODE", .pme_code = 0x000000F898, .pme_short_desc = "LSU reports every cycle the thread is in radix translation mode (as opposed to HPT mode)", .pme_long_desc = "LSU reports every cycle the thread is in radix translation mode (as opposed to HPT mode)", }, -/* total 945 */ +[ POWER9_PME_PM_BR_2PATH_ALT ] = { + .pme_name = "PM_BR_2PATH_ALT", + .pme_code = 0x0000040036, + .pme_short_desc = "Branches that are not strongly biased", + .pme_long_desc = "Branches that are not strongly biased", +}, +[ POWER9_PME_PM_CYC_ALT ] = { + .pme_name = "PM_CYC_ALT", + .pme_code = 0x000002001E, + .pme_short_desc = "Processor cycles", + .pme_long_desc = "Processor cycles", +}, +[ POWER9_PME_PM_CYC_ALT2 ] = { + .pme_name = "PM_CYC_ALT2", + .pme_code = 0x000003001E, + .pme_short_desc = "Processor cycles", + .pme_long_desc = "Processor cycles", +}, +[ POWER9_PME_PM_CYC_ALT3 ] = { + .pme_name = "PM_CYC_ALT3", + .pme_code = 0x000004001E, + .pme_short_desc = "Processor cycles", + .pme_long_desc = "Processor cycles", +}, +[ POWER9_PME_PM_INST_CMPL_ALT ] = { + .pme_name = "PM_INST_CMPL_ALT", + .pme_code = 0x0000020002, + .pme_short_desc = "Number of PowerPC Instructions that completed.", + .pme_long_desc = "Number of PowerPC Instructions that completed.", +}, +[ POWER9_PME_PM_INST_CMPL_ALT2 ] = { + .pme_name = "PM_INST_CMPL_ALT2", + .pme_code = 0x0000030002, + .pme_short_desc = "Number of PowerPC Instructions that completed.", + .pme_long_desc = "Number of PowerPC Instructions that completed.", +}, +[ POWER9_PME_PM_INST_CMPL_ALT3 ] = { + .pme_name = "PM_INST_CMPL_ALT3", + .pme_code = 0x0000040002, + .pme_short_desc = "Number of PowerPC Instructions that completed.", + .pme_long_desc = "Number of PowerPC Instructions that completed.", +}, +[ POWER9_PME_PM_INST_DISP_ALT ] = { + .pme_name = "PM_INST_DISP_ALT", + .pme_code = 0x00000300F2, + .pme_short_desc = "# PPC Dispatched", + .pme_long_desc = "# PPC Dispatched", +}, +[ POWER9_PME_PM_LD_MISS_L1_ALT ] = { + .pme_name = "PM_LD_MISS_L1_ALT", + .pme_code = 0x00000400F0, + .pme_short_desc = "Load Missed L1, counted at execution time (can be greater than loads finished).", + .pme_long_desc = "Load Missed L1, counted at execution time (can be greater than loads finished). LMQ merges are not included in this count. i.e. if a load instruction misses on an address that is already allocated on the LMQ, this event will not increment for that load). Note that this count is per slice, so if a load spans multiple slices this event will increment multiple times for a single load.", +}, +[ POWER9_PME_PM_SUSPENDED_ALT ] = { + .pme_name = "PM_SUSPENDED_ALT", + .pme_code = 0x0000020000, + .pme_short_desc = "Counter OFF", + .pme_long_desc = "Counter OFF", +}, +[ POWER9_PME_PM_SUSPENDED_ALT2 ] = { + .pme_name = "PM_SUSPENDED_ALT2", + .pme_code = 0x0000030000, + .pme_short_desc = "Counter OFF", + .pme_long_desc = "Counter OFF", +}, +[ POWER9_PME_PM_SUSPENDED_ALT3 ] = { + .pme_name = "PM_SUSPENDED_ALT3", + .pme_code = 0x0000040000, + .pme_short_desc = "Counter OFF", + .pme_long_desc = "Counter OFF", +}, +/* total 957 */ }; #endif ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel