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

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: snbep_unc_cbo (Intel SandyBridge-EP C-Box uncore PMU)
Packit 577717
 */
Packit 577717
Packit 577717
#define CBO_FILT_MESIF(a, b, c, d) \
Packit 577717
   { .uname  = "STATE_"#a,\
Packit 577717
     .udesc  = #b" cacheline state",\
Packit 577717
     .ufilters[0] = 1ULL << (18 + (c)),\
Packit 577717
     .grpid = d, \
Packit 577717
   }
Packit 577717
Packit 577717
#define CBO_FILT_MESIFS(d) \
Packit 577717
   CBO_FILT_MESIF(I, Invalid, 0, d), \
Packit 577717
   CBO_FILT_MESIF(S, Shared, 1, d), \
Packit 577717
   CBO_FILT_MESIF(E, Exclusive, 2, d), \
Packit 577717
   CBO_FILT_MESIF(M, Modified, 3, d), \
Packit 577717
   CBO_FILT_MESIF(F, Forward, 4, d), \
Packit 577717
   { .uname  = "STATE_MESIF",\
Packit 577717
     .udesc  = "Any cache line state",\
Packit 577717
     .ufilters[0] = 0x1fULL << 18,\
Packit 577717
     .grpid = d, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL, \
Packit 577717
   }
Packit 577717
Packit 577717
#define CBO_FILT_OPC(d) \
Packit 577717
   { .uname  = "OPC_RFO",\
Packit 577717
     .udesc  = "Demand data RFO (combine with any OPCODE umask)",\
Packit 577717
     .ufilters[0] = 0x180ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_CRD",\
Packit 577717
     .udesc  = "Demand code read (combine with any OPCODE umask)",\
Packit 577717
     .ufilters[0] = 0x181ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_DRD",\
Packit 577717
     .udesc  = "Demand data read (combine with any OPCODE umask)",\
Packit 577717
     .ufilters[0] = 0x182ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PRD",\
Packit 577717
     .udesc  = "Partial reads (UC) (combine with any OPCODE umask)",\
Packit 577717
     .ufilters[0] = 0x187ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_WCILF",\
Packit 577717
     .udesc  = "Full Stream store (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x18cULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_WCIL",\
Packit 577717
     .udesc  = "Partial Stream store (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x18dULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PF_RFO",\
Packit 577717
     .udesc  = "Prefetch RFO into LLC but do not pass to L2 (includes hints) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x190ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PF_CODE",\
Packit 577717
     .udesc  = "Prefetch code into LLC but do not pass to L2 (includes hints) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x191ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PF_DATA",\
Packit 577717
     .udesc  = "Prefetch data into LLC but do not pass to L2 (includes hints) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x192ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCIWILF",\
Packit 577717
     .udesc  = "PCIe write (non-allocating) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x194ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCIPRD",\
Packit 577717
     .udesc  = "PCIe UC read (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x195ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCIITOM",\
Packit 577717
     .udesc  = "PCIe write (allocating) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x19cULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCIRDCUR",\
Packit 577717
     .udesc  = "PCIe read current (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x19eULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_WBMTOI",\
Packit 577717
     .udesc  = "Request writeback modified invalidate line (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1c4ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_WBMTOE",\
Packit 577717
     .udesc  = "Request writeback modified set to exclusive (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1c5ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_ITOM",\
Packit 577717
     .udesc  = "Request invalidate line (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1c8ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCINSRD",\
Packit 577717
     .udesc  = "PCIe non-snoop read (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1e4ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCINSWR",\
Packit 577717
     .udesc  = "PCIe non-snoop write (partial) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1e5ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }, \
Packit 577717
   { .uname  = "OPC_PCINSWRF",\
Packit 577717
     .udesc  = "PCIe non-snoop write (full) (combine with any OPCODE umask)", \
Packit 577717
     .ufilters[0] = 0x1e6ULL << 23, \
Packit 577717
     .uflags = INTEL_X86_NCOMBO, \
Packit 577717
     .grpid = d, \
Packit 577717
   }
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_llc_lookup[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Any request",
Packit 577717
     .grpid  = 0,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .ucode = 0x1f00,
Packit 577717
   },
Packit 577717
   { .uname  = "DATA_READ",
Packit 577717
     .udesc  = "Data read requests",
Packit 577717
     .grpid  = 0,
Packit 577717
     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .ucode = 0x300,
Packit 577717
   },
Packit 577717
   { .uname  = "WRITE",
Packit 577717
     .udesc  = "Write requests. Includes all write transactions (cached, uncached)",
Packit 577717
     .grpid  = 0,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .ucode = 0x500,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_SNOOP",
Packit 577717
     .udesc  = "External snoop request",
Packit 577717
     .grpid  = 0,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .ucode = 0x900,
Packit 577717
   },
Packit 577717
   { .uname  = "NID",
Packit 577717
     .udesc  = "Match a given RTID destination NID (must provide nf=X modifier)",
Packit 577717
     .uflags = INTEL_X86_NCOMBO | INTEL_X86_GRP_DFL_NONE,
Packit 577717
     .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
     .grpid  = 1,
Packit 577717
     .ucode = 0x4100,
Packit 577717
   },
Packit 577717
   CBO_FILT_MESIFS(2),
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_llc_victims[]={
Packit 577717
   { .uname  = "M_STATE",
Packit 577717
     .udesc  = "Lines in M state",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "Lines in E state",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "Lines in S state",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "MISS",
Packit 577717
     .udesc  = "TBD",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
   { .uname  = "NID",
Packit 577717
     .udesc  = "Victimized Lines matching the NID filter (must provide nf=X modifier)",
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
     .ucode = 0x4000,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_misc[]={
Packit 577717
   { .uname  = "RSPI_WAS_FSE",
Packit 577717
     .udesc  = "Silent snoop eviction",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "WC_ALIASING",
Packit 577717
     .udesc  = "Write combining aliasing",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "STARTED",
Packit 577717
     .udesc  = "TBD",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_HIT_S",
Packit 577717
     .udesc  = "RFO hits in S state",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_ring_ad_used[]={
Packit 577717
   { .uname  = "UP_EVEN",
Packit 577717
     .udesc  = "Up and Even ring polarity filter",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "UP_ODD",
Packit 577717
     .udesc  = "Up and odd ring polarity filter",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "DOWN_EVEN",
Packit 577717
     .udesc  = "Down and even ring polarity filter",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "DOWN_ODD",
Packit 577717
     .udesc  = "Down and odd ring polarity filter",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_ring_bounces[]={
Packit 577717
   { .uname  = "AK_CORE",
Packit 577717
     .udesc  = "Acknowledgment to core",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "BL_CORE",
Packit 577717
     .udesc  = "Data response to core",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "IV_CORE",
Packit 577717
     .udesc  = "Snoops of processor cache",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_ring_iv_used[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Any filter",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags = INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_rxr_ext_starved[]={
Packit 577717
   { .uname  = "IRQ",
Packit 577717
     .udesc  = "Irq externally starved, therefore blocking the IPQ",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "IPQ",
Packit 577717
     .udesc  = "IPQ externally starved, therefore blocking the IRQ",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "ISMQ",
Packit 577717
     .udesc  = "ISMQ externally starved, therefore blocking both IRQ and IPQ",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "ISMQ_BIDS",
Packit 577717
     .udesc  = "Number of time the ISMQ bids",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_rxr_inserts[]={
Packit 577717
  { .uname = "IPQ",
Packit 577717
    .udesc  = "IPQ",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IRQ",
Packit 577717
    .udesc  = "IRQ",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IRQ_REJECTED",
Packit 577717
    .udesc  = "IRQ rejected",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "VFIFO",
Packit 577717
    .udesc  = "Counts the number of allocated into the IRQ ordering FIFO",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_rxr_ipq_retry[]={
Packit 577717
  { .uname = "ADDR_CONFLICT",
Packit 577717
    .udesc  = "Address conflict",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Any Reject",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "FULL",
Packit 577717
    .udesc  = "No Egress credits",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "QPI_CREDITS",
Packit 577717
    .udesc  = "No QPI credits",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_rxr_irq_retry[]={
Packit 577717
  { .uname = "ADDR_CONFLICT",
Packit 577717
    .udesc  = "Address conflict",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Any reject",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "FULL",
Packit 577717
    .udesc  = "No Egress credits",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "QPI_CREDITS",
Packit 577717
    .udesc  = "No QPI credits",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RTID",
Packit 577717
    .udesc  = "No RTIDs",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_rxr_ismq_retry[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Any reject",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "FULL",
Packit 577717
    .udesc  = "No Egress credits",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IIO_CREDITS",
Packit 577717
    .udesc  = "No IIO credits",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "QPI_CREDITS",
Packit 577717
    .udesc  = "NO QPI credits",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RTID",
Packit 577717
    .udesc  = "No RTIDs",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_tor_inserts[]={
Packit 577717
  { .uname = "EVICTION",
Packit 577717
    .udesc  = "Number of Evictions transactions inserted into TOR",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "MISS_ALL",
Packit 577717
    .udesc  = "Number of miss requests inserted into the TOR",
Packit 577717
    .ucode  = 0xa00,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "MISS_OPCODE",
Packit 577717
    .udesc  = "Number of miss transactions inserted into the TOR that match an opcode (must provide opc_* umask)",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NID_ALL",
Packit 577717
    .udesc  = "Number of NID-matched transactions inserted into the TOR (must provide nf=X modifier)",
Packit 577717
    .ucode  = 0x4800,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_EVICTION",
Packit 577717
    .udesc  = "Number of NID-matched eviction transactions inserted into the TOR (must provide nf=X modifier)",
Packit 577717
    .ucode  = 0x4400,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_MISS_ALL",
Packit 577717
    .udesc  = "Number of NID-matched miss transactions that were inserted into the TOR (must provide nf=X modifier)",
Packit 577717
    .ucode  = 0x4a00,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_MISS_OPCODE",
Packit 577717
    .udesc  = "Number of NID and opcode matched miss transactions inserted into the TOR (must provide opc_* umask and nf=X modifier)",
Packit 577717
    .ucode  = 0x4300,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NID_OPCODE",
Packit 577717
    .udesc  = "Number of transactions inserted into the TOR that match a NID and opcode (must provide opc_* umask and nf=X modifier)",
Packit 577717
    .ucode  = 0x4100,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NID_WB",
Packit 577717
    .udesc  = "Number of NID-matched write back transactions inserted into the TOR (must provide nf=X modifier)",
Packit 577717
    .ucode  = 0x5000,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "OPCODE",
Packit 577717
    .udesc  = "Number of transactions inserted into the TOR that match an opcode (must provide opc_* umask)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WB",
Packit 577717
    .udesc  = "Number of write transactions inserted into the TOR",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  CBO_FILT_OPC(1)
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_tor_occupancy[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "All valid TOR entries",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "EVICTION",
Packit 577717
    .udesc  = "Number of outstanding eviction transactions in the TOR",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "MISS_ALL",
Packit 577717
    .udesc  = "Number of outstanding miss requests in the TOR",
Packit 577717
    .ucode  = 0xa00,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "MISS_OPCODE",
Packit 577717
    .udesc  = "Number of TOR entries that match a NID and an opcode (must provide opc_* umask)",
Packit 577717
    .ucode  = 0x300,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NID_ALL",
Packit 577717
    .udesc  = "Number of NID-matched outstanding requests in the TOR (must provide nf=X modifier)",
Packit 577717
    .ucode  = 0x4800,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_EVICTION",
Packit 577717
    .udesc  = "Number of NID-matched outstanding requests in the TOR (must provide a nf=X modifier)",
Packit 577717
    .ucode  = 0x4400,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_MISS_ALL",
Packit 577717
    .udesc  = "Number of NID-matched outstanding miss requests in the TOR (must provide a nf=X modifier)",
Packit 577717
    .ucode  = 0x4a00,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_EXCL_GRP_GT,
Packit 577717
  },
Packit 577717
  { .uname = "NID_MISS_OPCODE",
Packit 577717
    .udesc  = "Number of NID-matched outstanding miss requests in the TOR that an opcode (must provide nf=X modifier and opc_* umask)",
Packit 577717
    .ucode  = 0x4300,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NID_OPCODE",
Packit 577717
    .udesc  = "Number of NID-matched TOR entries that an opcode (must provide nf=X modifier and opc_* umask)",
Packit 577717
    .ucode  = 0x4100,
Packit 577717
    .grpid  = 0,
Packit 577717
    .umodmsk_req = _SNBEP_UNC_ATTR_NF,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "OPCODE",
Packit 577717
    .udesc  = "Number of TOR entries that match an opcode (must provide opc_* umask)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .grpid  = 0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  CBO_FILT_OPC(1)
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t snbep_unc_c_txr_inserts[]={
Packit 577717
  { .uname = "AD_CACHE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Cachebo to AD ring",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "AK_CACHE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Cachebo to AK ring",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "BL_CACHE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Cachebo to BL ring",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IV_CACHE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Cachebo to IV ring",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "AD_CORE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Corebo to AD ring",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "AK_CORE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Corebo to AK ring",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "BL_CORE",
Packit 577717
    .udesc  = "Counts the number of ring transactions from Corebo to BL ring",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_entry_t intel_snbep_unc_c_pe[]={
Packit 577717
  { .name   = "UNC_C_CLOCKTICKS",
Packit 577717
    .desc   = "C-box Uncore clockticks",
Packit 577717
    .modmsk = 0x0,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x00,
Packit 577717
    .flags = INTEL_X86_FIXED,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_COUNTER0_OCCUPANCY",
Packit 577717
    .desc   = "Counter 0 occupancy. Counts the occupancy related information by filtering CB0 occupancy count captured in counter 0.",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0xe,
Packit 577717
    .code = 0x1f,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_ISMQ_DRD_MISS_OCC",
Packit 577717
    .desc   = "TBD",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x21,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_LLC_LOOKUP",
Packit 577717
    .desc   = "Cache lookups. Counts number of times the LLC is accessed from L2 for code, data, prefetches (Must set filter mask bit 0 and select )",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_NID_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x34,
Packit 577717
    .ngrp = 3,
Packit 577717
    .flags = INTEL_X86_NO_AUTOENCODE,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_llc_lookup),
Packit 577717
    .umasks = snbep_unc_c_llc_lookup,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_LLC_VICTIMS",
Packit 577717
    .desc   = "Lines victimized",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_NID_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x37,
Packit 577717
    .flags = INTEL_X86_NO_AUTOENCODE,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_llc_victims),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_llc_victims,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_MISC",
Packit 577717
    .desc   = "Miscellaneous C-Box events",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x39,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_misc),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_misc,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_AD_USED",
Packit 577717
    .desc   = "Address ring in use. Counts number of cycles ring is being used at this ring stop",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0xc,
Packit 577717
    .code = 0x1b,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_ring_ad_used),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_AK_USED",
Packit 577717
    .desc   = "Acknowledgment ring in use. Counts number of cycles ring is being used at this ring stop",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0xc,
Packit 577717
    .code = 0x1c,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_ring_ad_used), /* identical to RING_AD_USED */
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_BL_USED",
Packit 577717
    .desc   = "Bus or Data ring in use. Counts number of cycles ring is being used at this ring stop",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0xc,
Packit 577717
    .code = 0x1d,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_ring_ad_used), /* identical to RING_AD_USED */
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_ring_ad_used,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_BOUNCES",
Packit 577717
    .desc   = "Number of LLC responses that bounced in the ring",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x05,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_ring_bounces),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_ring_bounces,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_IV_USED",
Packit 577717
    .desc   = "Invalidate ring in use. Counts number of cycles ring is being used at this ring stop",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0xc,
Packit 577717
    .code = 0x1e,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_ring_iv_used),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_ring_iv_used,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RING_SRC_THRTL",
Packit 577717
    .desc   = "TDB",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x07,
Packit 577717
  },
Packit 577717
  { .name   = "UNC_C_RXR_EXT_STARVED",
Packit 577717
    .desc   = "Ingress arbiter blocking cycles",
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .code = 0x12,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_ext_starved),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = snbep_unc_c_rxr_ext_starved,
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_RXR_INSERTS",
Packit 577717
    .desc = "Ingress Allocations",
Packit 577717
    .code = 0x13,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_inserts),
Packit 577717
    .umasks  = snbep_unc_c_rxr_inserts
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_RXR_IPQ_RETRY",
Packit 577717
    .desc = "Probe Queue Retries",
Packit 577717
    .code = 0x31,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_ipq_retry),
Packit 577717
    .umasks  = snbep_unc_c_rxr_ipq_retry
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_RXR_IRQ_RETRY",
Packit 577717
    .desc = "Ingress Request Queue Rejects",
Packit 577717
    .code = 0x32,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_irq_retry),
Packit 577717
    .umasks  = snbep_unc_c_rxr_irq_retry
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_RXR_ISMQ_RETRY",
Packit 577717
    .desc = "ISMQ Retries",
Packit 577717
    .code = 0x33,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_ismq_retry),
Packit 577717
    .umasks  = snbep_unc_c_rxr_ismq_retry
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_RXR_OCCUPANCY",
Packit 577717
    .desc = "Ingress Occupancy",
Packit 577717
    .code = 0x11,
Packit 577717
    .cntmsk = 0x1,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_rxr_inserts),
Packit 577717
    .umasks  = snbep_unc_c_rxr_inserts, /* identical to snbep_unc_c_rxr_inserts */
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_TOR_INSERTS",
Packit 577717
    .desc = "TOR Inserts",
Packit 577717
    .code = 0x35,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 2,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_NID_ATTRS,
Packit 577717
    .flags  = INTEL_X86_NO_AUTOENCODE,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_tor_inserts),
Packit 577717
    .umasks  = snbep_unc_c_tor_inserts
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_TOR_OCCUPANCY",
Packit 577717
    .desc = "TOR Occupancy",
Packit 577717
    .code = 0x36,
Packit 577717
    .cntmsk = 0x1,
Packit 577717
    .ngrp = 2,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_NID_ATTRS,
Packit 577717
    .flags  = INTEL_X86_NO_AUTOENCODE,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_tor_occupancy),
Packit 577717
    .umasks  = snbep_unc_c_tor_occupancy
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_TXR_ADS_USED",
Packit 577717
    .desc = "Egress events",
Packit 577717
    .code = 0x04,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
  },
Packit 577717
  { .name = "UNC_C_TXR_INSERTS",
Packit 577717
    .desc = "Egress allocations",
Packit 577717
    .code = 0x02,
Packit 577717
    .cntmsk = 0x3,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = SNBEP_UNC_CBO_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(snbep_unc_c_txr_inserts),
Packit 577717
    .umasks  = snbep_unc_c_txr_inserts
Packit 577717
  },
Packit 577717
};