Blame src/libpfm4/lib/events/intel_hswep_unc_ha_events.h

Packit 577717
/*
Packit 577717
 * Copyright (c) 2014 Google Inc. All rights reserved
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: hswep_unc_ha (Intel Haswell-EP HA uncore PMU)
Packit 577717
 */
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_directory_lookup[]={
Packit 577717
  { .uname = "NO_SNP",
Packit 577717
    .udesc  = "Snoop not needed",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "SNOOP",
Packit 577717
    .udesc  = "SNooop needed",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_bypass_imc[]={
Packit 577717
  { .uname = "TAKEN",
Packit 577717
    .udesc  = "Bypass taken",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "NOT_TAKEN",
Packit 577717
    .udesc  = "Bypass not taken",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_directory_update[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Counts any directory update",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "CLEAR",
Packit 577717
    .udesc  = "Directory clears",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SET",
Packit 577717
    .udesc  = "Directory set",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_hitme_hit[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "All requests",
Packit 577717
    .ucode  = 0xff00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "READ_OR_INVITOE",
Packit 577717
    .udesc  = "Number of hits with opcode RdCode, RdData, RdDataMigratory, RdInvOwn, RdCur or InvToE",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "WBMTOI",
Packit 577717
    .udesc  = "Number of hits with opcode WbToMtoI",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "ACKCNFLTWBI",
Packit 577717
    .udesc  = "Number of hits with opcode AckCnfltWbI",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "WBMTOE_OR_S",
Packit 577717
    .udesc  = "Number of hits with opcode WbMtoE or WbMtoS",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "HOM",
Packit 577717
    .udesc  = "Number of hits with HOM requests",
Packit 577717
    .ucode  = 0xf00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDI_REMOTE",
Packit 577717
    .udesc  = "Number of hits with opcode RspIFwd, RspIFwdWb for remore requests",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDI_LOCAL",
Packit 577717
    .udesc  = "Number of hits with opcode RspIFwd, RspIFwdWb for local requests",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "INVALS",
Packit 577717
    .udesc  = "Number of hits for invalidations",
Packit 577717
    .ucode  = 0x2600,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDS",
Packit 577717
    .udesc  = "Number of hits with opcode RsSFwd, RspSFwdWb",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  },
Packit 577717
  { .uname = "EVICTS",
Packit 577717
    .udesc  = "Number of hits for allocations",
Packit 577717
    .ucode  = 0x4200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALLOCS",
Packit 577717
    .udesc  = "Number of hits for allocations",
Packit 577717
    .ucode  = 0x7000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RSP",
Packit 577717
    .udesc  = "Number of hits with opcode RspI, RspIWb, RspSWb, RspCnflt, RspCnfltWbI",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_hitme_hit_pv_bits_set[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "All requests",
Packit 577717
    .ucode  = 0xff00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "READ_OR_INVITOE",
Packit 577717
    .udesc  = "Number of hits with opcode RdCode, RdData, RdDataMigratory, RdInvOwn, RdCur or InvToE",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "WBMTOI",
Packit 577717
    .udesc  = "Number of hits with opcode WbToMtoI",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "ACKCNFLTWBI",
Packit 577717
    .udesc  = "Number of hits with opcode AckCnfltWbI",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "WBMTOE_OR_S",
Packit 577717
    .udesc  = "Number of hits with opcode WbMtoE or WbMtoS",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "HOM",
Packit 577717
    .udesc  = "Number of hits with HOM requests",
Packit 577717
    .ucode  = 0xf00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDI_REMOTE",
Packit 577717
    .udesc  = "Number of hits with opcode RspIFwd, RspIFwdWb for remore requests",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDI_LOCAL",
Packit 577717
    .udesc  = "Number of hits with opcode RspIFwd, RspIFwdWb for local requests",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "RSPFWDS",
Packit 577717
    .udesc  = "Number of hits with opcode RsSFwd, RspSFwdWb",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  },
Packit 577717
  { .uname = "RSP",
Packit 577717
    .udesc  = "Number of hits with opcode RspI, RspIWb, RspSWb, RspCnflt, RspCnfltWbI",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_igr_no_credit_cycles[]={
Packit 577717
  { .uname = "AD_QPI0",
Packit 577717
    .udesc  = "AD to QPI link 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "AD_QPI1",
Packit 577717
    .udesc  = "AD to QPI link 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "BL_QPI0",
Packit 577717
    .udesc  = "BL to QPI link 0",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "BL_QPI1",
Packit 577717
    .udesc  = "BL to QPI link 1",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "AD_QPI2",
Packit 577717
    .udesc  = "AD to QPI link 2",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "BL_QPI2",
Packit 577717
    .udesc  = "BL to QPI link 2",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_imc_writes[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Counts all writes",
Packit 577717
    .ucode  = 0xf00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "FULL",
Packit 577717
    .udesc  = "Counts full line non ISOCH",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "PARTIAL",
Packit 577717
    .udesc  = "Counts partial non-ISOCH",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "FULL_ISOCH",
Packit 577717
    .udesc  = "Counts ISOCH full line",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "PARTIAL_ISOCH",
Packit 577717
    .udesc  = "Counts ISOCH partial",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_imc_reads[]={
Packit 577717
  { .uname = "NORMAL",
Packit 577717
    .udesc  = "Normal priority",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_requests[]={
Packit 577717
  { .uname = "READS",
Packit 577717
    .udesc  = "Counts incoming read requests. Good proxy for LLC read misses, incl. RFOs",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "READS_LOCAL",
Packit 577717
    .udesc  = "Counts incoming read requests coming from local socket. Good proxy for LLC read misses, incl. RFOs from the local socket",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "READS_REMOTE",
Packit 577717
    .udesc  = "Counts incoming read requests coming from remote socket. Good proxy for LLC read misses, incl. RFOs from the remote socket",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "WRITES",
Packit 577717
    .udesc  = "Counts incoming writes",
Packit 577717
    .ucode  = 0xc00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WRITES_LOCAL",
Packit 577717
    .udesc  = "Counts incoming writes from local socket",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "WRITES_REMOTE",
Packit 577717
    .udesc  = "Counts incoming writes from remote socket",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "INVITOE_LOCAL",
Packit 577717
    .udesc  = "Counts InvItoE coming from local socket",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "INVITOE_REMOTE",
Packit 577717
    .udesc  = "Counts InvItoE coming from remote socket",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_rpq_cycles_no_reg_credits[]={
Packit 577717
  { .uname = "CHN0",
Packit 577717
    .udesc  = "Channel 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CHN1",
Packit 577717
    .udesc  = "Channel 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CHN2",
Packit 577717
    .udesc  = "channel 2",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CHN3",
Packit 577717
    .udesc  = "Chanel 3",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_tad_requests_g0[]={
Packit 577717
  { .uname = "REGION0",
Packit 577717
    .udesc  = "Counts for TAD Region 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION1",
Packit 577717
    .udesc  = "Counts for TAD Region 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION2",
Packit 577717
    .udesc  = "Counts for TAD Region 2",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION3",
Packit 577717
    .udesc  = "Counts for TAD Region 3",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION4",
Packit 577717
    .udesc  = "Counts for TAD Region 4",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION5",
Packit 577717
    .udesc  = "Counts for TAD Region 5",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION6",
Packit 577717
    .udesc  = "Counts for TAD Region 6",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION7",
Packit 577717
    .udesc  = "Counts for TAD Region 7",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_tad_requests_g1[]={
Packit 577717
  { .uname = "REGION8",
Packit 577717
    .udesc  = "Counts for TAD Region 8",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION9",
Packit 577717
    .udesc  = "Counts for TAD Region 9",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION10",
Packit 577717
    .udesc  = "Counts for TAD Region 10",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REGION11",
Packit 577717
    .udesc  = "Counts for TAD Region 11",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_snoop_resp[]={
Packit 577717
  { .uname = "RSPI",
Packit 577717
    .udesc  = "Filters for snoop responses of RspI. RspI is returned when the remote cache does not have the data or when the remote cache silently evicts data (e.g. RFO hit non-modified line)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "RSPS",
Packit 577717
    .udesc  = "Filters for snoop responses of RspS. RspS is returned when the remote cache has the data but is not forwarding it. It is a way to let the requesting socket know that it cannot allocate the data in E-state",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "RSPIFWD",
Packit 577717
    .udesc  = "Filters for snoop responses of RspIFwd. RspIFwd is returned when the remote cache agent forwards data and the requesting agent is able to acquire the data in E or M state. This is commonly returned with RFO transacations. It can be either HitM or HitFE",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "RSPSFWD",
Packit 577717
    .udesc  = "Filters for snoop responses of RspSFwd. RspSFwd is returned when the remote cache agent forwards data  but holds on to its current copy. This is common for data and code reads that hit in a remote socket in E or F state",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "RSP_WB",
Packit 577717
    .udesc  = "Filters for snoop responses of RspIWB or RspSWB. This is returned when a non-RFO requests hits in M-state. Data and code reads can return either RspIWB or RspSWB depending on how the system has been configured. InvItoE transactions will also return RspIWB because they must acquire ownership",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "RSP_FWD_WB",
Packit 577717
    .udesc  = "Filters for snoop responses of RspxFwdxWB. This snoop response is only used in 4s systems. It is used when a snoop HITM in a remote caching agent and it directly forwards data to a requester and simultaneously returns data to the home to be written back to memory",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "RSPCNFLCT",
Packit 577717
    .udesc  = "Filters for snoop responses of RspConflict. This is returned when a snoop finds an existing outstanding transaction in a remote caching agent when it CMAs that caching agent. This triggers the conflict resolution hardware. This covers both RspConflct and RspCnflctWBI",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_ad_cycles_full[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Counts cycles full from both schedulers",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "SCHED0",
Packit 577717
    .udesc  = "Counts cycles full from scheduler bank 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SCHED1",
Packit 577717
    .udesc  = "Counts cycles full from scheduler bank 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_bl_occupancy[]={
Packit 577717
  { .uname = "SCHED0",
Packit 577717
    .udesc  = "Counts cycles full from scheduler bank 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SCHED1",
Packit 577717
    .udesc  = "Counts cycles full from scheduler bank 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_ak_cycles_full[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Counts cycles from both schedulers",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "SCHED0",
Packit 577717
    .udesc  = "Counts cycles from scheduler bank 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SCHED1",
Packit 577717
    .udesc  = "Counts cycles from scheduler bank 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_bl[]={
Packit 577717
  { .uname = "DRS_CACHE",
Packit 577717
    .udesc  = "Counts data being sent to the cache",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DRS_CORE",
Packit 577717
    .udesc  = "Counts data being sent directly to the requesting core",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DRS_QPI",
Packit 577717
    .udesc  = "Counts data being sent to a remote socket over QPI",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_osb[]={
Packit 577717
  { .uname = "REMOTE",
Packit 577717
    .udesc  = "Remote",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "READS_LOCAL",
Packit 577717
    .udesc  = "Local reads",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "INVITOE_LOCAL",
Packit 577717
    .udesc  = "Local InvItoE",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "CANCELLED",
Packit 577717
    .udesc  = "Cancelled due to D2C or Other",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "READS_LOCAL_USEFUL",
Packit 577717
    .udesc  = "Local reads - useful",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE_USEFUL",
Packit 577717
    .udesc  = "Remote - useful",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_osb_edr[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "All data returns",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL | INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "READS_LOCAL_I",
Packit 577717
    .udesc  = "Reads to local I",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "READS_REMOTE_I",
Packit 577717
    .udesc  = "Reads to remote I",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "READS_LOCAL_S",
Packit 577717
    .udesc  = "Reads to local S",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "READS_REMOTE_S",
Packit 577717
    .udesc  = "Reads to remote S",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_ring_ad_used[]={
Packit 577717
  { .uname = "CCW_EVEN",
Packit 577717
    .udesc  = "Counter-clockwise and even ring polarity",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "CCW_ODD",
Packit 577717
    .udesc  = "Counter-clockwise and odd ring polarity",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "CW_EVEN",
Packit 577717
    .udesc  = "Clockwise and even ring polarity",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "CW_ODD",
Packit 577717
    .udesc  = "Clockwise and odd ring polarity",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "CW",
Packit 577717
    .udesc  = "Clockwise with any polarity",
Packit 577717
    .ucode  = 0x3300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CCW",
Packit 577717
    .udesc  = "Counter-clockwise with any polarity",
Packit 577717
    .ucode  = 0xcc00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_snp_resp_recv_local[]={
Packit 577717
  { .uname = "RSPI",
Packit 577717
    .udesc  = "Filters for snoop responses of RspI. RspI is returned when the remote cache does not have the data or when the remote cache silently evicts data (e.g. RFO hit non-modified line)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "RSPS",
Packit 577717
    .udesc  = "Filters for snoop responses of RspS. RspS is returned when the remote cache has the data but is not forwarding it. It is a way to let the requesting socket know that it cannot allocate the data in E-state",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "RSPIFWD",
Packit 577717
    .udesc  = "Filters for snoop responses of RspIFwd. RspIFwd is returned when the remote cache agent forwards data and the requesting agent is able to acquire the data in E or M state. This is commonly returned with RFO transacations. It can be either HitM or HitFE",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "RSPSFWD",
Packit 577717
    .udesc  = "Filters for snoop responses of RspSFwd. RspSFwd is returned when the remote cache agent forwards data  but holds on to its current copy. This is common for data and code reads that hit in a remote socket in E or F state",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "RSP_WB",
Packit 577717
    .udesc  = "Filters for snoop responses of RspIWB or RspSWB. This is returned when a non-RFO requests hits in M-state. Data and code reads can return either RspIWB or RspSWB depending on how the system has been configured. InvItoE transactions will also return RspIWB because they must acquire ownership",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "RSP_FWD_WB",
Packit 577717
    .udesc  = "Filters for snoop responses of RspxFwdxWB. This snoop response is only used in 4s systems. It is used when a snoop HITM in a remote caching agent and it directly forwards data to a requester and simultaneously returns data to the home to be written back to memory",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "RSPCNFLCT",
Packit 577717
    .udesc  = "Filters for snoop responses of RspConflict. This is returned when a snoop finds an existing outstanding transaction in a remote caching agent when it CMAs that caching agent. This triggers the conflict resolution hardware. This covers both RspConflct and RspCnflctWBI",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  },
Packit 577717
  { .uname = "OTHER",
Packit 577717
    .udesc  = "Filters all other snoop responses",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_sbo0_credits_acquired[]={
Packit 577717
  { .uname = "AD",
Packit 577717
    .udesc  = "For AD ring",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "BL",
Packit 577717
    .udesc  = "For BL ring",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_snoops_rsp_after_data[]={
Packit 577717
  { .uname = "LOCAL",
Packit 577717
    .udesc  = "Local",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE",
Packit 577717
    .udesc  = "Remote",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_snoops_cycles_ne[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Local",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "LOCAL",
Packit 577717
    .udesc  = "Local",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE",
Packit 577717
    .udesc  = "Remote",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_ak[]={
Packit 577717
  { .uname = "NDR",
Packit 577717
    .udesc  = "Number of outbound NDR (non-data response) transactions send on the AK ring. AK NDR is used for messages to the local socket",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "CRD_CBO",
Packit 577717
    .udesc  = "Number of outbound CDR transactions send on the AK ring to CBO",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "CRD_QPI",
Packit 577717
    .udesc  = "Number of outbound CDR transactions send on the AK ring to QPI",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_stall_no_sbo_credit[]={
Packit 577717
  { .uname = "SBO0_AD",
Packit 577717
    .udesc  = "No credit for SBO0 AD Ring",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "SBO1_AD",
Packit 577717
    .udesc  = "No credit for SBO1 AD Ring",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
  { .uname = "SBO0_BL",
Packit 577717
    .udesc  = "No credit for SBO0 BL Ring",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "SBO1_BL",
Packit 577717
    .udesc  = "No credit for SBO1 BL Ring",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_tracker_occupancy[]={
Packit 577717
  { .uname = "READS_LOCAL",
Packit 577717
    .udesc  = "Local read requests",
Packit 577717
    .ucode  = 0x400,
Packit 577717
  },
Packit 577717
  { .uname = "READS_REMOTE",
Packit 577717
    .udesc  = "Remote read requests",
Packit 577717
    .ucode  = 0x800,
Packit 577717
  },
Packit 577717
  { .uname = "WRITES_LOCAL",
Packit 577717
    .udesc  = "Local write requests",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
  },
Packit 577717
  { .uname = "WRITES_REMOTE",
Packit 577717
    .udesc  = "Remote write requests",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
  },
Packit 577717
  { .uname = "INVITOE_LOCAL",
Packit 577717
    .udesc  = "Local InvItoE requests",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
  },
Packit 577717
  { .uname = "INVITOE_REMOTE",
Packit 577717
    .udesc  = "Remote InvItoE requests",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
  }
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t hswep_unc_h_txr_starved[]={
Packit 577717
  { .uname = "AK",
Packit 577717
    .udesc  = "For AD ring",
Packit 577717
    .ucode  = 0x100,
Packit 577717
  },
Packit 577717
  { .uname = "BL",
Packit 577717
    .udesc  = "For BL ring",
Packit 577717
    .ucode  = 0x200,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_entry_t intel_hswep_unc_h_pe[]={
Packit 577717
  { .name   = "UNC_H_CLOCKTICKS",
Packit 577717
    .desc   = "HA Uncore clockticks",
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x00,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_CONFLICT_CYCLES",
Packit 577717
    .desc = "Conflict Checks",
Packit 577717
    .code = 0xb,
Packit 577717
    .cntmsk = 0x2,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECT2CORE_COUNT",
Packit 577717
    .desc = "Direct2Core Messages Sent",
Packit 577717
    .code = 0x11,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECT2CORE_CYCLES_DISABLED",
Packit 577717
    .desc = "Cycles when Direct2Core was Disabled",
Packit 577717
    .code = 0x12,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECT2CORE_TXN_OVERRIDE",
Packit 577717
    .desc = "Number of Reads that had Direct2Core Overridden",
Packit 577717
    .code = 0x13,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECTORY_LOOKUP",
Packit 577717
    .desc = "Directory Lookups",
Packit 577717
    .code = 0xc,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_directory_lookup),
Packit 577717
    .umasks  = hswep_unc_h_directory_lookup
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECTORY_UPDATE",
Packit 577717
    .desc = "Directory Updates",
Packit 577717
    .code = 0xd,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_directory_update),
Packit 577717
    .umasks  = hswep_unc_h_directory_update
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_IGR_NO_CREDIT_CYCLES",
Packit 577717
    .desc = "Cycles without QPI Ingress Credits",
Packit 577717
    .code = 0x22,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_igr_no_credit_cycles),
Packit 577717
    .umasks  = hswep_unc_h_igr_no_credit_cycles
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_IMC_RETRY",
Packit 577717
    .desc = "Retry Events",
Packit 577717
    .code = 0x1e,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_IMC_WRITES",
Packit 577717
    .desc = "HA to IMC Full Line Writes Issued",
Packit 577717
    .code = 0x1a,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_imc_writes),
Packit 577717
    .umasks  = hswep_unc_h_imc_writes
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_IMC_READS",
Packit 577717
    .desc = "HA to IMC normal priority reads issued",
Packit 577717
    .code = 0x17,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_imc_reads),
Packit 577717
    .umasks  = hswep_unc_h_imc_reads
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_REQUESTS",
Packit 577717
    .desc = "Read and Write Requests",
Packit 577717
    .code = 0x1,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_requests),
Packit 577717
    .umasks  = hswep_unc_h_requests
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_RPQ_CYCLES_NO_REG_CREDITS",
Packit 577717
    .desc = "IMC RPQ Credits Empty",
Packit 577717
    .code = 0x15,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_rpq_cycles_no_reg_credits),
Packit 577717
    .umasks  = hswep_unc_h_rpq_cycles_no_reg_credits
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TAD_REQUESTS_G0",
Packit 577717
    .desc = "HA Requests to a TAD Region",
Packit 577717
    .code = 0x1b,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_tad_requests_g0),
Packit 577717
    .umasks  = hswep_unc_h_tad_requests_g0
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TAD_REQUESTS_G1",
Packit 577717
    .desc = "HA Requests to a TAD Region",
Packit 577717
    .code = 0x1c,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_tad_requests_g1),
Packit 577717
    .umasks  = hswep_unc_h_tad_requests_g1
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_AD_CYCLES_FULL",
Packit 577717
    .desc = "AD Egress Full",
Packit 577717
    .code = 0x2a,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_ad_cycles_full),
Packit 577717
    .umasks  = hswep_unc_h_txr_ad_cycles_full
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_AK_CYCLES_FULL",
Packit 577717
    .desc = "AK Egress Full",
Packit 577717
    .code = 0x32,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_ak_cycles_full),
Packit 577717
    .umasks  = hswep_unc_h_txr_ak_cycles_full
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_AK",
Packit 577717
    .desc = "Outbound Ring Transactions on AK",
Packit 577717
    .code = 0xe,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_ak),
Packit 577717
    .umasks  = hswep_unc_h_txr_ak
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_BL",
Packit 577717
    .desc = "Outbound DRS Ring Transactions to Cache",
Packit 577717
    .code = 0x10,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_bl),
Packit 577717
    .umasks  = hswep_unc_h_txr_bl
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_BL_CYCLES_FULL",
Packit 577717
    .desc = "BL Egress Full",
Packit 577717
    .code = 0x36,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_ak_cycles_full),
Packit 577717
    .umasks  = hswep_unc_h_txr_ak_cycles_full, /* identical to snbep_unc_h_txr_ak_cycles_full */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_WPQ_CYCLES_NO_REG_CREDITS",
Packit 577717
    .desc = "HA IMC CHN0 WPQ Credits Empty",
Packit 577717
    .code = 0x18,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_rpq_cycles_no_reg_credits),
Packit 577717
    .umasks  = hswep_unc_h_rpq_cycles_no_reg_credits, /* shared */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_BT_BYPASS",
Packit 577717
    .desc = "Backup Tracker bypass",
Packit 577717
    .code = 0x52,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_BYPASS_IMC",
Packit 577717
    .desc = "HA to IMC bypass",
Packit 577717
    .code = 0x14,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_bypass_imc),
Packit 577717
    .umasks  = hswep_unc_h_bypass_imc,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_BT_CYCLES_NE",
Packit 577717
    .desc = "Backup Tracker cycles not empty",
Packit 577717
    .code = 0x42,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_BT_OCCUPANCY",
Packit 577717
    .desc = "Backup Tracker inserts",
Packit 577717
    .code = 0x43,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_OSB",
Packit 577717
    .desc = "OSB snoop broadcast",
Packit 577717
    .code = 0x53,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_osb),
Packit 577717
    .umasks  = hswep_unc_h_osb,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_OSB_EDR",
Packit 577717
    .desc = "OSB early data return",
Packit 577717
    .code = 0x54,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_osb_edr),
Packit 577717
    .umasks  = hswep_unc_h_osb_edr,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_RING_AD_USED",
Packit 577717
    .desc = "AD ring in use",
Packit 577717
    .code = 0x3e,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_ring_ad_used),
Packit 577717
    .umasks  = hswep_unc_h_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_RING_AK_USED",
Packit 577717
    .desc = "AK ring in use",
Packit 577717
    .code = 0x3f,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_ring_ad_used), /* shared */
Packit 577717
    .umasks  = hswep_unc_h_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_RING_BL_USED",
Packit 577717
    .desc = "BL ring in use",
Packit 577717
    .code = 0x40,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_ring_ad_used), /* shared */
Packit 577717
    .umasks  = hswep_unc_h_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_DIRECTORY_LAT_OPT",
Packit 577717
    .desc = "Directory latency optimization data return path taken",
Packit 577717
    .code = 0x41,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
  },
Packit 577717
Packit 577717
  { .name = "UNC_H_SNOOP_RESP_RECV_LOCAL",
Packit 577717
    .desc = "Snoop responses received local",
Packit 577717
    .code = 0x60,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snp_resp_recv_local),
Packit 577717
    .umasks  = hswep_unc_h_snp_resp_recv_local,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SNP_RESP_RECV_LOCAL",
Packit 577717
    .desc = "Snoop responses received local",
Packit 577717
    .code = 0x60,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .equiv = "UNC_H_SNOOP_RESP_RECV_LOCAL",
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snp_resp_recv_local),
Packit 577717
    .umasks  = hswep_unc_h_snp_resp_recv_local,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_BL_OCCUPANCY",
Packit 577717
    .desc = "BL Egress occupancy",
Packit 577717
    .code = 0x34,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_bl_occupancy),
Packit 577717
    .umasks  = hswep_unc_h_txr_bl_occupancy,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SNOOP_RESP",
Packit 577717
    .desc = "Snoop responses received",
Packit 577717
    .code = 0x21,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoop_resp),
Packit 577717
    .umasks  = hswep_unc_h_snoop_resp
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_HITME_HIT",
Packit 577717
    .desc = "Hits in the HitMe cache",
Packit 577717
    .code = 0x71,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_hitme_hit),
Packit 577717
    .umasks  = hswep_unc_h_hitme_hit
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_HITME_HIT_PV_BITS_SET",
Packit 577717
    .desc = "Number of PV bits set on HitMe cache hits",
Packit 577717
    .code = 0x72,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_hitme_hit_pv_bits_set),
Packit 577717
    .umasks  = hswep_unc_h_hitme_hit_pv_bits_set
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_HITME_LOOKUP",
Packit 577717
    .desc = "Number of accesses to HitMe cache",
Packit 577717
    .code = 0x70,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_hitme_hit), /* shared with hswep_unc_h_hitme_hit */
Packit 577717
    .umasks  = hswep_unc_h_hitme_hit
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SBO0_CREDIT_ACQUIRED",
Packit 577717
    .desc = "SBO0 credits acquired",
Packit 577717
    .code = 0x68,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_sbo0_credits_acquired),
Packit 577717
    .umasks  = hswep_unc_h_sbo0_credits_acquired,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SBO0_CREDIT_OCCUPANCY",
Packit 577717
    .desc = "SBO0 credits occupancy",
Packit 577717
    .code = 0x6a,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_sbo0_credits_acquired),
Packit 577717
    .umasks  = hswep_unc_h_sbo0_credits_acquired, /* shared with hswep_unc_h_sbo0_credits_acquired */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SBO1_CREDIT_ACQUIRED",
Packit 577717
    .desc = "SBO1 credits acquired",
Packit 577717
    .code = 0x69,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_sbo0_credits_acquired),
Packit 577717
    .umasks  = hswep_unc_h_sbo0_credits_acquired,/* shared with hswep_unc_h_sbo0_credits_acquired */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SBO0_CREDIT_OCCUPANCY",
Packit 577717
    .desc = "SBO1 credits occupancy",
Packit 577717
    .code = 0x6b,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_sbo0_credits_acquired),
Packit 577717
    .umasks  = hswep_unc_h_sbo0_credits_acquired,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SNOOPS_RSP_AFTER_DATA",
Packit 577717
    .desc = "Number of reads when the snoops was on the critical path to the data return",
Packit 577717
    .code = 0xa,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoops_rsp_after_data),
Packit 577717
    .umasks  = hswep_unc_h_snoops_rsp_after_data,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SNOOPS_CYCLES_NE",
Packit 577717
    .desc = "Number of cycles when one or more snoops are outstanding",
Packit 577717
    .code = 0x8,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoops_cycles_ne),
Packit 577717
    .umasks  = hswep_unc_h_snoops_cycles_ne,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_SNOOPS_OCCUPANCY",
Packit 577717
    .desc = "Tracker snoops outstanding accumulator",
Packit 577717
    .code = 0x9,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoops_rsp_after_data),
Packit 577717
    .umasks  = hswep_unc_h_snoops_rsp_after_data, /* shared */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_STALL_NO_SBO_CREDIT",
Packit 577717
    .desc = "Stalls on no SBO credits",
Packit 577717
    .code = 0x6c,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_stall_no_sbo_credit),
Packit 577717
    .umasks  = hswep_unc_h_stall_no_sbo_credit,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TRACKER_CYCLES_NE",
Packit 577717
    .desc = "Tracker cycles not empty",
Packit 577717
    .code = 0x3,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoops_cycles_ne),
Packit 577717
    .umasks  = hswep_unc_h_snoops_cycles_ne, /* shared */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TRACKER_OCCUPANCY",
Packit 577717
    .desc = "Tracker occupancy accumulator",
Packit 577717
    .code = 0x4,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_tracker_occupancy),
Packit 577717
    .umasks  = hswep_unc_h_tracker_occupancy,
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TRACKER_PENDING_OCCUPANCY",
Packit 577717
    .desc = "Data pending occupancy accumulator",
Packit 577717
    .code = 0x5,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_snoops_rsp_after_data),
Packit 577717
    .umasks  = hswep_unc_h_snoops_rsp_after_data, /* shared */
Packit 577717
  },
Packit 577717
  { .name = "UNC_H_TXR_STARVED",
Packit 577717
    .desc = "Injection starvation",
Packit 577717
    .code = 0x6d,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = HSWEP_UNC_HA_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(hswep_unc_h_txr_starved),
Packit 577717
    .umasks  = hswep_unc_h_txr_starved,
Packit 577717
  },
Packit 577717
};