akaros/user/perfmon/events/intel_ivbep_unc_r3qpi_events.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2014 Google Inc. All rights reserved
   3 * Contributed by Stephane Eranian <eranian@gmail.com>
   4 *
   5 * Permission is hereby granted, free of charge, to any person obtaining a copy
   6 * of this software and associated documentation files (the "Software"), to deal
   7 * in the Software without restriction, including without limitation the rights
   8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
   9 * of the Software, and to permit persons to whom the Software is furnished to do so,
  10 * subject to the following conditions:
  11 *
  12 * The above copyright notice and this permission notice shall be included in all
  13 * copies or substantial portions of the Software.
  14 *
  15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
  16 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  17 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  18 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
  19 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
  20 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  21 *
  22 * This file is part of libpfm, a performance monitoring support library for
  23 * applications on Linux.
  24 *
  25 * This file has been automatically generated.
  26 *
  27 * PMU: ivbep_unc_r3qpi (Intel IvyBridge-EP R3QPI uncore)
  28 */
  29
  30static const intel_x86_umask_t ivbep_unc_r3_iio_credits_acquired[]={
  31  { .uname = "DRS",
  32    .udesc  = "DRS",
  33    .ucode  = 0x800,
  34    .uflags = INTEL_X86_NCOMBO,
  35  },
  36  { .uname = "NCB",
  37    .udesc  = "NCB",
  38    .ucode  = 0x1000,
  39    .uflags = INTEL_X86_NCOMBO,
  40  },
  41  { .uname = "NCS",
  42    .udesc  = "NCS",
  43    .ucode  = 0x2000,
  44    .uflags = INTEL_X86_NCOMBO,
  45  },
  46};
  47
  48static const intel_x86_umask_t ivbep_unc_r3_ring_ad_used[]={
  49  { .uname = "CCW_VR0_EVEN",
  50    .udesc  = "Counter-Clockwise and even ring polarity on virtual ring 0",
  51    .ucode  = 0x400,
  52  },
  53  { .uname = "CCW_VR0_ODD",
  54    .udesc  = "Counter-Clockwise and odd ring polarity on virtual ring 0",
  55    .ucode  = 0x800,
  56  },
  57  { .uname = "CW_VR0_EVEN",
  58    .udesc  = "Clockwise and even ring polarity on virtual ring 0",
  59    .ucode  = 0x100,
  60  },
  61  { .uname = "CW_VR0_ODD",
  62    .udesc  = "Clockwise and odd ring polarity on virtual ring 0",
  63    .ucode  = 0x200,
  64  },
  65  { .uname = "CW",
  66    .udesc  = "Clockwise with any polarity on either virtual rings",
  67    .ucode  = 0x3300,
  68  },
  69  { .uname = "CCW",
  70    .udesc  = "Counter-clockwise with any polarity on either virtual rings",
  71    .ucode  = 0xcc00,
  72  },
  73};
  74
  75static const intel_x86_umask_t ivbep_unc_r3_ring_iv_used[]={
  76  { .uname = "CW",
  77    .udesc  = "Clockwise with any polarity on either virtual rings",
  78    .ucode  = 0x3300,
  79  },
  80  { .uname = "CCW",
  81    .udesc  = "Counter-clockwise with any polarity on either virtual rings",
  82    .ucode  = 0xcc00,
  83  },
  84  { .uname = "ANY",
  85    .udesc  = "Counter-clockwise with any polarity on either virtual rings",
  86    .ucode  = 0xff00,
  87    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
  88  },
  89};
  90
  91static const intel_x86_umask_t ivbep_unc_r3_rxr_cycles_ne[]={
  92  { .uname = "HOM",
  93    .udesc  = "HOM Ingress queue",
  94    .ucode  = 0x100,
  95  },
  96  { .uname = "SNP",
  97    .udesc  = "SNP Ingress queue",
  98    .ucode  = 0x200,
  99  },
 100  { .uname = "NDR",
 101    .udesc  = "NDR Ingress queue",
 102    .ucode  = 0x400,
 103  },
 104};
 105
 106static const intel_x86_umask_t ivbep_unc_r3_rxr_inserts[]={
 107  { .uname = "DRS",
 108    .udesc  = "DRS Ingress queue",
 109    .ucode  = 0x800,
 110  },
 111  { .uname = "HOM",
 112    .udesc  = "HOM Ingress queue",
 113    .ucode  = 0x100,
 114  },
 115  { .uname = "NCB",
 116    .udesc  = "NCB Ingress queue",
 117    .ucode  = 0x1000,
 118  },
 119  { .uname = "NCS",
 120    .udesc  = "NCS Ingress queue",
 121    .ucode  = 0x2000,
 122  },
 123  { .uname = "NDR",
 124    .udesc  = "NDR Ingress queue",
 125    .ucode  = 0x400,
 126  },
 127  { .uname = "SNP",
 128    .udesc  = "SNP Ingress queue",
 129    .ucode  = 0x200,
 130  },
 131};
 132
 133static const intel_x86_umask_t ivbep_unc_r3_vn0_credits_used[]={
 134  { .uname = "HOM",
 135    .udesc  = "Filter HOM message class",
 136    .ucode  = 0x100,
 137  },
 138  { .uname = "SNP",
 139    .udesc  = "Filter SNP message class",
 140    .ucode  = 0x200,
 141  },
 142  { .uname = "NDR",
 143    .udesc  = "Filter NDR message class",
 144    .ucode  = 0x400,
 145  },
 146  { .uname = "DRS",
 147    .udesc  = "Filter DRS message class",
 148    .ucode  = 0x800,
 149  },
 150  { .uname = "NCB",
 151    .udesc  = "Filter NCB message class",
 152    .ucode  = 0x1000,
 153  },
 154  { .uname = "NCS",
 155    .udesc  = "Filter NCS message class",
 156    .ucode  = 0x2000,
 157  },
 158};
 159
 160static const intel_x86_umask_t ivbep_unc_r3_c_hi_ad_credits_empty[]={
 161  { .uname = "CBO8",
 162    .udesc  = "CBox 8",
 163    .ucode  = 0x100,
 164  },
 165  { .uname = "CBO9",
 166    .udesc  = "CBox 9",
 167    .ucode  = 0x200,
 168  },
 169  { .uname = "CBO10",
 170    .udesc  = "CBox 10",
 171    .ucode  = 0x400,
 172  },
 173  { .uname = "CBO11",
 174    .udesc  = "CBox 11",
 175    .ucode  = 0x800,
 176  },
 177  { .uname = "CBO12",
 178    .udesc  = "CBox 12",
 179    .ucode  = 0x1000,
 180  },
 181  { .uname = "CBO13",
 182    .udesc  = "CBox 13",
 183    .ucode  = 0x2000,
 184  },
 185  { .uname = "CBO14",
 186    .udesc  = "CBox 14 & 16",
 187    .ucode  = 0x4000,
 188  },
 189};
 190
 191static const intel_x86_umask_t ivbep_unc_r3_c_lo_ad_credits_empty[]={
 192  { .uname = "CBO0",
 193    .udesc  = "CBox 0",
 194    .ucode  = 0x100,
 195  },
 196  { .uname = "CBO1",
 197    .udesc  = "CBox 1",
 198    .ucode  = 0x200,
 199  },
 200  { .uname = "CBO2",
 201    .udesc  = "CBox 2",
 202    .ucode  = 0x400,
 203  },
 204  { .uname = "CBO3",
 205    .udesc  = "CBox 3",
 206    .ucode  = 0x800,
 207  },
 208  { .uname = "CBO4",
 209    .udesc  = "CBox 4",
 210    .ucode  = 0x1000,
 211  },
 212  { .uname = "CBO5",
 213    .udesc  = "CBox 5",
 214    .ucode  = 0x2000,
 215  },
 216  { .uname = "CBO6",
 217    .udesc  = "CBox 6",
 218    .ucode  = 0x4000,
 219  },
 220  { .uname = "CBO7",
 221    .udesc  = "CBox 7",
 222    .ucode  = 0x8000,
 223  }
 224};
 225
 226static const intel_x86_umask_t ivbep_unc_r3_ha_r2_bl_credits_empty[]={
 227  { .uname = "HA0",
 228    .udesc  = "HA0",
 229    .ucode  = 0x100,
 230  },
 231  { .uname = "HA1",
 232    .udesc  = "HA1",
 233    .ucode  = 0x200,
 234  },
 235  { .uname = "R2_NCB",
 236    .udesc  = "R2 NCB messages",
 237    .ucode  = 0x400,
 238  },
 239  { .uname = "R2_NCS",
 240    .udesc  = "R2 NCS messages",
 241    .ucode  = 0x800,
 242  }
 243};
 244
 245static const intel_x86_umask_t ivbep_unc_r3_qpi0_ad_credits_empty[]={
 246  { .uname = "VNA",
 247    .udesc  = "VNA",
 248    .ucode  = 0x100,
 249  },
 250  { .uname = "VN0_HOM",
 251    .udesc  = "VN0 HOM messages",
 252    .ucode  = 0x200,
 253  },
 254  { .uname = "VN0_SNP",
 255    .udesc  = "VN0 SNP messages",
 256    .ucode  = 0x400,
 257  },
 258  { .uname = "VN0_NDR",
 259    .udesc  = "VN0 NDR messages",
 260    .ucode  = 0x800,
 261  },
 262  { .uname = "VN1_HOM",
 263    .udesc  = "VN1 HOM messages",
 264    .ucode  = 0x1000,
 265  },
 266  { .uname = "VN1_SNP",
 267    .udesc  = "VN1 SNP messages",
 268    .ucode  = 0x2000,
 269  },
 270  { .uname = "VN1_NDR",
 271    .udesc  = "VN1 NDR messages",
 272    .ucode  = 0x4000,
 273  },
 274};
 275
 276static const intel_x86_umask_t ivbep_unc_r3_txr_nack_ccw[]={
 277  { .uname = "AD",
 278    .udesc  = "BL counter-clockwise Egress queue",
 279    .ucode  = 0x100,
 280  },
 281  { .uname = "AK",
 282    .udesc  = "AD clockwise Egress queue",
 283    .ucode  = 0x200,
 284  },
 285  { .uname = "BL",
 286    .udesc  = "AD counter-clockwise Egress queue",
 287    .ucode  = 0x400,
 288  },
 289};
 290
 291static const intel_x86_umask_t ivbep_unc_r3_txr_nack_cw[]={
 292  { .uname = "AD",
 293    .udesc  = "AD clockwise Egress queue",
 294    .ucode  = 0x100,
 295  },
 296  { .uname = "AK",
 297    .udesc  = "AD counter-clockwise Egress queue",
 298    .ucode  = 0x200,
 299  },
 300  { .uname = "BL",
 301    .udesc  = "BL clockwise Egress queue",
 302    .ucode  = 0x400,
 303  },
 304};
 305
 306static const intel_x86_umask_t ivbep_unc_r3_vna_credits_acquired[]={
 307  { .uname = "AD",
 308    .udesc  = "For AD ring",
 309    .ucode  = 0x100,
 310  },
 311  { .uname = "BL",
 312    .udesc  = "For BL ring",
 313    .ucode  = 0x400,
 314  },
 315};
 316
 317static const intel_x86_entry_t intel_ivbep_unc_r3_pe[]={
 318  { .name = "UNC_R3_CLOCKTICKS",
 319    .desc = "Number of uclks in domain",
 320    .code = 0x1,
 321    .cntmsk = 0x7,
 322    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 323  },
 324  { .name = "UNC_R3_RING_AD_USED",
 325    .desc = "R3 AD Ring in Use",
 326    .code = 0x7,
 327    .cntmsk = 0x7,
 328    .ngrp = 1,
 329    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 330    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_ring_ad_used),
 331    .umasks  = ivbep_unc_r3_ring_ad_used
 332  },
 333  { .name = "UNC_R3_RING_AK_USED",
 334    .desc = "R3 AK Ring in Use",
 335    .code = 0x8,
 336    .cntmsk = 0x7,
 337    .ngrp = 1,
 338    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 339    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_ring_ad_used),
 340    .umasks  = ivbep_unc_r3_ring_ad_used /* shared */
 341  },
 342  { .name = "UNC_R3_RING_BL_USED",
 343    .desc = "R3 BL Ring in Use",
 344    .code = 0x9,
 345    .cntmsk = 0x7,
 346    .ngrp = 1,
 347    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 348    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_ring_ad_used),
 349    .umasks  = ivbep_unc_r3_ring_ad_used /* shared */
 350  },
 351  { .name = "UNC_R3_RING_IV_USED",
 352    .desc = "R3 IV Ring in Use",
 353    .code = 0xa,
 354    .cntmsk = 0x7,
 355    .ngrp = 1,
 356    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 357    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_ring_iv_used),
 358    .umasks  = ivbep_unc_r3_ring_iv_used
 359  },
 360  { .name = "UNC_R3_RXR_AD_BYPASSED",
 361    .desc = "Ingress Bypassed",
 362    .code = 0x12,
 363    .cntmsk = 0x3,
 364    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 365  },
 366  { .name = "UNC_R3_RXR_CYCLES_NE",
 367    .desc = "Ingress Cycles Not Empty",
 368    .code = 0x10,
 369    .cntmsk = 0x3,
 370    .ngrp = 1,
 371    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 372    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_rxr_cycles_ne),
 373    .umasks  = ivbep_unc_r3_rxr_cycles_ne
 374  },
 375  { .name = "UNC_R3_RXR_INSERTS",
 376    .desc = "Ingress Allocations",
 377    .code = 0x11,
 378    .cntmsk = 0x3,
 379    .ngrp = 1,
 380    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 381    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_rxr_inserts),
 382    .umasks  = ivbep_unc_r3_rxr_inserts
 383  },
 384  { .name = "UNC_R3_RXR_OCCUPANCY",
 385    .desc = "Ingress Occupancy Accumulator",
 386    .code = 0x13,
 387    .cntmsk = 0x1,
 388    .ngrp = 1,
 389    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 390    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_rxr_inserts),
 391    .umasks  = ivbep_unc_r3_rxr_inserts/* shared */
 392  },
 393  { .name = "UNC_R3_TXR_CYCLES_FULL",
 394    .desc = "Egress cycles full",
 395    .code = 0x25,
 396    .cntmsk = 0x3,
 397    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 398  },
 399  { .name = "UNC_R3_VN0_CREDITS_REJECT",
 400    .desc = "VN0 Credit Acquisition Failed",
 401    .code = 0x37,
 402    .cntmsk = 0x3,
 403    .ngrp = 1,
 404    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 405    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vn0_credits_used),
 406    .umasks  = ivbep_unc_r3_vn0_credits_used
 407  },
 408  { .name = "UNC_R3_VN0_CREDITS_USED",
 409    .desc = "VN0 Credit Used",
 410    .code = 0x36,
 411    .cntmsk = 0x3,
 412    .ngrp = 1,
 413    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 414    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vn0_credits_used),
 415    .umasks  = ivbep_unc_r3_vn0_credits_used
 416  },
 417  { .name = "UNC_R3_VNA_CREDITS_ACQUIRED",
 418    .desc = "VNA credit Acquisitions",
 419    .code = 0x33,
 420    .cntmsk = 0x3,
 421    .ngrp = 1,
 422    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 423    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vna_credits_acquired),
 424    .umasks  = ivbep_unc_r3_vna_credits_acquired
 425  },
 426  { .name = "UNC_R3_VNA_CREDITS_REJECT",
 427    .desc = "VNA Credit Reject",
 428    .code = 0x34,
 429    .cntmsk = 0x3,
 430    .ngrp = 1,
 431    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 432    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vn0_credits_used),
 433    .umasks  = ivbep_unc_r3_vn0_credits_used /* shared */
 434  },
 435  { .name = "UNC_R3_VNA_CREDIT_CYCLES_OUT",
 436    .desc = "Cycles with no VNA credits available",
 437    .code = 0x31,
 438    .cntmsk = 0x3,
 439    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 440  },
 441  { .name = "UNC_R3_VNA_CREDIT_CYCLES_USED",
 442    .desc = "Cycles with 1 or more VNA credits in use",
 443    .code = 0x32,
 444    .cntmsk = 0x3,
 445    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 446  },
 447  { .name = "UNC_R3_C_HI_AD_CREDITS_EMPTY",
 448    .desc = "Cbox AD credits empty",
 449    .code = 0x2c,
 450    .cntmsk = 0x3,
 451    .ngrp = 1,
 452    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 453    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_c_hi_ad_credits_empty),
 454    .umasks  = ivbep_unc_r3_c_hi_ad_credits_empty
 455  },
 456  { .name = "UNC_R3_C_LO_AD_CREDITS_EMPTY",
 457    .desc = "Cbox AD credits empty",
 458    .code = 0x2b,
 459    .cntmsk = 0x3,
 460    .ngrp = 1,
 461    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 462    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_c_lo_ad_credits_empty),
 463    .umasks  = ivbep_unc_r3_c_lo_ad_credits_empty
 464  },
 465  { .name = "UNC_R3_HA_R2_BL_CREDITS_EMPTY",
 466    .desc = "HA/R2 AD credits  empty",
 467    .code = 0x2f,
 468    .cntmsk = 0x3,
 469    .ngrp = 1,
 470    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 471    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_ha_r2_bl_credits_empty),
 472    .umasks  = ivbep_unc_r3_ha_r2_bl_credits_empty
 473  },
 474  { .name = "UNC_R3_QPI0_AD_CREDITS_EMPTY",
 475    .desc = "QPI0 AD credits empty",
 476    .code = 0x29,
 477    .cntmsk = 0x3,
 478    .ngrp = 1,
 479    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 480    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_qpi0_ad_credits_empty),
 481    .umasks  = ivbep_unc_r3_qpi0_ad_credits_empty
 482  },
 483  { .name = "UNC_R3_QPI0_BL_CREDITS_EMPTY",
 484    .desc = "QPI0 BL credits empty",
 485    .code = 0x2d,
 486    .cntmsk = 0x3,
 487    .ngrp = 1,
 488    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 489    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_qpi0_ad_credits_empty), /* shared */
 490    .umasks  = ivbep_unc_r3_qpi0_ad_credits_empty
 491  },
 492  { .name = "UNC_R3_QPI1_AD_CREDITS_EMPTY",
 493    .desc = "QPI1 AD credits empty",
 494    .code = 0x2a,
 495    .cntmsk = 0x3,
 496    .ngrp = 1,
 497    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 498    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_qpi0_ad_credits_empty), /* shared */
 499    .umasks  = ivbep_unc_r3_qpi0_ad_credits_empty
 500  },
 501  { .name = "UNC_R3_QPI1_BL_CREDITS_EMPTY",
 502    .desc = "QPI1 BL credits empty",
 503    .code = 0x2e,
 504    .cntmsk = 0x3,
 505    .ngrp = 1,
 506    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 507    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_qpi0_ad_credits_empty), /* shared */
 508    .umasks  = ivbep_unc_r3_qpi0_ad_credits_empty
 509  },
 510  { .name = "UNC_R3_TXR_CYCLES_NE",
 511    .desc = "Egress cycles not empty",
 512    .code = 0x23,
 513    .cntmsk = 0x3,
 514    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 515  },
 516  { .name = "UNC_R3_TXR_NACK_CCW",
 517    .desc = "Egress NACK counter-clockwise",
 518    .code = 0x28,
 519    .cntmsk = 0x3,
 520    .ngrp = 1,
 521    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 522    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_txr_nack_ccw),
 523    .umasks  = ivbep_unc_r3_txr_nack_ccw
 524  },
 525  { .name = "UNC_R3_TXR_NACK_CW",
 526    .desc = "Egress NACK counter-clockwise",
 527    .code = 0x26,
 528    .cntmsk = 0x3,
 529    .ngrp = 1,
 530    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 531    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_txr_nack_cw),
 532    .umasks  = ivbep_unc_r3_txr_nack_cw
 533  },
 534  { .name = "UNC_R3_VN1_CREDITS_REJECT",
 535    .desc = "VN1 Credit Acquisition Failed",
 536    .code = 0x39,
 537    .cntmsk = 0x3,
 538    .ngrp = 1,
 539    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 540    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vn0_credits_used), /* shared */
 541    .umasks  = ivbep_unc_r3_vn0_credits_used
 542  },
 543  { .name = "UNC_R3_VN1_CREDITS_USED",
 544    .desc = "VN0 Credit Used",
 545    .code = 0x38,
 546    .cntmsk = 0x3,
 547    .ngrp = 1,
 548    .modmsk = IVBEP_UNC_R3QPI_ATTRS,
 549    .numasks = LIBPFM_ARRAY_SIZE(ivbep_unc_r3_vn0_credits_used), /* shared */
 550    .umasks  = ivbep_unc_r3_vn0_credits_used
 551  },
 552};
 553