|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Copyright (c) 2012 Google, Inc
|
|
Packit |
577717 |
* Contributed by Stephane Eranian <eranian@gmail.com>
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
Packit |
577717 |
* of this software and associated documentation files (the "Software"), to deal
|
|
Packit |
577717 |
* in the Software without restriction, including without limitation the rights
|
|
Packit |
577717 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
Packit |
577717 |
* of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
Packit |
577717 |
* subject to the following conditions:
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* The above copyright notice and this permission notice shall be included in all
|
|
Packit |
577717 |
* copies or substantial portions of the Software.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
Packit |
577717 |
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
Packit |
577717 |
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
Packit |
577717 |
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
Packit |
577717 |
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
Packit |
577717 |
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* This file is part of libpfm, a performance monitoring support library for
|
|
Packit |
577717 |
* applications on Linux.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* PMU: snb_unc (Intel Sandy Bridge uncore PMU)
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const intel_x86_umask_t snb_unc_cbo_xsnp_response[]={
|
|
Packit |
577717 |
{ .uname = "MISS",
|
|
Packit |
577717 |
.udesc = "Number of snoop misses",
|
|
Packit |
577717 |
.ucode = 0x100,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "INVAL",
|
|
Packit |
577717 |
.udesc = "Number of snoop invalidates of a non-modified line",
|
|
Packit |
577717 |
.ucode = 0x200,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "HIT",
|
|
Packit |
577717 |
.udesc = "Number of snoop hits of a non-modified line",
|
|
Packit |
577717 |
.ucode = 0x400,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "HITM",
|
|
Packit |
577717 |
.udesc = "Number of snoop hits of a modified line",
|
|
Packit |
577717 |
.ucode = 0x800,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "INVAL_M",
|
|
Packit |
577717 |
.udesc = "Number of snoop invalidates of a modified line",
|
|
Packit |
577717 |
.ucode = 0x1000,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "ANY_SNP",
|
|
Packit |
577717 |
.udesc = "Number of snoops",
|
|
Packit |
577717 |
.ucode = 0x1f00,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "EXTERNAL_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on cross-core snoops initiated by this Cbox due to external snoop request",
|
|
Packit |
577717 |
.ucode = 0x2000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "XCORE_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on cross-core snoops initiated by this Cbox due to processor core memory request",
|
|
Packit |
577717 |
.ucode = 0x4000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "EVICTION_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on cross-core snoops initiated by this Cbox due to LLC eviction",
|
|
Packit |
577717 |
.ucode = 0x8000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const intel_x86_umask_t snb_unc_cbo_cache_lookup[]={
|
|
Packit |
577717 |
{ .uname = "STATE_M",
|
|
Packit |
577717 |
.udesc = "Number of LLC lookup requests for a line in modified state",
|
|
Packit |
577717 |
.ucode = 0x100,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "STATE_E",
|
|
Packit |
577717 |
.udesc = "Number of LLC lookup requests for a line in exclusive state",
|
|
Packit |
577717 |
.ucode = 0x200,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "STATE_S",
|
|
Packit |
577717 |
.udesc = "Number of LLC lookup requests for a line in shared state",
|
|
Packit |
577717 |
.ucode = 0x400,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "STATE_I",
|
|
Packit |
577717 |
.udesc = "Number of LLC lookup requests for a line in invalid state",
|
|
Packit |
577717 |
.ucode = 0x800,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "STATE_MESI",
|
|
Packit |
577717 |
.udesc = "Number of LLC lookup requests for a line",
|
|
Packit |
577717 |
.ucode = 0xf00,
|
|
Packit |
577717 |
.grpid = 0,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "READ_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on processor core initiated cacheable read requests",
|
|
Packit |
577717 |
.ucode = 0x1000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "WRITE_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on processor core initiated cacheable write requests",
|
|
Packit |
577717 |
.ucode = 0x2000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "EXTSNP_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on external snoop requests",
|
|
Packit |
577717 |
.ucode = 0x4000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .uname = "ANY_FILTER",
|
|
Packit |
577717 |
.udesc = "Filter on any IRQ or IPQ initiated requests including uncacheable, non-coherent requests",
|
|
Packit |
577717 |
.ucode = 0x8000,
|
|
Packit |
577717 |
.grpid = 1,
|
|
Packit |
577717 |
.uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const intel_x86_entry_t intel_snb_unc_cbo0_pe[]={
|
|
Packit |
577717 |
{ .name = "UNC_CLOCKTICKS",
|
|
Packit |
577717 |
.desc = "uncore clock ticks",
|
|
Packit |
577717 |
.cntmsk = 1ULL << 32,
|
|
Packit |
577717 |
.code = 0xff, /* perf_event pseudo encoding */
|
|
Packit |
577717 |
.flags = INTEL_X86_FIXED,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .name = "UNC_CBO_XSNP_RESPONSE",
|
|
Packit |
577717 |
.desc = "Snoop responses",
|
|
Packit |
577717 |
.modmsk = INTEL_SNB_UNC_ATTRS,
|
|
Packit |
577717 |
.cntmsk = 0xff,
|
|
Packit |
577717 |
.code = 0x22,
|
|
Packit |
577717 |
.numasks = LIBPFM_ARRAY_SIZE(snb_unc_cbo_xsnp_response),
|
|
Packit |
577717 |
.ngrp = 2,
|
|
Packit |
577717 |
.umasks = snb_unc_cbo_xsnp_response,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .name = "UNC_CBO_CACHE_LOOKUP",
|
|
Packit |
577717 |
.desc = "LLC cache lookups",
|
|
Packit |
577717 |
.modmsk = INTEL_SNB_UNC_ATTRS,
|
|
Packit |
577717 |
.cntmsk = 0xff,
|
|
Packit |
577717 |
.code = 0x34,
|
|
Packit |
577717 |
.numasks = LIBPFM_ARRAY_SIZE(snb_unc_cbo_cache_lookup),
|
|
Packit |
577717 |
.ngrp = 2,
|
|
Packit |
577717 |
.umasks = snb_unc_cbo_cache_lookup,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
};
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static const intel_x86_entry_t intel_snb_unc_cbo_pe[]={
|
|
Packit |
577717 |
{ .name = "UNC_CBO_XSNP_RESPONSE",
|
|
Packit |
577717 |
.desc = "Snoop responses (must provide a snoop type and filter)",
|
|
Packit |
577717 |
.modmsk = INTEL_SNB_UNC_ATTRS,
|
|
Packit |
577717 |
.cntmsk = 0xff,
|
|
Packit |
577717 |
.code = 0x22,
|
|
Packit |
577717 |
.numasks = LIBPFM_ARRAY_SIZE(snb_unc_cbo_xsnp_response),
|
|
Packit |
577717 |
.ngrp = 2,
|
|
Packit |
577717 |
.umasks = snb_unc_cbo_xsnp_response,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
{ .name = "UNC_CBO_CACHE_LOOKUP",
|
|
Packit |
577717 |
.desc = "LLC cache lookups",
|
|
Packit |
577717 |
.modmsk = INTEL_SNB_UNC_ATTRS,
|
|
Packit |
577717 |
.cntmsk = 0xff,
|
|
Packit |
577717 |
.code = 0x34,
|
|
Packit |
577717 |
.numasks = LIBPFM_ARRAY_SIZE(snb_unc_cbo_cache_lookup),
|
|
Packit |
577717 |
.ngrp = 2,
|
|
Packit |
577717 |
.umasks = snb_unc_cbo_cache_lookup,
|
|
Packit |
577717 |
},
|
|
Packit |
577717 |
};
|