Em Wed, Oct 18, 2017 at 06:05:07AM -0700, kan.li...@intel.com escreveu:
> From: Kan Liang <kan.li...@intel.com>
> 
> Add a Intel event file for perf.

Andi, can I have your Acked-by or reviewed-by?

- Arnaldo
 
> Signed-off-by: Kan Liang <kan.li...@intel.com>
> ---
>  .../pmu-events/arch/x86/goldmontplus/cache.json    | 1453 
> ++++++++++++++++++++
>  .../pmu-events/arch/x86/goldmontplus/frontend.json |   62 +
>  .../pmu-events/arch/x86/goldmontplus/memory.json   |   38 +
>  .../pmu-events/arch/x86/goldmontplus/other.json    |   98 ++
>  .../pmu-events/arch/x86/goldmontplus/pipeline.json |  544 ++++++++
>  .../arch/x86/goldmontplus/virtual-memory.json      |  218 +++
>  tools/perf/pmu-events/arch/x86/mapfile.csv         |    1 +
>  7 files changed, 2414 insertions(+)
>  create mode 100644 tools/perf/pmu-events/arch/x86/goldmontplus/cache.json
>  create mode 100644 tools/perf/pmu-events/arch/x86/goldmontplus/frontend.json
>  create mode 100644 tools/perf/pmu-events/arch/x86/goldmontplus/memory.json
>  create mode 100644 tools/perf/pmu-events/arch/x86/goldmontplus/other.json
>  create mode 100644 tools/perf/pmu-events/arch/x86/goldmontplus/pipeline.json
>  create mode 100644 
> tools/perf/pmu-events/arch/x86/goldmontplus/virtual-memory.json
> 
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/cache.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/cache.json
> new file mode 100644
> index 0000000..b4791b4
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/cache.json
> @@ -0,0 +1,1453 @@
> +[
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts memory requests originating from the 
> core that miss in the L2 cache.",
> +        "EventCode": "0x2E",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x41",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LONGEST_LAT_CACHE.MISS",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "L2 cache request misses"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts memory requests originating from the 
> core that reference a cache line in the L2 cache.",
> +        "EventCode": "0x2E",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4f",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LONGEST_LAT_CACHE.REFERENCE",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "L2 cache requests"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of demand and prefetch 
> transactions that the L2 XQ rejects due to a full or near full condition 
> which likely indicates back pressure from the intra-die interconnect (IDI) 
> fabric. The XQ may reject transactions from the L2Q (non-cacheable requests), 
> L2 misses and L2 write-back victims.",
> +        "EventCode": "0x30",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "L2_REJECT_XQ.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Requests rejected by the XQ"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of demand and L1 prefetcher 
> requests rejected by the L2Q due to a full or nearly full condition which 
> likely indicates back pressure from L2Q. It also counts requests that would 
> have gone directly to the XQ, but are rejected due to a full or nearly full 
> condition, indicating back pressure from the IDI link. The L2Q may also 
> reject transactions from a core to insure fairness between cores, or to delay 
> a core's dirty eviction when the address conflicts with incoming external 
> snoops.",
> +        "EventCode": "0x31",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CORE_REJECT_L2Q.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Requests rejected by the L2Q"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts when a modified (dirty) cache line is 
> evicted from the data L1 cache and needs to be written back to memory.  No 
> count will occur if the evicted line is clean, and hence does not require a 
> writeback.",
> +        "EventCode": "0x51",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DL1.REPLACEMENT",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "L1 Cache evictions for dirty data"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts cycles that fetch is stalled due to an 
> outstanding ICache miss. That is, the decoder queue is able to accept bytes, 
> but the fetch unit is unable to provide bytes due to an ICache miss.  Note: 
> this event is not the same as the total number of cycles spent retrieving 
> instruction cache lines from the memory hierarchy.",
> +        "EventCode": "0x86",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "FETCH_STALL.ICACHE_FILL_PENDING_CYCLES",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles code-fetch stalled due to an outstanding 
> ICache miss."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "EventCode": "0xB7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts locked memory uops retired.  This 
> includes regular locks and bus locks. (To specifically count bus locks only, 
> see the Offcore response event.)  A locked access is one with a lock prefix, 
> or an exchange to memory.  See the SDM for a complete description of which 
> memory load accesses are locks.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x21",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.LOCK_LOADS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Locked load uops retired (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired where the data 
> requested spans a 64 byte cache line boundary.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x41",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.SPLIT_LOADS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that split a cache-line 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts store uops retired where the data 
> requested spans a 64 byte cache line boundary.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x42",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.SPLIT_STORES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Stores uops retired that split a cache-line 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts memory uops retired where the data 
> requested spans a 64 byte cache line boundary.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x43",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.SPLIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Memory uops retired that split a cache-line 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts the number of load uops retired.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x81",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.ALL_LOADS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts the number of store uops retired.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x82",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.ALL_STORES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Store uops retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts the number of memory uops retired that 
> is either a loads or a store or both.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x83",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.ALL",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Memory uops retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired that hit the L1 data 
> cache.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L1_HIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that hit L1 data cache 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired that hit in the L2 
> cache.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L2_HIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that hit L2 (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired that miss the L1 data 
> cache.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L1_MISS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that missed L1 data cache 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired that miss in the L2 
> cache.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.L2_MISS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that missed L2 (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired where the cache line 
> containing the data was in the modified state of another core or modules 
> cache (HITM).  More specifically, this means that when the load address was 
> checked by other caching agents (typically another processor) in the system, 
> one of those caching agents indicated that they had a dirty copy of the data. 
>  Loads that obtain a HITM response incur greater latency than most is typical 
> for a load.  In addition, since HITM indicates that some other processor had 
> this data in its cache, it implies that the data was shared between 
> processors, or potentially was a lock or semaphore value.  This event is 
> useful for locating sharing, false sharing, and contended locks.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x20",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.HITM",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Memory uop retired where cross core or cross 
> module HITM occurred (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts memory load uops retired where the data 
> is retrieved from the WCB (or fill buffer), indicating that the load found 
> its data while that data was in the process of being brought into the L1 
> cache.  Typically a load will receive this indication when some other load or 
> prefetch missed the L1 cache and was in the process of retrieving the cache 
> line containing the data, but that process had not yet finished (and written 
> the data back to the cache). For example, consider load X and Y, both 
> referencing the same cache line that is not in the L1 cache.  If load X 
> misses cache first, it obtains and WCB (or fill buffer) and begins the 
> process of requesting the data.  When load Y requests the data, it will 
> either hit the WCB, or the L1 cache, depending on exactly what time the 
> request to Y occurs.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x40",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.WCB_HIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads retired that hit WCB (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts memory load uops retired where the data 
> is retrieved from DRAM.  Event is counted at retirement, so the speculative 
> loads are ignored.  A memory load can hit (or miss) the L1 cache, hit (or 
> miss) the L2 cache, hit DRAM, hit in the WCB or receive a HITM response.",
> +        "EventCode": "0xD1",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x80",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_LOAD_UOPS_RETIRED.DRAM_HIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads retired that came from DRAM (Precise 
> event capable)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand cacheable data reads of full 
> cache lines have any transaction responses from the uncore subsystem. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010001",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand cacheable data reads of full 
> cache lines have any transaction responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand cacheable data reads of full 
> cache lines hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040001",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand cacheable data reads of full 
> cache lines hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand cacheable data reads of full 
> cache lines true miss for the L2 cache with a snoop miss in the other 
> processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000001",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand cacheable data reads of full 
> cache lines true miss for the L2 cache with a snoop miss in the other 
> processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand cacheable data reads of full 
> cache lines miss the L2 cache with a snoop hit in the other processor module, 
> data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000001",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.DEMAND_DATA_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand cacheable data reads of full 
> cache lines miss the L2 cache with a snoop hit in the other processor module, 
> data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand cacheable data reads of full 
> cache lines outstanding, per cycle, from the time of the L2 miss to when any 
> response is received. Requires MSR_OFFCORE_RESP[0,1] to specify request type 
> and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000001",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_DATA_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand cacheable data reads of full 
> cache lines outstanding, per cycle, from the time of the L2 miss to when any 
> response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line have any transaction 
> responses from the uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010002",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line have any transaction 
> responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line hit the L2 cache. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040002",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line true miss for the L2 
> cache with a snoop miss in the other processor module.  Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000002",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line true miss for the L2 
> cache with a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line miss the L2 cache with 
> a snoop hit in the other processor module, data forwarding is required. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000002",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line miss the L2 cache with 
> a snoop hit in the other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line outstanding, per cycle, 
> from the time of the L2 miss to when any response is received. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000002",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_RFO.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand reads for ownership (RFO) 
> requests generated by a write to full data cache line outstanding, per cycle, 
> from the time of the L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache have any transaction 
> responses from the uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010004",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache have any transaction 
> responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache hit the L2 cache. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040004",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache true miss for the L2 cache 
> with a snoop miss in the other processor module.  Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000004",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache true miss for the L2 cache 
> with a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache miss the L2 cache with a 
> snoop hit in the other processor module, data forwarding is required. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000004",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.DEMAND_CODE_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache miss the L2 cache with a 
> snoop hit in the other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache outstanding, per cycle, 
> from the time of the L2 miss to when any response is received. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000004",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.DEMAND_CODE_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts demand instruction cacheline and I-side 
> prefetch requests that miss the instruction cache outstanding, per cycle, 
> from the time of the L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions have any transaction responses from the 
> uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010008",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.COREWB.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions have any transaction responses from the 
> uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions hit the L2 cache. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040008",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.COREWB.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions true miss for the L2 cache with a snoop 
> miss in the other processor module.  Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000008",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.COREWB.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions true miss for the L2 cache with a snoop 
> miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000008",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.COREWB.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions outstanding, per cycle, from the time of 
> the L2 miss to when any response is received. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000008",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.COREWB.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts the number of writeback transactions 
> caused by L1 or L2 cache evictions outstanding, per cycle, from the time of 
> the L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher have any transaction responses from the uncore 
> subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher have any transaction responses from the uncore 
> subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher true miss for the L2 cache with a snoop miss in 
> the other processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher true miss for the L2 cache with a snoop miss in 
> the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.PF_L2_DATA_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher outstanding, per cycle, from the time of the L2 
> miss to when any response is received. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_DATA_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cacheline reads generated by 
> hardware L2 cache prefetcher outstanding, per cycle, from the time of the L2 
> miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher have any transaction responses from the uncore 
> subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010020",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher have any transaction responses from the uncore 
> subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040020",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher true miss for the L2 cache with a snoop miss in 
> the other processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000020",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher true miss for the L2 cache with a snoop miss in 
> the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000020",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher outstanding, per cycle, from the time of the L2 
> miss to when any response is received. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000020",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L2_RFO.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> generated by L2 prefetcher outstanding, per cycle, from the time of the L2 
> miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts bus lock and split lock requests have 
> any transaction responses from the uncore subsystem. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010400",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts bus lock and split lock requests have 
> any transaction responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts bus lock and split lock requests hit 
> the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040400",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts bus lock and split lock requests hit the 
> L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts bus lock and split lock requests true 
> miss for the L2 cache with a snoop miss in the other processor module.  
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000400",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.BUS_LOCKS.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts bus lock and split lock requests true 
> miss for the L2 cache with a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts bus lock and split lock requests miss 
> the L2 cache with a snoop hit in the other processor module, data forwarding 
> is required. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000400",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts bus lock and split lock requests miss 
> the L2 cache with a snoop hit in the other processor module, data forwarding 
> is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts bus lock and split lock requests 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000400",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.BUS_LOCKS.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts bus lock and split lock requests 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes have any transaction responses from the uncore subsystem. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes have any transaction responses from the uncore 
> subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes true miss for the L2 cache with a snoop miss in the other 
> processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes true miss for the L2 cache with a snoop miss in the other 
> processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes miss the L2 cache with a snoop hit in the other processor 
> module, data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.FULL_STREAMING_STORES.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes miss the L2 cache with a snoop hit in the other processor 
> module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes outstanding, per cycle, from the time of the L2 miss to 
> when any response is received. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.FULL_STREAMING_STORES.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts full cache line data writes to 
> uncacheable write combining (USWC) memory region and full cache-line 
> non-temporal writes outstanding, per cycle, from the time of the L2 miss to 
> when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache lines requests by software 
> prefetch instructions have any transaction responses from the uncore 
> subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000011000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache lines requests by software 
> prefetch instructions have any transaction responses from the uncore 
> subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache lines requests by software 
> prefetch instructions hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000041000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache lines requests by software 
> prefetch instructions hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache lines requests by software 
> prefetch instructions true miss for the L2 cache with a snoop miss in the 
> other processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify request 
> type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200001000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache lines requests by software 
> prefetch instructions true miss for the L2 cache with a snoop miss in the 
> other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache lines requests by software 
> prefetch instructions miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000001000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache lines requests by software 
> prefetch instructions miss the L2 cache with a snoop hit in the other 
> processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache lines requests by software 
> prefetch instructions outstanding, per cycle, from the time of the L2 miss to 
> when any response is received. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000001000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.SW_PREFETCH.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache lines requests by software 
> prefetch instructions outstanding, per cycle, from the time of the L2 miss to 
> when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher have any transaction responses from the 
> uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000012000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher have any transaction responses from the 
> uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher hit the L2 cache. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000042000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher true miss for the L2 cache with a snoop 
> miss in the other processor module.  Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200002000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher true miss for the L2 cache with a snoop 
> miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000002000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.PF_L1_DATA_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher outstanding, per cycle, from the time of 
> the L2 miss to when any response is received. Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000002000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.PF_L1_DATA_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data cache line reads generated by 
> hardware L1 data cache prefetcher outstanding, per cycle, from the time of 
> the L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  have any transaction responses from the 
> uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000014800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  have any transaction responses from the 
> uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  hit the L2 cache. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000044800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  true miss for the L2 cache with a snoop miss 
> in the other processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200004800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.STREAMING_STORES.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  true miss for the L2 cache with a snoop miss 
> in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000004800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.STREAMING_STORES.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  miss the L2 cache with a snoop hit in the 
> other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  outstanding, per cycle, from the time of the 
> L2 miss to when any response is received. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000004800",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.STREAMING_STORES.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts any data writes to uncacheable write 
> combining (USWC) memory region  outstanding, per cycle, from the time of the 
> L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the uncore subsystem have 
> any transaction responses from the uncore subsystem. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000018000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts requests to the uncore subsystem have 
> any transaction responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the uncore subsystem hit 
> the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000048000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts requests to the uncore subsystem hit the 
> L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the uncore subsystem true 
> miss for the L2 cache with a snoop miss in the other processor module.  
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200008000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts requests to the uncore subsystem true 
> miss for the L2 cache with a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the uncore subsystem miss 
> the L2 cache with a snoop hit in the other processor module, data forwarding 
> is required. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000008000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts requests to the uncore subsystem miss 
> the L2 cache with a snoop hit in the other processor module, data forwarding 
> is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the uncore subsystem 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000008000",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_REQUEST.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts requests to the uncore subsystem 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads generated by L1 or L2 
> prefetchers have any transaction responses from the uncore subsystem. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000013010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads generated by L1 or L2 
> prefetchers have any transaction responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads generated by L1 or L2 
> prefetchers hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000043010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads generated by L1 or L2 
> prefetchers hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads generated by L1 or L2 
> prefetchers true miss for the L2 cache with a snoop miss in the other 
> processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200003010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads generated by L1 or L2 
> prefetchers true miss for the L2 cache with a snoop miss in the other 
> processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads generated by L1 or L2 
> prefetchers miss the L2 cache with a snoop hit in the other processor module, 
> data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000003010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_PF_DATA_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads generated by L1 or L2 
> prefetchers miss the L2 cache with a snoop hit in the other processor module, 
> data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads generated by L1 or L2 
> prefetchers outstanding, per cycle, from the time of the L2 miss to when any 
> response is received. Requires MSR_OFFCORE_RESP[0,1] to specify request type 
> and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000003010",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_PF_DATA_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads generated by L1 or L2 
> prefetchers outstanding, per cycle, from the time of the L2 miss to when any 
> response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads (demand & prefetch) have any 
> transaction responses from the uncore subsystem. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000013091",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads (demand & prefetch) have any 
> transaction responses from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads (demand & prefetch) hit the 
> L2 cache. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000043091",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads (demand & prefetch) hit the 
> L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads (demand & prefetch) true 
> miss for the L2 cache with a snoop miss in the other processor module.  
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200003091",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads (demand & prefetch) true miss 
> for the L2 cache with a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads (demand & prefetch) miss the 
> L2 cache with a snoop hit in the other processor module, data forwarding is 
> required. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000003091",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads (demand & prefetch) miss the 
> L2 cache with a snoop hit in the other processor module, data forwarding is 
> required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data reads (demand & prefetch) 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received. Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000003091",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_DATA_RD.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data reads (demand & prefetch) 
> outstanding, per cycle, from the time of the L2 miss to when any response is 
> received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) have any transaction responses from the uncore subsystem. 
> Requires MSR_OFFCORE_RESP[0,1] to specify request type and response. 
> (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000010022",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_RFO.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) have any transaction responses from the uncore 
> subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) hit the L2 cache. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0000040022",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) true miss for the L2 cache with a snoop miss in the other 
> processor module.  Requires MSR_OFFCORE_RESP[0,1] to specify request type and 
> response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x0200000022",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) true miss for the L2 cache with a snoop miss in the other 
> processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) miss the L2 cache with a snoop hit in the other processor 
> module, data forwarding is required. Requires MSR_OFFCORE_RESP[0,1] to 
> specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x1000000022",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_RFO.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) miss the L2 cache with a snoop hit in the other processor 
> module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) outstanding, per cycle, from the time of the L2 miss to 
> when any response is received. Requires MSR_OFFCORE_RESP[0,1] to specify 
> request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x4000000022",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_RFO.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts reads for ownership (RFO) requests 
> (demand & prefetch) outstanding, per cycle, from the time of the L2 miss to 
> when any response is received.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) have any transaction responses 
> from the uncore subsystem. Requires MSR_OFFCORE_RESP[0,1] to specify request 
> type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x00000132b7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_READ.ANY_RESPONSE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) have any transaction responses 
> from the uncore subsystem.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) hit the L2 cache. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x00000432b7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_HIT",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) hit the L2 cache.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) true miss for the L2 cache with 
> a snoop miss in the other processor module.  Requires MSR_OFFCORE_RESP[0,1] 
> to specify request type and response. (duplicated for both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x02000032b7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": 
> "OFFCORE_RESPONSE.ANY_READ.L2_MISS.SNOOP_MISS_OR_NO_SNOOP_NEEDED",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) true miss for the L2 cache with 
> a snoop miss in the other processor module. ",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) miss the L2 cache with a snoop 
> hit in the other processor module, data forwarding is required. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x10000032b7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_READ.L2_MISS.HITM_OTHER_CORE",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6, 0x1a7",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) miss the L2 cache with a snoop 
> hit in the other processor module, data forwarding is required.",
> +        "Offcore": "1"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) outstanding, per cycle, from the 
> time of the L2 miss to when any response is received. Requires 
> MSR_OFFCORE_RESP[0,1] to specify request type and response. (duplicated for 
> both MSRs)",
> +        "EventCode": "0xB7",
> +        "MSRValue": "0x40000032b7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "OFFCORE_RESPONSE.ANY_READ.OUTSTANDING",
> +        "PDIR_COUNTER": "na",
> +        "MSRIndex": "0x1a6",
> +        "SampleAfterValue": "100007",
> +        "BriefDescription": "Counts data read, code read, and read for 
> ownership (RFO) requests (demand & prefetch) outstanding, per cycle, from the 
> time of the L2 miss to when any response is received.",
> +        "Offcore": "1"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/frontend.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/frontend.json
> new file mode 100644
> index 0000000..a787896
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/frontend.json
> @@ -0,0 +1,62 @@
> +[
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the Instruction Cache 
> (ICache) for one or more bytes in an ICache Line and that cache line is in 
> the ICache (hit).  The event strives to count on a cache line basis, so that 
> multiple accesses which hit in a single cache line count as one ICACHE.HIT.  
> Specifically, the event counts when straight line code crosses the cache line 
> boundary, or when a branch target is to a new line, and that cache line is in 
> the ICache. This event counts differently than Intel processors based on 
> Silvermont microarchitecture.",
> +        "EventCode": "0x80",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ICACHE.HIT",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "References per ICache line that are available 
> in the ICache (hit). This event counts differently than Intel processors 
> based on Silvermont microarchitecture"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the Instruction Cache 
> (ICache)  for one or more bytes in an ICache Line and that cache line is not 
> in the ICache (miss).  The event strives to count on a cache line basis, so 
> that multiple accesses which miss in a single cache line count as one 
> ICACHE.MISS.  Specifically, the event counts when straight line code crosses 
> the cache line boundary, or when a branch target is to a new line, and that 
> cache line is not in the ICache. This event counts differently than Intel 
> processors based on Silvermont microarchitecture.",
> +        "EventCode": "0x80",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ICACHE.MISSES",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "References per ICache line that are not 
> available in the ICache (miss). This event counts differently than Intel 
> processors based on Silvermont microarchitecture"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts requests to the Instruction Cache 
> (ICache) for one or more bytes in an ICache Line.  The event strives to count 
> on a cache line basis, so that multiple fetches to a single cache line count 
> as one ICACHE.ACCESS.  Specifically, the event counts when accesses from 
> straight line code crosses the cache line boundary, or when a branch target 
> is to a new line.\r\nThis event counts differently than Intel processors 
> based on Silvermont microarchitecture.",
> +        "EventCode": "0x80",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x3",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ICACHE.ACCESSES",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "References per ICache line. This event counts 
> differently than Intel processors based on Silvermont microarchitecture"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times the Microcode 
> Sequencer (MS) starts a flow of uops from the MSROM. It does not count every 
> time a uop is read from the MSROM.  The most common case that this counts is 
> when a micro-coded instruction is encountered by the front end of the 
> machine.  Other cases include when an instruction encounters a fault, trap, 
> or microcode assist of any sort that initiates a flow of uops.  The event 
> will count MS startups for uops that are speculative, and subsequently 
> cleared by branch mispredict or a machine clear.",
> +        "EventCode": "0xE7",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MS_DECODED.MS_ENTRY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "MS decode starts"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times the prediction 
> (from the predecode cache) for instruction length is incorrect.",
> +        "EventCode": "0xE9",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DECODE_RESTRICTION.PREDECODE_WRONG",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Decode restrictions due to predicting wrong 
> instruction length"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/memory.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/memory.json
> new file mode 100644
> index 0000000..91e0815
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/memory.json
> @@ -0,0 +1,38 @@
> +[
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts when a memory load of a uop spans a 
> page boundary (a split) is retired.",
> +        "EventCode": "0x13",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MISALIGN_MEM_REF.LOAD_PAGE_SPLIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops that split a page (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts when a memory store of a uop spans a 
> page boundary (a split) is retired.",
> +        "EventCode": "0x13",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MISALIGN_MEM_REF.STORE_PAGE_SPLIT",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Store uops that split a page (Precise event 
> capable)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts machine clears due to memory ordering 
> issues.  This occurs when a snoop request happens and the machine is 
> uncertain if memory ordering will be preserved - as another core is in the 
> process of modifying the data.",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.MEMORY_ORDERING",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "Machine clears due to memory ordering issue"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/other.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/other.json
> new file mode 100644
> index 0000000..b860374
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/other.json
> @@ -0,0 +1,98 @@
> +[
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts cycles that fetch is stalled due to any 
> reason. That is, the decoder queue is able to accept bytes, but the fetch 
> unit is unable to provide bytes.  This will include cycles due to an ITLB 
> miss, ICache miss and other events.",
> +        "EventCode": "0x86",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "FETCH_STALL.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles code-fetch stalled due to any reason."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts cycles that fetch is stalled due to an 
> outstanding ITLB miss. That is, the decoder queue is able to accept bytes, 
> but the fetch unit is unable to provide bytes due to an ITLB miss.  Note: 
> this event is not the same as page walk cycles to retrieve an instruction 
> translation.",
> +        "EventCode": "0x86",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "FETCH_STALL.ITLB_FILL_PENDING_CYCLES",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles the code-fetch stalls and an ITLB miss 
> is outstanding."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of issue slots per core 
> cycle that were not consumed by the backend due to either a full resource  in 
> the backend (RESOURCE_FULL) or due to the processor recovering from some 
> event (RECOVERY).",
> +        "EventCode": "0xCA",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ISSUE_SLOTS_NOT_CONSUMED.ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Unfilled issue slots per cycle"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of issue slots per core 
> cycle that were not consumed because of a full resource in the backend.  
> Including but not limited to resources such as the Re-order Buffer (ROB), 
> reservation stations (RS), load/store buffers, physical registers, or any 
> other needed machine resource that is currently unavailable.   Note that uops 
> must be available for consumption in order for this event to fire.  If a uop 
> is not available (Instruction Queue is empty), this event will not count.",
> +        "EventCode": "0xCA",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ISSUE_SLOTS_NOT_CONSUMED.RESOURCE_FULL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Unfilled issue slots per cycle because of a 
> full resource in the backend"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of issue slots per core 
> cycle that were not consumed by the backend because allocation is stalled 
> waiting for a mispredicted jump to retire or other branch-like conditions 
> (e.g. the event is relevant during certain microcode flows).   Counts all 
> issue slots blocked while within this window including slots where uops were 
> not available in the Instruction Queue.",
> +        "EventCode": "0xCA",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ISSUE_SLOTS_NOT_CONSUMED.RECOVERY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Unfilled issue slots per cycle to recover"
> +    },
> +    {
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts hardware interrupts received by the 
> processor.",
> +        "EventCode": "0xCB",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "HW_INTERRUPTS.RECEIVED",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "203",
> +        "BriefDescription": "Hardware interrupts received"
> +    },
> +    {
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts the number of core cycles during which 
> interrupts are masked (disabled). Increments by 1 each core cycle that 
> EFLAGS.IF is 0, regardless of whether interrupts are pending or not.",
> +        "EventCode": "0xCB",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "HW_INTERRUPTS.MASKED",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles hardware interrupts are masked"
> +    },
> +    {
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts core cycles during which there are 
> pending interrupts, but interrupts are masked (EFLAGS.IF = 0).",
> +        "EventCode": "0xCB",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "HW_INTERRUPTS.PENDING_AND_MASKED",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles pending interrupts are masked"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/pipeline.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/pipeline.json
> new file mode 100644
> index 0000000..ccf1aed
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/pipeline.json
> @@ -0,0 +1,544 @@
> +[
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of instructions that retire 
> execution. For instructions that consist of multiple uops, this event counts 
> the retirement of the last uop of the instruction. The counter continues 
> counting during hardware interrupts, traps, and inside interrupt handlers.  
> This event uses fixed counter 0.  You cannot collect a PEBs record for this 
> event.",
> +        "EventCode": "0x00",
> +        "Counter": "Fixed counter 0",
> +        "UMask": "0x1",
> +        "PEBScounters": "32",
> +        "EventName": "INST_RETIRED.ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Instructions retired (Fixed event)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of core cycles while the 
> core is not in a halt state.  The core enters the halt state when it is 
> running the HLT instruction. In mobile systems the core frequency may change 
> from time to time. For this reason this event may have a changing ratio with 
> regards to time.  This event uses fixed counter 1.  You cannot collect a PEBs 
> record for this event.",
> +        "EventCode": "0x00",
> +        "Counter": "Fixed counter 1",
> +        "UMask": "0x2",
> +        "PEBScounters": "33",
> +        "EventName": "CPU_CLK_UNHALTED.CORE",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Core cycles when core is not halted  (Fixed 
> event)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of reference cycles that the 
> core is not in a halt state. The core enters the halt state when it is 
> running the HLT instruction.  In mobile systems the core frequency may change 
> from time.  This event is not affected by core frequency changes but counts 
> as if the core is running at the maximum frequency all the time.  This event 
> uses fixed counter 2.  You cannot collect a PEBs record for this event.",
> +        "EventCode": "0x00",
> +        "Counter": "Fixed counter 2",
> +        "UMask": "0x3",
> +        "PEBScounters": "34",
> +        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Reference cycles when core is not halted  
> (Fixed event)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts a load blocked from using a store 
> forward, but did not occur because the store data was not available at the 
> right time.  The forward might occur subsequently when the data is 
> available.",
> +        "EventCode": "0x03",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LD_BLOCKS.DATA_UNKNOWN",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads blocked due to store data not ready 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts a load blocked from using a store 
> forward because of an address/size mismatch, only one of the loads blocked 
> from each store will be counted.",
> +        "EventCode": "0x03",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LD_BLOCKS.STORE_FORWARD",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads blocked due to store forward restriction 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts loads that block because their address 
> modulo 4K matches a pending store.",
> +        "EventCode": "0x03",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LD_BLOCKS.4K_ALIAS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads blocked because address has 4k partial 
> address false dependence (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts loads blocked because they are unable 
> to find their physical address in the micro TLB (UTLB).",
> +        "EventCode": "0x03",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LD_BLOCKS.UTLB_MISS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads blocked because address in not in the 
> UTLB (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts anytime a load that retires is blocked 
> for any reason.",
> +        "EventCode": "0x03",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "LD_BLOCKS.ALL_BLOCK",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Loads blocked (Precise event capable)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts uops issued by the front end and 
> allocated into the back end of the machine.  This event counts uops that 
> retire as well as uops that were speculatively executed but didn't retire. 
> The sort of speculative uops that might be counted includes, but is not 
> limited to those uops issued in the shadow of a miss-predicted branch, those 
> uops that are inserted during an assist (such as for a denormal floating 
> point result), and (previously allocated) uops that might be canceled during 
> a machine clear.",
> +        "EventCode": "0x0E",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_ISSUED.ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Uops issued to the back end per cycle"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Core cycles when core is not halted.  This 
> event uses a (_P)rogrammable general purpose performance counter.",
> +        "EventCode": "0x3C",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CPU_CLK_UNHALTED.CORE_P",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Core cycles when core is not halted"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Reference cycles when core is not halted.  
> This event uses a (_P)rogrammable general purpose performance counter.",
> +        "EventCode": "0x3C",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CPU_CLK_UNHALTED.REF",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Reference cycles when core is not halted"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "This event used to measure front-end 
> inefficiencies. I.e. when front-end of the machine is not delivering uops to 
> the back-end and the back-end has is not stalled. This event can be used to 
> identify if the machine is truly front-end bound.  When this event occurs, it 
> is an indication that the front-end of the machine is operating at less than 
> its theoretical peak performance. Background: We can think of the processor 
> pipeline as being divided into 2 broader parts: Front-end and Back-end. 
> Front-end is responsible for fetching the instruction, decoding into uops in 
> machine understandable format and putting them into a uop queue to be 
> consumed by back end. The back-end then takes these uops, allocates the 
> required resources.  When all resources are ready, uops are executed. If the 
> back-end is not ready to accept uops from the front-end, then we do not want 
> to count these as front-end bottlenecks.  However, whenever we have 
> bottlenecks in the back-end, we w
>  ill have allocation unit stalls and eventually forcing the front-end to wait 
> until the back-end is ready to receive more uops. This event counts only when 
> back-end is requesting more uops and front-end is not able to provide them. 
> When 3 uops are requested and no uops are delivered, the event counts 3. When 
> 3 are requested, and only 1 is delivered, the event counts 2. When only 2 are 
> delivered, the event counts 1. Alternatively stated, the event will not count 
> if 3 uops are delivered, or if the back end is stalled and not requesting any 
> uops at all.  Counts indicate missed opportunities for the front-end to 
> deliver a uop to the back end. Some examples of conditions that cause 
> front-end efficiencies are: ICache misses, ITLB misses, and decoder 
> restrictions that limit the front-end bandwidth. Known Issues: Some uops 
> require multiple allocation slots.  These uops will not be charged as a front 
> end 'not delivered' opportunity, and will be regarded as a back end problem. 
> For example, the
>   INC instruction has one uop that requires 2 issue slots.  A stream of INC 
> instructions will not count as UOPS_NOT_DELIVERED, even though only one 
> instruction can be issued per clock.  The low uop issue rate for a stream of 
> INC instructions is considered to be a back end issue.",
> +        "EventCode": "0x9C",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_NOT_DELIVERED.ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Uops requested but not-delivered to the 
> back-end per cycle"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of instructions that retire 
> execution. For instructions that consist of multiple uops, this event counts 
> the retirement of the last uop of the instruction. The event continues 
> counting during hardware interrupts, traps, and inside interrupt handlers.  
> This is an architectural performance event.  This event uses a 
> (_P)rogrammable general purpose performance counter. *This event is Precise 
> Event capable:  The EventingRIP field in the PEBS record is precise to the 
> address of the instruction which caused the event.  Note: Because PEBS 
> records can be collected only on IA32_PMC0, only one event can use the PEBS 
> facility at a time.",
> +        "EventCode": "0xC0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "INST_RETIRED.ANY_P",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Instructions retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts INST_RETIRED.ANY using the Reduced Skid 
> PEBS feature that reduces the shadow in which events aren't counted allowing 
> for a more unbiased distribution of samples across instructions retired.",
> +        "EventCode": "0xC0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "EventName": "INST_RETIRED.PREC_DIST",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Instructions retired - using Reduced Skid PEBS 
> feature"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts uops which retired.",
> +        "EventCode": "0xC2",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_RETIRED.ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Uops retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts uops retired that are from the complex 
> flows issued by the micro-sequencer (MS).  Counts both the uops from a 
> micro-coded instruction, and the uops that might be generated from a 
> micro-coded assist.",
> +        "EventCode": "0xC2",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_RETIRED.MS",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "MS uops retired (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of floating point divide 
> uops retired.",
> +        "EventCode": "0xC2",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_RETIRED.FPDIV",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Floating point divide uops retired (Precise 
> Event Capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of integer divide uops 
> retired.",
> +        "EventCode": "0xC2",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "UOPS_RETIRED.IDIV",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Integer divide uops retired (Precise Event 
> Capable)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts machine clears for any reason.",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "All machine clears"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times that the processor 
> detects that a program is writing to a code section and has to perform a 
> machine clear because of that modification.  Self-modifying code (SMC) causes 
> a severe penalty in all Intel architecture processors.",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.SMC",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "Self-Modifying Code detected"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts machine clears due to floating point 
> (FP) operations needing assists.  For instance, if the result was a floating 
> point denormal, the hardware clears the pipeline and reissues uops to produce 
> the correct IEEE compliant denormal result.",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.FP_ASSIST",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "Machine clears due to FP assists"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts machine clears due to memory 
> disambiguation.  Memory disambiguation happens when a load which has been 
> issued conflicts with a previous unretired store in the pipeline whose 
> address was not known at issue time, but is later resolved to be the same as 
> the load address.",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.DISAMBIGUATION",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "Machine clears due to memory disambiguation"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times that the machines 
> clears due to a page fault. Covers both I-side and D-side(Loads/Stores) page 
> faults. A page fault occurs when either page is not present, or an access 
> violation",
> +        "EventCode": "0xC3",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x20",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MACHINE_CLEARS.PAGE_FAULT",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "Machines clear due to a page fault"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts branch instructions retired for all 
> branch types.  This is an architectural performance event.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired branch instructions (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts retired Jcc (Jump on Conditional 
> Code/Jump if Condition is Met) branch instructions retired, including both 
> when the branch was taken and when it was not taken.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x7e",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.JCC",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired conditional branch instructions 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts the number of taken branch instructions 
> retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x80",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.ALL_TAKEN_BRANCHES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired taken branch instructions (Precise 
> event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts far branch instructions retired.  This 
> includes far jump, far call and return, and Interrupt call and return.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xbf",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.FAR_BRANCH",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired far branch instructions (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts near indirect call or near indirect jmp 
> branch instructions retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xeb",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.NON_RETURN_IND",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired instructions of near indirect Jmp or 
> call (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts near return branch instructions 
> retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xf7",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.RETURN",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired near return instructions (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts near CALL branch instructions retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xf9",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.CALL",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired near call instructions (Precise event 
> capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts near indirect CALL branch instructions 
> retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xfb",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.IND_CALL",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired near indirect call instructions 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts near relative CALL branch instructions 
> retired.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xfd",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.REL_CALL",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired near relative call instructions 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts Jcc (Jump on Conditional Code/Jump if 
> Condition is Met) branch instructions retired that were taken and does not 
> count when the Jcc branch instruction were not taken.",
> +        "EventCode": "0xC4",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xfe",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_INST_RETIRED.TAKEN_JCC",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired conditional branch instructions that 
> were taken (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted branch instructions 
> retired including all branch types.",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted branch instructions 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted retired Jcc (Jump on 
> Conditional Code/Jump if Condition is Met) branch instructions retired, 
> including both when the branch was supposed to be taken and when it was not 
> supposed to be taken (but the processor predicted the opposite condition).",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x7e",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.JCC",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted conditional branch 
> instructions (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted branch instructions 
> retired that were near indirect call or near indirect jmp, where the target 
> address taken was not what the processor predicted.",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xeb",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.NON_RETURN_IND",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted instructions of near 
> indirect Jmp or near indirect call (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted near RET branch 
> instructions retired, where the return address taken was not what the 
> processor predicted.",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xf7",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.RETURN",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted near return instructions 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted near indirect CALL branch 
> instructions retired, where the target address taken was not what the 
> processor predicted.",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xfb",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.IND_CALL",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted near indirect call 
> instructions (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts mispredicted retired Jcc (Jump on 
> Conditional Code/Jump if Condition is Met) branch instructions retired that 
> were supposed to be taken but the processor predicted that it would not be 
> taken.",
> +        "EventCode": "0xC5",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0xfe",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BR_MISP_RETIRED.TAKEN_JCC",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Retired mispredicted conditional branch 
> instructions that were taken (Precise event capable)"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts core cycles if either divide unit is 
> busy.",
> +        "EventCode": "0xCD",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x0",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CYCLES_DIV_BUSY.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Cycles a divider is busy"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts core cycles the integer divide unit is 
> busy.",
> +        "EventCode": "0xCD",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CYCLES_DIV_BUSY.IDIV",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles the integer divide unit is busy"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts core cycles the floating point divide 
> unit is busy.",
> +        "EventCode": "0xCD",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "CYCLES_DIV_BUSY.FPDIV",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Cycles the FP divide unit is busy"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times a BACLEAR is 
> signaled for any reason, including, but not limited to indirect branch/call,  
> Jcc (Jump on Conditional Code/Jump if Condition is Met) branch, unconditional 
> branch/call, and returns.",
> +        "EventCode": "0xE6",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x1",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BACLEARS.ALL",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "BACLEARs asserted for any branch type"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts BACLEARS on return instructions.",
> +        "EventCode": "0xE6",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BACLEARS.RETURN",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "BACLEARs asserted for return branch"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts BACLEARS on Jcc (Jump on Conditional 
> Code/Jump if Condition is Met) branches.",
> +        "EventCode": "0xE6",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "BACLEARS.COND",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "BACLEARs asserted for conditional branch"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/goldmontplus/virtual-memory.json 
> b/tools/perf/pmu-events/arch/x86/goldmontplus/virtual-memory.json
> new file mode 100644
> index 0000000..0b53a3b
> --- /dev/null
> +++ b/tools/perf/pmu-events/arch/x86/goldmontplus/virtual-memory.json
> @@ -0,0 +1,218 @@
> +[
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> loads (including SW prefetches) whose address translations missed in all TLB 
> levels and were mapped to 4K pages.  The page walks can end with or without a 
> page fault.",
> +        "EventCode": "0x08",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_4K",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walk completed due to a demand load to a 
> 4K page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> loads (including SW prefetches) whose address translations missed in all TLB 
> levels and were mapped to 2M or 4M pages.  The page walks can end with or 
> without a page fault.",
> +        "EventCode": "0x08",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_2M_4M",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walk completed due to a demand load to a 
> 2M or 4M page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> loads (including SW prefetches) whose address translations missed in all TLB 
> levels and were mapped to 1GB pages.  The page walks can end with or without 
> a page fault.",
> +        "EventCode": "0x08",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_LOAD_MISSES.WALK_COMPLETED_1GB",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walk completed due to a demand load to a 
> 1GB page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts once per cycle for each page walk 
> occurring due to a load (demand data loads or SW prefetches). Includes cycles 
> spent traversing the Extended Page Table (EPT). Average cycles per walk can 
> be calculated by dividing by the number of walks.",
> +        "EventCode": "0x08",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_LOAD_MISSES.WALK_PENDING",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walks outstanding due to a demand load 
> every cycle."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> stores whose address translations missed in the TLB and were mapped to 4K 
> pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x49",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_4K",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to a demand data store 
> to a 4K page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> stores whose address translations missed in the TLB and were mapped to 2M or 
> 4M pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x49",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_2M_4M",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to a demand data store 
> to a 2M or 4M page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to demand data 
> stores whose address translations missed in the TLB and were mapped to 1GB 
> pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x49",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_STORE_MISSES.WALK_COMPLETED_1GB",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to a demand data store 
> to a 1GB page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts once per cycle for each page walk 
> occurring due to a demand data store. Includes cycles spent traversing the 
> Extended Page Table (EPT). Average cycles per walk can be calculated by 
> dividing by the number of walks.",
> +        "EventCode": "0x49",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "DTLB_STORE_MISSES.WALK_PENDING",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walks outstanding due to a demand data 
> store every cycle."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts once per cycle for each page walk only 
> while traversing the Extended Page Table (EPT), and does not count during the 
> rest of the translation.  The EPT is used for translating Guest-Physical 
> Addresses to Physical Addresses for Virtual Machine Monitors (VMMs).  Average 
> cycles per walk can be calculated by dividing the count by number of walks.",
> +        "EventCode": "0x4F",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "EPT.WALK_PENDING",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walks outstanding due to walking the EPT 
> every cycle"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts the number of times the machine was 
> unable to find a translation in the Instruction Translation Lookaside Buffer 
> (ITLB) for a linear address of an instruction fetch.  It counts when new 
> translation are filled into the ITLB.  The event is speculative in nature, 
> but will not count translations (page walks) that are begun and not finished, 
> or translations that are finished but not filled into the ITLB.",
> +        "EventCode": "0x81",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ITLB.MISS",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "ITLB misses"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to instruction 
> fetches whose address translations missed in the TLB and were mapped to 4K 
> pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x85",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x2",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ITLB_MISSES.WALK_COMPLETED_4K",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to an instruction fetch 
> in a 4K page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to instruction 
> fetches whose address translations missed in the TLB and were mapped to 2M or 
> 4M pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x85",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x4",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ITLB_MISSES.WALK_COMPLETED_2M_4M",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to an instruction fetch 
> in a 2M or 4M page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts page walks completed due to instruction 
> fetches whose address translations missed in the TLB and were mapped to 1GB 
> pages.  The page walks can end with or without a page fault.",
> +        "EventCode": "0x85",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x8",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ITLB_MISSES.WALK_COMPLETED_1GB",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "2000003",
> +        "BriefDescription": "Page walk completed due to an instruction fetch 
> in a 1GB page"
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts once per cycle for each page walk 
> occurring due to an instruction fetch. Includes cycles spent traversing the 
> Extended Page Table (EPT). Average cycles per walk can be calculated by 
> dividing by the number of walks.",
> +        "EventCode": "0x85",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x10",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "ITLB_MISSES.WALK_PENDING",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Page walks outstanding due to an instruction 
> fetch every cycle."
> +    },
> +    {
> +        "CollectPEBSRecord": "1",
> +        "PublicDescription": "Counts STLB flushes.  The TLBs are flushed on 
> instructions like INVLPG and MOV to CR3.",
> +        "EventCode": "0xBD",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x20",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "TLB_FLUSHES.STLB_ANY",
> +        "PDIR_COUNTER": "na",
> +        "SampleAfterValue": "20003",
> +        "BriefDescription": "STLB flushes"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts load uops retired that caused a DTLB 
> miss.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x11",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_LOADS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Load uops retired that missed the DTLB (Precise 
> event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts store uops retired that caused a DTLB 
> miss.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x12",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.DTLB_MISS_STORES",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Store uops retired that missed the DTLB 
> (Precise event capable)"
> +    },
> +    {
> +        "PEBS": "2",
> +        "CollectPEBSRecord": "2",
> +        "PublicDescription": "Counts uops retired that had a DTLB miss on 
> load, store or either.  Note that when two distinct memory operations to the 
> same page miss the DTLB, only one of them will be recorded as a DTLB miss.",
> +        "EventCode": "0xD0",
> +        "Counter": "0,1,2,3",
> +        "UMask": "0x13",
> +        "PEBScounters": "0,1,2,3",
> +        "EventName": "MEM_UOPS_RETIRED.DTLB_MISS",
> +        "SampleAfterValue": "200003",
> +        "BriefDescription": "Memory uops retired that missed the DTLB 
> (Precise event capable)"
> +    }
> +]
> \ No newline at end of file
> diff --git a/tools/perf/pmu-events/arch/x86/mapfile.csv 
> b/tools/perf/pmu-events/arch/x86/mapfile.csv
> index 4ea0683..fe1a2c4 100644
> --- a/tools/perf/pmu-events/arch/x86/mapfile.csv
> +++ b/tools/perf/pmu-events/arch/x86/mapfile.csv
> @@ -9,6 +9,7 @@ GenuineIntel-6-27,v4,bonnell,core
>  GenuineIntel-6-36,v4,bonnell,core
>  GenuineIntel-6-35,v4,bonnell,core
>  GenuineIntel-6-5C,v8,goldmont,core
> +GenuineIntel-6-7A,v1,goldmontplus,core
>  GenuineIntel-6-3C,v24,haswell,core
>  GenuineIntel-6-45,v24,haswell,core
>  GenuineIntel-6-46,v24,haswell,core
> -- 
> 2.7.4

Reply via email to