|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* pfmlib_intel_snbep_unc_priv.c : Intel SandyBridge/IvyBridge-EP common definitions
|
|
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 |
#ifndef __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__
|
|
Packit |
577717 |
#define __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Intel x86 specific pmu flags (pmu->flags 16 MSB)
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
#define INTEL_PMU_FL_UNC_OCC 0x10000 /* PMU has occupancy counter filters */
|
|
Packit |
577717 |
#define INTEL_PMU_FL_UNC_CBO 0x20000 /* PMU is Cbox */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_E 0
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_I 1
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_T8 2
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_T5 3
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_TF 4
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_CF 5
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_NF 6 /* for filter0 */
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_FF 7
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_A 8
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_NF1 9 /* for filter1 */
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_ISOC 10 /* isochronous */
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_NC 11 /* non-coherent */
|
|
Packit |
577717 |
#define SNBEP_UNC_ATTR_CF1 12 /* core-filter hswep */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_I (1 << SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_E (1 << SNBEP_UNC_ATTR_E)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_T8 (1 << SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_T5 (1 << SNBEP_UNC_ATTR_T5)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_TF (1 << SNBEP_UNC_ATTR_TF)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_CF (1 << SNBEP_UNC_ATTR_CF)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_NF (1 << SNBEP_UNC_ATTR_NF)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_FF (1 << SNBEP_UNC_ATTR_FF)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_A (1 << SNBEP_UNC_ATTR_A)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_NF1 (1 << SNBEP_UNC_ATTR_NF1)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_ISOC (1 << SNBEP_UNC_ATTR_ISOC)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_NC (1 << SNBEP_UNC_ATTR_NC)
|
|
Packit |
577717 |
#define _SNBEP_UNC_ATTR_CF1 (1 << SNBEP_UNC_ATTR_CF1)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_IRP_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_IRP_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8|_SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_IRP_ATTRS HSWEP_UNC_IRP_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_R3QPI_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_R3QPI_ATTRS SNBEP_UNC_R3QPI_ATTRS
|
|
Packit |
577717 |
#define BDX_UNC_R3QPI_ATTRS SNBEP_UNC_R3QPI_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_R3QPI_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_R2PCIE_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_R2PCIE_ATTRS SNBEP_UNC_R2PCIE_ATTRS
|
|
Packit |
577717 |
#define BDX_UNC_R2PCIE_ATTRS SNBEP_UNC_R2PCIE_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_R2PCIE_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_QPI_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_QPI_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_QPI_ATTRS SNBEP_UNC_QPI_ATTRS
|
|
Packit |
577717 |
#define BDX_UNC_QPI_ATTRS SNBEP_UNC_QPI_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_UBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_UBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_UBO_ATTRS SNBEP_UNC_UBO_ATTRS
|
|
Packit |
577717 |
#define BDX_UNC_UBO_ATTRS SNBEP_UNC_UBO_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_PCU_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T5)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_PCU_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T5)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_PCU_ATTRS SNBEP_UNC_PCU_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_PCU_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_PCU_BAND_ATTRS \
|
|
Packit |
577717 |
(SNBEP_UNC_PCU_ATTRS | _SNBEP_UNC_ATTR_FF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_PCU_BAND_ATTRS \
|
|
Packit |
577717 |
(IVBEP_UNC_PCU_ATTRS | _SNBEP_UNC_ATTR_FF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_PCU_BAND_ATTRS SNBEP_UNC_PCU_BAND_ATTRS
|
|
Packit |
577717 |
#define BDX_UNC_PCU_BAND_ATTRS SNBEP_UNC_PCU_BAND_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_IMC_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_IMC_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_IMC_ATTRS SNBEP_UNC_IMC_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_IMC_ATTRS SNBEP_UNC_IMC_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_CBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_E |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_T8 |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_CF |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_TF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_CBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_T8 |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_CF |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_TF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_CBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_T8 |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_CF1 |\
|
|
Packit |
577717 |
_SNBEP_UNC_ATTR_TF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_CBO_ATTRS HSWEP_UNC_CBO_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_CBO_NID_ATTRS \
|
|
Packit |
577717 |
(SNBEP_UNC_CBO_ATTRS|_SNBEP_UNC_ATTR_NF)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_CBO_NID_ATTRS \
|
|
Packit |
577717 |
(IVBEP_UNC_CBO_ATTRS|_SNBEP_UNC_ATTR_NF1)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_CBO_NID_ATTRS \
|
|
Packit |
577717 |
(HSWEP_UNC_CBO_ATTRS | _SNBEP_UNC_ATTR_NF1)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_CBO_NID_ATTRS HSWEP_UNC_CBO_NID_ATTRS
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_HA_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_I|_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define IVBEP_UNC_HA_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_HA_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8|_SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_HA_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8|_SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define SNBEP_UNC_HA_OPC_ATTRS \
|
|
Packit |
577717 |
(SNBEP_UNC_HA_ATTRS|_SNBEP_UNC_ATTR_A)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define HSWEP_UNC_SBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8|_SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define BDX_UNC_SBO_ATTRS \
|
|
Packit |
577717 |
(_SNBEP_UNC_ATTR_E|_SNBEP_UNC_ATTR_T8|_SNBEP_UNC_ATTR_I)
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define KNL_UNC_CHA_TOR_ATTRS _SNBEP_UNC_ATTR_NF1
|
|
Packit |
577717 |
|
|
Packit |
577717 |
typedef union {
|
|
Packit |
577717 |
uint64_t val;
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_umask:8; /* unit mask */
|
|
Packit |
577717 |
unsigned long unc_res1:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detec */
|
|
Packit |
577717 |
unsigned long unc_res2:3; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_inv:1; /* invert counter mask */
|
|
Packit |
577717 |
unsigned long unc_thres:8; /* counter mask */
|
|
Packit |
577717 |
unsigned long unc_res3:32; /* reserved */
|
|
Packit |
577717 |
} com; /* covers common fields for cbox, ha, imc, ubox, r2pcie, r3qpi, sbox */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_umask:8; /* unit mask */
|
|
Packit |
577717 |
unsigned long unc_res1:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detect */
|
|
Packit |
577717 |
unsigned long unc_tid:1; /* tid filter enable */
|
|
Packit |
577717 |
unsigned long unc_res2:2; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_inv:1; /* invert counter mask */
|
|
Packit |
577717 |
unsigned long unc_thres:8; /* counter mask */
|
|
Packit |
577717 |
unsigned long unc_res3:32; /* reserved */
|
|
Packit |
577717 |
} cbo; /* covers c-box */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_res1:6; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_occ:2; /* occ select */
|
|
Packit |
577717 |
unsigned long unc_res2:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detec */
|
|
Packit |
577717 |
unsigned long unc_res3:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_res4:2; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_inv:1; /* invert counter mask */
|
|
Packit |
577717 |
unsigned long unc_thres:5; /* threshold */
|
|
Packit |
577717 |
unsigned long unc_res5:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_occ_inv:1; /* occupancy invert */
|
|
Packit |
577717 |
unsigned long unc_occ_edge:1; /* occupancy edge detect */
|
|
Packit |
577717 |
unsigned long unc_res6:32; /* reserved */
|
|
Packit |
577717 |
} pcu; /* covers pcu */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_res1:6; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_occ:2; /* occ select */
|
|
Packit |
577717 |
unsigned long unc_res2:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detec */
|
|
Packit |
577717 |
unsigned long unc_res3:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_ov_en:1; /* overflow enable */
|
|
Packit |
577717 |
unsigned long unc_sel_ext:1; /* event_sel extension */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_res4:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_thres:5; /* threshold */
|
|
Packit |
577717 |
unsigned long unc_res5:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_occ_inv:1; /* occupancy invert */
|
|
Packit |
577717 |
unsigned long unc_occ_edge:1; /* occupancy edge detect */
|
|
Packit |
577717 |
unsigned long unc_res6:32; /* reserved */
|
|
Packit |
577717 |
} ivbep_pcu; /* covers ivb-ep pcu */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_umask:8; /* unit maks */
|
|
Packit |
577717 |
unsigned long unc_res1:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detec */
|
|
Packit |
577717 |
unsigned long unc_res2:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_res3:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_event_ext:1; /* event code extension */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_inv:1; /* invert counter mask */
|
|
Packit |
577717 |
unsigned long unc_thres:8; /* threshold */
|
|
Packit |
577717 |
unsigned long unc_res4:32; /* reserved */
|
|
Packit |
577717 |
} qpi; /* covers qpi */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long tid:1;
|
|
Packit |
577717 |
unsigned long cid:3;
|
|
Packit |
577717 |
unsigned long res0:1;
|
|
Packit |
577717 |
unsigned long res1:3;
|
|
Packit |
577717 |
unsigned long res2:2;
|
|
Packit |
577717 |
unsigned long nid:8;
|
|
Packit |
577717 |
unsigned long state:5;
|
|
Packit |
577717 |
unsigned long opc:9;
|
|
Packit |
577717 |
unsigned long res3:1;
|
|
Packit |
577717 |
unsigned long res4:32;
|
|
Packit |
577717 |
} cbo_filt; /* cbox filter */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long tid:1;
|
|
Packit |
577717 |
unsigned long cid:4;
|
|
Packit |
577717 |
unsigned long res0:12;
|
|
Packit |
577717 |
unsigned long state:6;
|
|
Packit |
577717 |
unsigned long res1:9;
|
|
Packit |
577717 |
unsigned long res2:32;
|
|
Packit |
577717 |
} ivbep_cbo_filt0; /* ivbep cbox filter0 */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long nid:16;
|
|
Packit |
577717 |
unsigned long res0:4;
|
|
Packit |
577717 |
unsigned long opc:9;
|
|
Packit |
577717 |
unsigned long res1:1;
|
|
Packit |
577717 |
unsigned long nc:1;
|
|
Packit |
577717 |
unsigned long isoc:1;
|
|
Packit |
577717 |
unsigned long res2:32;
|
|
Packit |
577717 |
} ivbep_cbo_filt1; /* ivbep cbox filter1 */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long tid:1;
|
|
Packit |
577717 |
unsigned long cid:5;
|
|
Packit |
577717 |
unsigned long res0:11;
|
|
Packit |
577717 |
unsigned long state:7;
|
|
Packit |
577717 |
unsigned long res1:8;
|
|
Packit |
577717 |
unsigned long res2:32;
|
|
Packit |
577717 |
} hswep_cbo_filt0; /* hswep cbox filter0 */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long nid:16;
|
|
Packit |
577717 |
unsigned long res0:4;
|
|
Packit |
577717 |
unsigned long opc:9;
|
|
Packit |
577717 |
unsigned long res1:1;
|
|
Packit |
577717 |
unsigned long nc:1;
|
|
Packit |
577717 |
unsigned long isoc:1;
|
|
Packit |
577717 |
unsigned long res2:32;
|
|
Packit |
577717 |
} hswep_cbo_filt1; /* hswep cbox filter1 */
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long filt0:8; /* band0 freq filter */
|
|
Packit |
577717 |
unsigned long filt1:8; /* band1 freq filter */
|
|
Packit |
577717 |
unsigned long filt2:8; /* band2 freq filter */
|
|
Packit |
577717 |
unsigned long filt3:8; /* band3 freq filter */
|
|
Packit |
577717 |
unsigned long res1:32; /* reserved */
|
|
Packit |
577717 |
} pcu_filt;
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long res1:6;
|
|
Packit |
577717 |
unsigned long lo_addr:26; /* lo order 26b */
|
|
Packit |
577717 |
unsigned long hi_addr:14; /* hi order 14b */
|
|
Packit |
577717 |
unsigned long res2:18; /* reserved */
|
|
Packit |
577717 |
} ha_addr;
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long opc:6; /* opcode match */
|
|
Packit |
577717 |
unsigned long res1:26; /* reserved */
|
|
Packit |
577717 |
unsigned long res2:32; /* reserved */
|
|
Packit |
577717 |
} ha_opc;
|
|
Packit |
577717 |
struct {
|
|
Packit |
577717 |
unsigned long unc_event:8; /* event code */
|
|
Packit |
577717 |
unsigned long unc_umask:8; /* unit mask */
|
|
Packit |
577717 |
unsigned long unc_res1:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_rst:1; /* reset */
|
|
Packit |
577717 |
unsigned long unc_edge:1; /* edge detec */
|
|
Packit |
577717 |
unsigned long unc_res2:3; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_en:1; /* enable */
|
|
Packit |
577717 |
unsigned long unc_res3:1; /* reserved */
|
|
Packit |
577717 |
unsigned long unc_thres:8; /* counter mask */
|
|
Packit |
577717 |
unsigned long unc_res4:32; /* reserved */
|
|
Packit |
577717 |
} irp; /* covers irp */
|
|
Packit |
577717 |
} pfm_snbep_unc_reg_t;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
extern void pfm_intel_snbep_unc_perf_validate_pattrs(void *this, pfmlib_event_desc_t *e);
|
|
Packit |
577717 |
extern int pfm_intel_snbep_unc_get_encoding(void *this, pfmlib_event_desc_t *e);
|
|
Packit |
577717 |
extern const pfmlib_attr_desc_t snbep_unc_mods[];
|
|
Packit |
577717 |
extern int pfm_intel_snbep_unc_detect(void *this);
|
|
Packit |
577717 |
extern int pfm_intel_ivbep_unc_detect(void *this);
|
|
Packit |
577717 |
extern int pfm_intel_hswep_unc_detect(void *this);
|
|
Packit |
577717 |
extern int pfm_intel_knl_unc_detect(void *this);
|
|
Packit |
577717 |
extern int pfm_intel_bdx_unc_detect(void *this);
|
|
Packit |
577717 |
extern int pfm_intel_snbep_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e);
|
|
Packit |
577717 |
extern int pfm_intel_snbep_unc_can_auto_encode(void *this, int pidx, int uidx);
|
|
Packit |
577717 |
extern int pfm_intel_snbep_unc_get_event_attr_info(void *this, int pidx, int attr_idx, pfmlib_event_attr_info_t *info);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static inline int
|
|
Packit |
577717 |
is_cbo_filt_event(void *this, pfm_intel_x86_reg_t reg)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
pfmlib_pmu_t *pmu = this;
|
|
Packit |
577717 |
uint64_t sel = reg.sel_event_select;
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* umask bit 0 must be 1 (OPCODE)
|
|
Packit |
577717 |
* TOR_INSERT: event code 0x35
|
|
Packit |
577717 |
* TOR_OCCUPANCY: event code 0x36
|
|
Packit |
577717 |
* LLC_LOOKUP : event code 0x34
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
return (pmu->flags & INTEL_PMU_FL_UNC_CBO)
|
|
Packit |
577717 |
&& (reg.sel_unit_mask & 0x1)
|
|
Packit |
577717 |
&& (sel == 0x35 || sel == 0x36 || sel == 0x34);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#endif /* __PFMLIB_INTEL_SNBEP_UNC_PRIV_H__ */
|