wci_common.c revision a83cadce5d3331b64803bfc641036cec23602c74
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering/*
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * CDDL HEADER START
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering *
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * The contents of this file are subject to the terms of the
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * Common Development and Distribution License, Version 1.0 only
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * (the "License"). You may not use this file except in compliance
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * with the License.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering *
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * or http://www.opensolaris.org/os/licensing.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * See the License for the specific language governing permissions
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * and limitations under the License.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering *
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * When distributing Covered Code, include this CDDL HEADER in each
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * If applicable, add the following below this CDDL HEADER, with the
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * fields enclosed by brackets "[]" replaced with your own identifying
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * information: Portions Copyright [yyyy] [name of copyright owner]
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering *
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * CDDL HEADER END
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering */
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering/*
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * Copyright (c) 2001 by Sun Microsystems, Inc.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering * All rights reserved.
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering */
b5efdb8af40ea759a1ea584c1bc44ecc81dd00ceLennart Poettering
3ffd4af22052963e7a29431721ee204e634bea75Lennart Poettering#pragma ident "%Z%%M% %I% %E% SMI"
0d39fa9c69b97a2ceb156053deef69c0866c2b97Lennart Poettering
d15d0333be6a1ca7fdd99a1881d967b6be8f387aZbigniew Jędrzejewski-Szmek#include <sys/systm.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering#include <sys/types.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering#include <sys/errno.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering#include <sys/kmem.h>
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#include <sys/debug.h>
4349cd7c1d153c4ffa23cf1cff1644e0afa9bcf0Lennart Poettering#include <sys/cmn_err.h>
6bedfcbb2970e06a4d3280c8fb62083d252ede73Lennart Poettering#include <sys/kstat.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering#include <sys/async.h>
4e731273edfe852a3eee2949cd20f49fd5b4f6d7Lennart Poettering#include <sys/cheetahregs.h>
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering
8fcde01280adcbd07e8205b91ac52b06305b6208Lennart Poettering#include <sys/wci_offsets.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering#include <sys/wci_regs.h>
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering#include <sys/wci_common.h>
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering
07630cea1f3a845c09309f197ac7c4f11edd3b62Lennart Poettering/* busstat-style kstats support */
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering/* Use predefined strings to name the kstats from this driver. */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#define WCI_KSTAT_NAME "%s"
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering#define WCI_LPBK_KSTAT_NAME "%slpbk"
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering#define WCI_LINK_KSTAT_NAME "%slink"
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering#define WCI_SFI_KSTAT_NAME "%ssfi"
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering#define EOSTR "\0"
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger/*
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger * Function prototypes
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringstatic void wci_add_misc_kstats(struct wci_common_soft_state *, char *);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmekstatic void wci_add_lpbk_kstats(struct wci_common_soft_state *, char *);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmekstatic void wci_add_link_kstats(struct wci_common_soft_state *, char *);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmekstatic void wci_add_sfi_kstats(struct wci_common_soft_state *, char *);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmekstatic void wci_add_misc_pic_kstats(char *);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmekstatic void wci_add_lpbk_pic_kstats(char *);
bf1d7ba70aceddb5dae0cd2e370b8afaf0c81b05Karel Zakstatic void wci_add_link_pic_kstats(char *);
7fd1b19bc9e9f5574f2877936b8ac267c7706947Harald Hoyerstatic void wci_add_sfi_pic_kstats(char *);
bf1d7ba70aceddb5dae0cd2e370b8afaf0c81b05Karel Zak
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringstatic int wci_misc_kstat_update(kstat_t *, int);
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringstatic int wci_lpbk_kstat_update(kstat_t *, int);
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringstatic int wci_link_kstat_update(kstat_t *, int);
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poetteringstatic int wci_sfi_kstat_update(kstat_t *, int);
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poettering
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poettering/* this varible is used in wci_link_kstat_update() routine */
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poetteringstatic int wci_link_kstat_modlen;
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poettering
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poettering/* Wildcat ECC error handling support */
75f86906c52735c98dc0aa7e24b773edb42ee814Lennart Poetteringvoid
689aede8c622ba68d9060e4edee27364445b2007Lennart Poetteringwci_log_ce_error(struct async_flt *ecc, char *unum)
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering{
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering uint64_t t_afsr;
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering uint64_t t_afar;
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering ushort_t id = ecc->flt_bus_id;
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering ushort_t inst = ecc->flt_inst;
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering t_afsr = ecc->flt_stat;
b7def684941808600c344f0be7a2b9fcdda97e0fLennart Poettering t_afar = ecc->flt_addr;
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek if (t_afsr == RA_ECC_MTAG_CE) {
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering cmn_err(CE_CONT, "WCI%d CE RA MTAG ERROR: "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "Id %d\n",
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen }
56f64d95763a799ba4475daf44d8e9f72a1bd474Michal Schmidt if (t_afsr == RA_ECC_DATA_CE) {
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek cmn_err(CE_CONT, "WCI%d CE RA DATA ERROR: "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "Id %d\n",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
64347fc2b983f33e7efb0fd2bb44e133fb9f30f4Tom Gundersen (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
64347fc2b983f33e7efb0fd2bb44e133fb9f30f4Tom Gundersen }
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering if (t_afsr == HA_ECC_MTAG_CE) {
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering cmn_err(CE_CONT, "WCI%d CE HA MTAG ERROR: "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "Id %d\n",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
bf1d7ba70aceddb5dae0cd2e370b8afaf0c81b05Karel Zak }
bf1d7ba70aceddb5dae0cd2e370b8afaf0c81b05Karel Zak if (t_afsr == HA_ECC_DATA_CE) {
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering cmn_err(CE_CONT, "WCI%d CE HA DATA ERROR: "
47cb901e38cd7092576fc8e76cc4a14f39bf719dLennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
23bbb0de4e3f85d9704a5c12a5afa2dfa0159e41Michal Schmidt "Id %d\n",
23bbb0de4e3f85d9704a5c12a5afa2dfa0159e41Michal Schmidt inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
b3208b662948b51ff34e7b7752e28ec7a48708aeZbigniew Jędrzejewski-Szmek }
bf1d7ba70aceddb5dae0cd2e370b8afaf0c81b05Karel Zak if (t_afsr == SA_ECC_MTAG_CE) {
b3208b662948b51ff34e7b7752e28ec7a48708aeZbigniew Jędrzejewski-Szmek cmn_err(CE_CONT, "WCI%d CE SA MTAG ERROR: "
b3208b662948b51ff34e7b7752e28ec7a48708aeZbigniew Jędrzejewski-Szmek "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
b3208b662948b51ff34e7b7752e28ec7a48708aeZbigniew Jędrzejewski-Szmek "Id %d\n",
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek }
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen if (t_afsr == SA_ECC_DATA_CE) {
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen cmn_err(CE_CONT, "WCI%d CE SA DATA ERROR: "
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen "Id %d\n",
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen }
4e82fe5213bedcb70e25c0270e516d5f2706d8c8Tom Gundersen if (t_afsr == CA_ECC_MTAG_CE) {
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek cmn_err(CE_CONT, "WCI%d CE CA MTAG ERROR: "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "Id %d\n",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering }
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek if (t_afsr == CA_ECC_DATA_CE) {
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek cmn_err(CE_CONT, "WCI%d CE CA DATA ERROR: "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "AFSR 0x%08x.%08x AFAR 0x%08x.%08x MemMod %s "
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering "Id %d\n",
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen inst, (uint32_t)(t_afsr>>32), (uint32_t)t_afsr,
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen (uint32_t)(t_afar>>32), (uint32_t)t_afar, unum, id);
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen }
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek}
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen/*
336b5c615e9c101476784b32df1b86aaeac96431Zbigniew Jędrzejewski-Szmek * WCI Performance Events.
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich *
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich * For each pic there is an array of event-names and event-masks.
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich * The num of events in this array is WCI_NUM_EVENTS + 1
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich * (num of WCI events) + (clear_pic event)
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich *
336b5c615e9c101476784b32df1b86aaeac96431Zbigniew Jędrzejewski-Szmek */
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich/* Misc Counter */
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrichstatic wci_event_mask_t
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich wci_misc_events_arr[WCI_NUM_PICS][WCI_MISC_NUM_EVENTS] = {
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich/* pic 0 */
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich /* SFI agent */
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_sfi_histogram0", SFI_SFI_HISTOGRAM0},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_sfi_histogram1", SFI_SFI_HISTOGRAM1},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_alloc_1", SFI_ATRANSID_ALLOC_1},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_alloc_4", SFI_ATRANSID_ALLOC_4},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_alloc_8", SFI_ATRANSID_ALLOC_8},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_alloc_10", SFI_ATRANSID_ALLOC_10},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_alloc_12", SFI_ATRANSID_ALLOC_12},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"sfi_atransid_dealloc", SFI_ATRANSID_DEALLOC},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"sfi_targid_alloc_0", SFI_TARGID_ALLOC_0},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_targid_alloc_2", SFI_TARGID_ALLOC_2},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_targid_alloc_8", SFI_TARGID_ALLOC_8},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_targid_dealloc", SFI_TARGID_DEALLOC},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p0_req_valid", SFI_P0_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p1_req_valid", SFI_P1_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p2_req_valid", SFI_P2_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p3_req_valid", SFI_P3_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p4_req_valid", SFI_P4_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p5_req_valid", SFI_P5_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p6_req_valid", SFI_P6_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p7_req_valid", SFI_P7_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p8_req_valid", SFI_P8_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p9_req_valid", SFI_P9_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p10_req_valid", SFI_P10_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p11_req_valid", SFI_P11_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p12_req_valid", SFI_P12_REQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p0_grant", SFI_P0_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p1_grant", SFI_P1_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p2_grant", SFI_P2_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p3_grant", SFI_P3_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p4_grant", SFI_P4_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p5_grant", SFI_P5_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p6_grant", SFI_P6_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p7_grant", SFI_P7_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p8_grant", SFI_P8_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p9_grant", SFI_P9_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p10_grant", SFI_P10_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p11_grant", SFI_P11_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_p12_grant", SFI_P12_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_sfi_pull_req", SFI_SFI_PULL_REQ},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_sfi_pull_grant", SFI_SFI_PULL_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* cnt0 duration */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_atransid_dealloc_duration",
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak SFI_ATRANSID_DEALLOC_DURATION},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfi_targid_dealloc_duration", SFI_TARGID_DEALLOC_DURATION},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* DC agent */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"dc_dif_output_valid", DC_DIF_OUTPUT_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"dc_sfi_data_grant", DC_SFI_DATA_GRANT},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* LC agent */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"lc_dif_push", LC_DIF_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"lc_com_valid_links_dif_full", LC_COM_VALID_LINKS_DIF_FULL},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"lc_data_pkt_fr_node", LC_DATA_PKT_FR_NODE},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"lc_sfi_data_cancle", LC_SFI_DATA_CANCEL},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* SFQ agent */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_piq_push", SFQ_PIQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_piq_pop", SFQ_PIQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_niq_push", SFQ_NIQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_niq_pop", SFQ_NIQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_siq_push", SFQ_SIQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"sfq_siq_pop", SFQ_SIQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* HLI agent */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_slq_push", HLI_SLQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_slq_pop", HLI_SLQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_chq_push", HLI_CHQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_chq_pop", HLI_CHQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_phq_push", HLI_PHQ_PUSH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"hli_phq_pop", HLI_PHQ_POP},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* Cache Control agent */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"cachectl_clust0", CACHECTL_CLUST0},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust1", CACHECTL_CLUST1},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering /* pic0, cluster event 0 */
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust0_cwr", CACHECTL_CLUST_CWR | CACHECTL_CLUST0},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_crd", CACHECTL_CLUST_CRD | CACHECTL_CLUST0},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust0_crd_cwr",
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering CACHECTL_CLUST_CRD_CWR | CACHECTL_CLUST0},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust0_at", CACHECTL_CLUST_AT | CACHECTL_CLUST0},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust0_at_cwr",
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering CACHECTL_CLUST_AT_CWR | CACHECTL_CLUST0},
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering {"cachectl_clust0_at_crd",
e8d2f6cde0af86eece9118718ad0a8a19e1cffecLennart Poettering CACHECTL_CLUST_AT_CRD | CACHECTL_CLUST0},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_clust0_at_crd_cwr",
7fd1b19bc9e9f5574f2877936b8ac267c7706947Harald Hoyer CACHECTL_CLUST_AT_CRD_CWR | CACHECTL_CLUST0},
1dc2ced4646a78b3dee9e3ea44130f938d6425bcZbigniew Jędrzejewski-Szmek {"cachectl_clust0_int",
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek CACHECTL_CLUST_INT | CACHECTL_CLUST0},
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek {"cachectl_clust0_int_cwr",
7fd1b19bc9e9f5574f2877936b8ac267c7706947Harald Hoyer CACHECTL_CLUST_INT_CWR | CACHECTL_CLUST0},
94192cdaf652c9717f15274504ed315126c07a93Zbigniew Jędrzejewski-Szmek {"cachectl_clust0_int_crd",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_CRD | CACHECTL_CLUST0},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust0_int_crd_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_CRD_CWR | CACHECTL_CLUST0},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"cachectl_clust0_int_at",
0d3d3be1e225d51ebf46fb40a89419eb6a7d334eFranck Bui CACHECTL_CLUST_INT_AT | CACHECTL_CLUST0},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"cachectl_clust0_int_at_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT_CWR | CACHECTL_CLUST0},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_int_at_crd",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT_CRD | CACHECTL_CLUST0},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust0_int_at_crd_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT_CRD_CWR | CACHECTL_CLUST0},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering /* pic0, cluster event 1 */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_cwr", CACHECTL_CLUST_CWR | CACHECTL_CLUST1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_crd", CACHECTL_CLUST_CRD | CACHECTL_CLUST1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_crd_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_CRD_CWR | CACHECTL_CLUST1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_at",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_AT | CACHECTL_CLUST1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_at_cwr",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering CACHECTL_CLUST_AT_CWR | CACHECTL_CLUST1},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"cachectl_clust1_at_crd",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek CACHECTL_CLUST_AT_CRD | CACHECTL_CLUST1},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"cachectl_clust1_at_crd_cwr",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek CACHECTL_CLUST_AT_CRD_CWR | CACHECTL_CLUST1},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"cachectl_clust1_int",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek CACHECTL_CLUST_INT | CACHECTL_CLUST1},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"cachectl_clust1_int_cwr",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek CACHECTL_CLUST_INT_CWR | CACHECTL_CLUST1},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_clust1_int_crd",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering CACHECTL_CLUST_INT_CRD | CACHECTL_CLUST1},
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering {"cachectl_clust1_int_crd_cwr",
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering CACHECTL_CLUST_INT_CRD_CWR | CACHECTL_CLUST1},
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering {"cachectl_clust1_int_at",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT | CACHECTL_CLUST1},
b7def684941808600c344f0be7a2b9fcdda97e0fLennart Poettering {"cachectl_clust1_int_at_cwr",
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek CACHECTL_CLUST_INT_AT_CWR | CACHECTL_CLUST1},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"cachectl_clust1_int_at_crd",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT_CRD | CACHECTL_CLUST1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_int_at_crd_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering CACHECTL_CLUST_INT_AT_CRD_CWR | CACHECTL_CLUST1},
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen {"cachectl_cache_cyl_used", CACHECTL_CACHE_CYL_USED},
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen {"cachectl_lpa2ga_lookup", CACHECTL_LPA2GA_LOOKUP},
67ab5f761f9b854d8ce85f9ee47b298e497f8bd9Tom Gundersen {"cachectl_ga2lpa_access", CACHECTL_GA2LPA_ACCESS},
56f64d95763a799ba4475daf44d8e9f72a1bd474Michal Schmidt {"cachectl_ga2lpa_lookup", CACHECTL_GA2LPA_LOOKUP},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"cachectl_ga2lpa_miss", CACHECTL_GA2LPA_MISS},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_dir_lookup", CACHECTL_DIR_LOOKUP},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_dir_miss", CACHECTL_DIR_MISS},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"cachectl_dir_wrtbk", CACHECTL_DIR_WRTBK},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"cachectl_cmmu_access", CACHECTL_CMMU_ACCESS},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"cachectl_cmmu_lookup", CACHECTL_CMMU_LOOKUP},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"cachectl_csr_lookup", CACHECTL_CSR_LOOKUP},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"cachectl_cnt_alwys", CACHECTL_CNT_ALWYS},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"cachectl_hag_req_valid", CACHECTL_HAG_REQ_VALID},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_ciq_req_valid", CACHECTL_CIQ_REQ_VALID},
0d3d3be1e225d51ebf46fb40a89419eb6a7d334eFranck Bui {"cachectl_slq_req_valid", CACHECTL_SLQ_REQ_VALID},
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering /* Cluster agent */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_agent_alloc", CLUSTER_AGENT_ALLOC},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_agent_retired", CLUSTER_AGENT_RETIRED},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_sfi_grant_rd", CLUSTER_SFI_GRANT_RD},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_sfi_grant_wr", CLUSTER_SFI_GRANT_WR},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_pull_seen", CLUSTER_PULL_SEEN},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_1dc_rcv_ack", CLUSTER_1DC_RCV_ACK},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_2dc_snd_ack", CLUSTER_2DC_SND_ACK},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_1_cpi_rcv_ack", CLUSTER_1_CPI_RCV_ACK},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_2_cpi_rcv_ack", CLUSTER_2_CPI_RCV_ACK},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"clust_pkt_que_odd", CLUSTER_PKT_QUE_ODD},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_pkt_que_even", CLUSTER_PKT_QUE_EVEN},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"clust_pkt_sent_odd", CLUSTER_PKT_SENT_ODD},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_pkt_sent_even", CLUSTER_PKT_SENT_EVEN},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_hli_req_0", CLUSTER_HLI_REQ_0},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_hli_req_1", CLUSTER_HLI_REQ_1},
64e70e4b86d3f732d3513189312f6220d1d5cfbcThomas Bächler {"clust_hli_req_2", CLUSTER_HLI_REQ_2},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_req_3", CLUSTER_HLI_REQ_3},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_req_4", CLUSTER_HLI_REQ_4},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_req_5", CLUSTER_HLI_REQ_5},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_grant_0", CLUSTER_HLI_GRANT_0},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"clust_hli_grant_1", CLUSTER_HLI_GRANT_1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_grant_2", CLUSTER_HLI_GRANT_2},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"clust_hli_grant_3", CLUSTER_HLI_GRANT_3},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"clust_hli_grant_4", CLUSTER_HLI_GRANT_4},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"clust_hli_grant_5", CLUSTER_HLI_GRANT_5},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering /* cnt 0 duration */
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek {"clust_agent_retired_duration",
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek CLUSTER_AGENT_RETIRED | WCI_DURATION_BIT},
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek {"clust_pull_seen_duration",
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek CLUSTER_PULL_SEEN | WCI_DURATION_BIT},
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek {"clust_1dc_rcv_ack_duration",
2968644080fd103062f070e83edd620e0a58c44dZbigniew Jędrzejewski-Szmek CLUSTER_1DC_RCV_ACK | WCI_DURATION_BIT},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"clust_2dc_snd_ack_duration",
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek CLUSTER_2DC_SND_ACK | WCI_DURATION_BIT},
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek {"clust_pkt_sent_odd_duration",
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek CLUSTER_PKT_SENT_ODD | WCI_DURATION_BIT},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_pkt_sent_even_duration",
0d3d3be1e225d51ebf46fb40a89419eb6a7d334eFranck Bui CLUSTER_PKT_SENT_EVEN | WCI_DURATION_BIT},
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering {"clust_1_cpi_rcv_ack_duration",
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering CLUSTER_1_CPI_RCV_ACK | WCI_DURATION_BIT},
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering {"clust_2_cpi_rcv_ack_duration",
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering CLUSTER_2_CPI_RCV_ACK | WCI_DURATION_BIT},
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering /* Request agent */
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"req_agent_alloc", REQ_AGENT_ALLOC},
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"req_agent_retired", REQ_AGENT_RETIRED},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_sfi_grant_p2", REQ_SFI_GRANT_P2},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_1dc_rcv_ack", REQ_1DC_RCV_ACK},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"req_2dc_snd_ack", REQ_2DC_SND_ACK},
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering {"req_1_cpi_rcv_ack", REQ_1_CPI_RCV_ACK},
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering {"req_2_cpi_rcv_ack", REQ_2_CPI_RCV_ACK},
7410616cd9dbbec97cf98d75324da5cda2b2f7a2Lennart Poettering {"req_pkt_que", REQ_PKT_QUE},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_pkt_sent", REQ_PKT_SENT},
b7def684941808600c344f0be7a2b9fcdda97e0fLennart Poettering {"req_pkt_sent_clust_rd", REQ_PKT_SENT_CLUST_RD},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"req_pkt_sent_clust_wr", REQ_PKT_SENT_CLUST_WR},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"req_hli_req_0", REQ_HLI_REQ_0},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_req_1", REQ_HLI_REQ_1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_req_2", REQ_HLI_REQ_2},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_req_3", REQ_HLI_REQ_3},
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"req_hli_req_4", REQ_HLI_REQ_4},
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"req_hli_req_5", REQ_HLI_REQ_5},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_grant_0", REQ_HLI_GRANT_0},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_grant_1", REQ_HLI_GRANT_1},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_grant_2", REQ_HLI_GRANT_2},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_hli_grant_3", REQ_HLI_GRANT_3},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"req_hli_grant_4", REQ_HLI_GRANT_4},
c3834f9b881f2b1a68dc7d797c134f0b66b47b57Lennart Poettering {"req_hli_grant_5", REQ_HLI_GRANT_5},
700e07ffd53083114e91bb4ba646ed26d0463f67Harald Hoyer {"req_last_reply_rcvd", REQ_LAST_REPLY_RCVD},
700e07ffd53083114e91bb4ba646ed26d0463f67Harald Hoyer {"req_sent_clust_rd", REQ_SENT_CLUST_RD},
0d3d3be1e225d51ebf46fb40a89419eb6a7d334eFranck Bui {"req_sent_clust_wr", REQ_SENT_CLUST_WR},
700e07ffd53083114e91bb4ba646ed26d0463f67Harald Hoyer {"req_piq_valid", REQ_PIQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_piq_dispatch", REQ_PIQ_DISPATCH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_ciq_valid", REQ_CIQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_ciq_dispatch", REQ_CIQ_DISPATCH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_niq_valid", REQ_NIQ_VALID},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_niq_dispatch", REQ_NIQ_DISPATCH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_numa_bypass_dispatch", REQ_NUMA_BYPASS_DISPATCH},
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak /* cnt 0 duration */
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak {"req_agent_retired_duration",
3519d230c8bafe834b2dac26ace49fcfba139823Karel Zak REQ_AGENT_RETIRED | WCI_DURATION_BIT},
700e07ffd53083114e91bb4ba646ed26d0463f67Harald Hoyer {"req_1dc_rcv_ack_duration",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering REQ_1DC_RCV_ACK | WCI_DURATION_BIT},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_2dc_snd_ack_duration",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering REQ_2DC_SND_ACK | WCI_DURATION_BIT},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"req_1_cpi_rcv_ack_duration",
336b5c615e9c101476784b32df1b86aaeac96431Zbigniew Jędrzejewski-Szmek REQ_1_CPI_RCV_ACK | WCI_DURATION_BIT},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"req_2_cpi_rcv_ack_duration",
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich REQ_2_CPI_RCV_ACK | WCI_DURATION_BIT},
deb0a77cf0b409141c4b116ae30becb3d878e1adMichael Olbrich {"req_pkt_sent_duration", REQ_PKT_SENT | WCI_DURATION_BIT},
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek {"req_last_reply_rcvd_duration",
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek REQ_LAST_REPLY_RCVD | WCI_DURATION_BIT},
4652c56c59682f153c34d30b410534e4f0c6fd6aZbigniew Jędrzejewski-Szmek /* Home Agent */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_agent_alloc", HOME_AGENT_ALLOC},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_agent_retired", HOME_AGENT_RETIRED},
b7def684941808600c344f0be7a2b9fcdda97e0fLennart Poettering {"home_sfi_p8_rd_aux", HOME_SFI_P8_RD_AUX},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"home_sfi_p8_rd_main", HOME_SFI_P8_RD_MAIN},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"home_sfi_p8_wr", HOME_SFI_P8_WR},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_sfi_p9_wr", HOME_SFI_P9_WR},
d2e54fae5ca7a0f71b5ac8b356a589ff0a09ea0aKay Sievers {"home_sfi_p10_wr", HOME_SFI_P10_WR},
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"home_1dc_rcv_ack_aux", HOME_1DC_RCV_ACK_AUX},
4a62c710b62a5a3c7a8a278b810b9d5b5a0c8f4fMichal Schmidt {"home_1dc_rcv_ack_main", HOME_1DC_RCV_ACK_MAIN},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_2dc_snd_ack", HOME_2DC_SND_ACK},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_sfi_pull_seen", HOME_SFI_PULL_SEEN},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek {"home_last_demrep_sent", HOME_LAST_DEMREP_SENT},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_comp_pkt_seen", HOME_COMP_PKT_SEEN},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_0_a", HOME_HLI_REQ_LINK_0_A},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_hli_req_link_0_b", HOME_HLI_REQ_LINK_0_B},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"home_hli_req_link_1_a", HOME_HLI_REQ_LINK_1_A},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_hli_req_link_1_b", HOME_HLI_REQ_LINK_1_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_2_a", HOME_HLI_REQ_LINK_2_A},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_hli_req_link_2_b", HOME_HLI_REQ_LINK_2_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_3_a", HOME_HLI_REQ_LINK_3_A},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_hli_req_link_3_b", HOME_HLI_REQ_LINK_3_B},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_hli_req_link_4_a", HOME_HLI_REQ_LINK_4_A},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_4_b", HOME_HLI_REQ_LINK_4_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_5_a", HOME_HLI_REQ_LINK_5_A},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_req_link_5_b", HOME_HLI_REQ_LINK_5_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_0_a", HOME_HLI_GRANT_LINK_0_A},
56f64d95763a799ba4475daf44d8e9f72a1bd474Michal Schmidt {"home_hli_grant_link_0_b", HOME_HLI_GRANT_LINK_0_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_1_a", HOME_HLI_GRANT_LINK_1_A},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_1_b", HOME_HLI_GRANT_LINK_1_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_2_a", HOME_HLI_GRANT_LINK_2_A},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_2_b", HOME_HLI_GRANT_LINK_2_B},
7fd1b19bc9e9f5574f2877936b8ac267c7706947Harald Hoyer {"home_hli_grant_link_3_a", HOME_HLI_GRANT_LINK_3_A},
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek {"home_hli_grant_link_3_b", HOME_HLI_GRANT_LINK_3_B},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_4_a", HOME_HLI_GRANT_LINK_4_A},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_hli_grant_link_4_b", HOME_HLI_GRANT_LINK_4_B},
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen {"home_hli_grant_link_5_a", HOME_HLI_GRANT_LINK_5_A},
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen {"home_hli_grant_link_5_b", HOME_HLI_GRANT_LINK_5_B},
3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0dTom Gundersen {"home_blk_cam_hit", HOME_BLK_CAM_HIT},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_dir_rtned-before_rd_grant",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering HOME_DIR_RTNED_BEFORE_RD_GRANT},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_dir_rtned_before_rd_order",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering HOME_DIR_RTNED_BEFORE_RD_ORDER},
00b4ffdecbb39d849af65c0ab741be482325a4a9Lennart Poettering {"home_dir_rtned_before_rd_data",
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering HOME_DIR_RTNED_BEFORE_RD_DATA},
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering {"home_dir_rtned_after_rd_data",
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering HOME_DIR_RTNED_AFTER_RD_DATA},
689aede8c622ba68d9060e4edee27364445b2007Lennart Poettering {"home_req_home", HOME_REQ_HOME},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_req_same_box", HOME_REQ_SAME_BOX},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"home_ref_data_back_home", HOME_REF_DATA_BACK_HOME},
5862d652ba14178cff46b8a8fc6c6d8392bf32b1Zbigniew Jędrzejewski-Szmek {"home_dir_miss_alloc", HOME_DIR_MISS_ALLOC},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_dir_hit_gi", HOME_DIR_HIT_GI},
ec6ceb18663940efb1963704923430be0e83f1f7Kay Sievers {"home_dir_hit_gs", HOME_DIR_HIT_GS},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_dir_hit_gm", HOME_DIR_HIT_GM},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_dir_hit_rto_gm", HOME_DIR_HIT_RTO_GM},
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek {"home_dir_hit_rts_gms", HOME_DIR_HIT_RTS_GMS},
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek {"home_dir_miss_rts_gi", HOME_DIR_MISS_RTS_GI},
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek {"home_dir_miss_rts", HOME_DIR_MISS_RTS},
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek {"home_dir_miss_rto_gs_gi", HOME_DIR_MISS_RTO_GS_GI},
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek {"home_dir_miss_rto", HOME_DIR_MISS_RTO},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering /* cnt 0 duration */
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"home_agent_retired_duration",
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek HOME_AGENT_RETIRED | WCI_DURATION_BIT},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"home_1dc_rcv_ack_aux_duration",
5607d856b8606ba75446a07ab5e9048753e1d7a6Zbigniew Jędrzejewski-Szmek HOME_1DC_RCV_ACK_AUX | WCI_DURATION_BIT},
80c3b720bf3abbcc9427507d540e286c4ceb3e94Tom Gundersen {"home_1dc_rcv_ack_main_duration",
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen HOME_1DC_RCV_ACK_MAIN | WCI_DURATION_BIT},
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek {"home_2dc_snd_ack_duration",
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek HOME_2DC_SND_ACK | WCI_DURATION_BIT},
b9f111b93f9f442f00266f338b14f25ca8685352Zbigniew Jędrzejewski-Szmek {"home_sfi_pull_seen_duration",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering HOME_SFI_PULL_SEEN | WCI_DURATION_BIT},
700e07ffd53083114e91bb4ba646ed26d0463f67Harald Hoyer {"home_comp_pkt_seen_duration",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering HOME_COMP_PKT_SEEN | WCI_DURATION_BIT},
0c17fbce55a9a2ca48318a918adce4c58ae79d98Lennart Poettering /* Slave agent */
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"slave_agent_alloc", SLAVE_AGENT_ALLOC},
0c17fbce55a9a2ca48318a918adce4c58ae79d98Lennart Poettering {"slave_agent_alloc_lpa", SLAVE_AGENT_ALLOC_LPA},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"slave_agent_alloc_ga", SLAVE_AGENT_ALLOC_GA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_lpa", SLAVE_AGENT_ALLOC_H_LPA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_ga", SLAVE_AGENT_ALLOC_H_GA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_mlpa", SLAVE_AGENT_ALLOC_H_MLPA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_mga", SLAVE_AGENT_ALLOC_H_MGA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_m", SLAVE_AGENT_ALLOC_H_M},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_inv_lpa", SLAVE_AGENT_ALLOC_H_INV_LPA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_alloc_h_inv_ga", SLAVE_AGENT_ALLOC_H_INV_GA},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_retired", SLAVE_AGENT_RETIRED},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_reply_sent", SLAVE_REPLY_SENT},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_sfi_p6_grant_wr", SLAVE_SFI_P6_GRANT_WR},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"slave_sfi_p12gt_rlpa", SLAVE_SFI_P12GT_RLPA},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"slave_sfi_p12gt_rga", SLAVE_SFI_P12GT_RGA},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"slave_sfi_p12gt_rhlpa",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering SLAVE_SFI_P12GT_RHLPA},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"slave_sfi_p12gt_rhga", SLAVE_SFI_P12GT_RHGA},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"slave_sfi_p12gt_rhmlpa",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering SLAVE_SFI_P12GT_RHMLPA},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"slave_sfi_p12gt_rhmga",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering SLAVE_SFI_P12GT_RHMGA},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {"slave_sfi_p12gt_wr", SLAVE_SFI_P12GT_WR},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_1dc_rcv_ack", SLAVE_1DC_RCV_ACK},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_2dc_snd_ack", SLAVE_2DC_SND_ACK},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"slave_2dc_snd_ack_refl", SLAVE_2DC_SND_ACK_REFL},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_4dc_snd_ack", SLAVE_4DC_SND_ACK},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_pull_seen", SLAVE_PULL_SEEN},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_h_m_ga_not_ownd", SLAVE_H_M_GA_NOT_OWND},
135b5212d4234f5b75c9b86c9f924047c8d07589Harald Hoyer {"slave_h_m_no_state_change", SLAVE_H_M_NO_STATE_CHANGE},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"slave_hli_req_0", SLAVE_HLI_REQ_0},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_hli_req_1", SLAVE_HLI_REQ_1},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_hli_req_2", SLAVE_HLI_REQ_2},
171181bcd64d5a128f6678107d18ffa1c9388b94Lennart Poettering {"slave_hli_req_3", SLAVE_HLI_REQ_3},
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger {"slave_hli_req_4", SLAVE_HLI_REQ_4},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_hli_req_5", SLAVE_HLI_REQ_5},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_hli_grant_0", SLAVE_HLI_GRANT_0},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_hli_grant_1", SLAVE_HLI_GRANT_1},
d15d0333be6a1ca7fdd99a1881d967b6be8f387aZbigniew Jędrzejewski-Szmek {"slave_hli_grant_2", SLAVE_HLI_GRANT_2},
63c372cb9df3bee01e3bf8cd7f96f336bddda846Lennart Poettering {"slave_hli_grant_3", SLAVE_HLI_GRANT_3},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_hli_grant_4", SLAVE_HLI_GRANT_4},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_hli_grant_5", SLAVE_HLI_GRANT_5},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen /* cnt0 duration */
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_agent_retired_duration",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering SLAVE_AGENT_RETIRED | WCI_DURATION_BIT},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_1dc_rcv_ack_c0_duration",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering SLAVE_1DC_RCV_ACK | WCI_DURATION_BIT},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"slave_2dc_snd_ack_duration",
093c2cfe3b1ae6081f12927ae7906d90d6623534Tobias Hunger SLAVE_2DC_SND_ACK | WCI_DURATION_BIT},
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering {"slave_pull_seen_duration",
5ecdcf41cbce38c44b399993cb1c356280e0bafdLennart Poettering SLAVE_PULL_SEEN | WCI_DURATION_BIT},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_reply_sent_duration",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering SLAVE_REPLY_SENT | WCI_DURATION_BIT},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"slave_4dc_snd_ack_duration",
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen SLAVE_4DC_SND_ACK | WCI_DURATION_BIT},
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen {"clear_pic", MISC_CLEAR_PIC0},
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek {EOSTR, 0}
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger },
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger/* pic 1 */
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger /* SFI agent */
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_sfi_histogram0", SFI_SFI_HISTOGRAM0<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_sfi_histogram1", SFI_SFI_HISTOGRAM1<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_1", SFI_ATRANSID_ALLOC_1<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_4", SFI_ATRANSID_ALLOC_4<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_8", SFI_ATRANSID_ALLOC_8<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_10", SFI_ATRANSID_ALLOC_10<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_12", SFI_ATRANSID_ALLOC_12<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_dealloc", SFI_ATRANSID_DEALLOC<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_targid_alloc_0", SFI_TARGID_ALLOC_0<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_targid_alloc_2", SFI_TARGID_ALLOC_2<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_targid_alloc_8", SFI_TARGID_ALLOC_8<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_targid_dealloc", SFI_TARGID_DEALLOC<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p0_req_valid", SFI_P0_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p1_req_valid", SFI_P1_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p2_req_valid", SFI_P2_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p3_req_valid", SFI_P3_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p4_req_valid", SFI_P4_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p5_req_valid", SFI_P5_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p6_req_valid", SFI_P6_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p7_req_valid", SFI_P7_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p8_req_valid", SFI_P8_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p9_req_valid", SFI_P9_REQ_VALID<<10},
eb5800026d5a6754514fb8f8a8561b49974fc879Michael Marineau {"sfi_p10_req_valid", SFI_P10_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p11_req_valid", SFI_P11_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p12_req_valid", SFI_P12_REQ_VALID<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p0_grant", SFI_P0_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p1_grant", SFI_P1_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p2_grant", SFI_P2_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p3_grant", SFI_P3_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p4_grant", SFI_P4_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p5_grant", SFI_P5_GRANT<<10},
eb5800026d5a6754514fb8f8a8561b49974fc879Michael Marineau {"sfi_p6_grant", SFI_P6_GRANT<<10},
eb5800026d5a6754514fb8f8a8561b49974fc879Michael Marineau {"sfi_p7_grant", SFI_P7_GRANT<<10},
d15d0333be6a1ca7fdd99a1881d967b6be8f387aZbigniew Jędrzejewski-Szmek {"sfi_p8_grant", SFI_P8_GRANT<<10},
63c372cb9df3bee01e3bf8cd7f96f336bddda846Lennart Poettering {"sfi_p9_grant", SFI_P9_GRANT<<10},
eb5800026d5a6754514fb8f8a8561b49974fc879Michael Marineau {"sfi_p10_grant", SFI_P10_GRANT<<10},
eb5800026d5a6754514fb8f8a8561b49974fc879Michael Marineau {"sfi_p11_grant", SFI_P11_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_p12_grant", SFI_P12_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_sfi_pull_req", SFI_SFI_PULL_REQ<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_sfi_pull_grant", SFI_SFI_PULL_GRANT<<10},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger /* cnt1 duration */
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_1_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_ATRANSID_ALLOC_1_DURATION},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_4_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_ATRANSID_ALLOC_4_DURATION},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_8_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_ATRANSID_ALLOC_8_DURATION},
104bc12fbc23c3ca852d9d389805c615cd590d01nmartensen {"sfi_atransid_alloc_10_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_ATRANSID_ALLOC_10_DURATION},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_atransid_alloc_12_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_ATRANSID_ALLOC_12_DURATION},
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering {"sfi_targid_alloc_0_duration",
74df0fca09b3c31ed19e14ba80f996fdff772417Lennart Poettering SFI_TARGID_ALLOC_0_DURATION},
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering {"sfi_targid_alloc_2_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_TARGID_ALLOC_2_DURATION},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"sfi_targid_alloc_8_duration",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger SFI_TARGID_ALLOC_8_DURATION},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering /* DC agent */
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering {"dc_dif_output_valid", DC_DIF_OUTPUT_VALID<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"dc_sfi_data_grant", DC_SFI_DATA_GRANT<<10},
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering /* LC agent */
141a79f491fd4bf5ea0d66039065c9f9649bfc0eZbigniew Jędrzejewski-Szmek {"lc_dif_push", LC_DIF_PUSH<<10},
059cb3858acd038ff2cef10a3a99119bf71a8fc6Lennart Poettering {"lc_com_valid_links_dif_full",
141a79f491fd4bf5ea0d66039065c9f9649bfc0eZbigniew Jędrzejewski-Szmek LC_COM_VALID_LINKS_DIF_FULL<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"lc_data_pkt_fr_node", LC_DATA_PKT_FR_NODE<<10},
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering {"lc_sfi_data_cancle", LC_SFI_DATA_CANCEL<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering /* SFQ agent */
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"sfq_piq_push", SFQ_PIQ_PUSH<<10},
f88dc3edeb9c49622fcc773cb6153238fe9efbe2Tobias Hunger {"sfq_piq_pop", SFQ_PIQ_POP<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"sfq_niq_push", SFQ_NIQ_PUSH<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"sfq_niq_pop", SFQ_NIQ_POP<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"sfq_siq_push", SFQ_SIQ_PUSH<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"sfq_siq_pop", SFQ_SIQ_POP<<10},
f88dc3edeb9c49622fcc773cb6153238fe9efbe2Tobias Hunger /* HLI agent */
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_slq_push", HLI_SLQ_PUSH<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_slq_pop", HLI_SLQ_POP<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_chq_push", HLI_CHQ_PUSH<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_chq_pop", HLI_CHQ_POP<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_phq_push", HLI_PHQ_PUSH<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"hli_phq_pop", HLI_PHQ_POP<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering /* Cache Control agent */
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0", CACHECTL_CLUST0<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust1", CACHECTL_CLUST1<<10},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering /* pic1, cluster event 0 */
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_cwr",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering (CACHECTL_CLUST_CWR<<4) | (CACHECTL_CLUST0<<10)},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_crd",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering (CACHECTL_CLUST_CRD<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_crd_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_CRD_CWR<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_at",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_AT<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_at_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_AT_CWR<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_at_crd",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_AT_CRD<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_at_crd_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_AT_CRD_CWR<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_CWR<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int_crd",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_CRD<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int_crd_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_CRD_CWR<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int_at",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_AT<<4) | (CACHECTL_CLUST0<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust0_int_at_cwr",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_AT_CWR<<4) | (CACHECTL_CLUST0<<10)},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_int_at_crd",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering (CACHECTL_CLUST_INT_AT_CRD<<4) | (CACHECTL_CLUST0<<10)},
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering {"cachectl_clust0_int_at_crd_cwr",
6db615c17ee7a434f9e0c40d67a1f833d8f3cc9dLennart Poettering (CACHECTL_CLUST_INT_AT_CRD_CWR<<4) |
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering (CACHECTL_CLUST0<<10)},
d0aa9ce51915f6f7448adfeb4be0f46cc1356124Zbigniew Jędrzejewski-Szmek /* pic1, clust event 1 */
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering {"cachectl_clust1_cwr",
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering (CACHECTL_CLUST_CWR<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_crd",
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering (CACHECTL_CLUST_CRD<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_crd_cwr",
07719a21b6425d378b36bb8d7f47ad5ec5296d28Lennart Poettering (CACHECTL_CLUST_CRD_CWR<<4) | (CACHECTL_CLUST1<<10)},
07719a21b6425d378b36bb8d7f47ad5ec5296d28Lennart Poettering {"cachectl_clust1_at",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (CACHECTL_CLUST_AT<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_at_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (CACHECTL_CLUST_AT_CWR<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_at_crd",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (CACHECTL_CLUST_AT_CRD<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_at_crd_cwr",
a6903061530cac5fbaa99a080a93221c02c349f9Lennart Poettering (CACHECTL_CLUST_AT_CRD_CWR<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_int",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (CACHECTL_CLUST_INT<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_int_cwr",
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering (CACHECTL_CLUST_INT_CWR<<4) | (CACHECTL_CLUST1<<10)},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"cachectl_clust1_int_crd",
b5884878a2874447b2a9f07f324a7cd909d96d48Lennart Poettering (CACHECTL_CLUST_INT_CRD<<4) | (CACHECTL_CLUST1<<10)},
b5884878a2874447b2a9f07f324a7cd909d96d48Lennart Poettering {"cachectl_clust1_int_crd_cwr",
da927ba997d68401563b927f92e6e40e021a8e5cMichal Schmidt (CACHECTL_CLUST_INT_CRD_CWR<<4) | (CACHECTL_CLUST1<<10)},
9473414219330b9febc1d0712bbf49ad74cf962fLennart Poettering {"cachectl_clust1_int_at",
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger (CACHECTL_CLUST_INT_AT<<4) | (CACHECTL_CLUST1<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust1_int_at_cwr",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek (CACHECTL_CLUST_INT_AT_CWR<<4) | (CACHECTL_CLUST1<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust1_int_at_crd",
2e8522767e27d5686206794c69e0aa95da6e798bZbigniew Jędrzejewski-Szmek (CACHECTL_CLUST_INT_AT_CRD<<4) | (CACHECTL_CLUST1<<10)},
9f103625b145a397e67c3714766775b615c8b587Tobias Hunger {"cachectl_clust1_int_at_crd_cwr",
5e398e546ea65751e6a774daf828fe06f74434a2Tom Gundersen (CACHECTL_CLUST_INT_AT_CRD_CWR<<4) |
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering (CACHECTL_CLUST1<<10)},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_cache_cyl_used", CACHECTL_CACHE_CYL_USED<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_lpa2ga_lookup", CACHECTL_LPA2GA_LOOKUP<<10},
ac4785b031451030aeb5cd46e94c7e8f43796decHarald Hoyer {"cachectl_ga2lpa_access", CACHECTL_GA2LPA_ACCESS<<10},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"cachectl_ga2lpa_lookup", CACHECTL_GA2LPA_LOOKUP<<10},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"cachectl_ga2lpa_miss", CACHECTL_GA2LPA_MISS<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_dir_lookup", CACHECTL_DIR_LOOKUP<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_dir_miss", CACHECTL_DIR_MISS<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_dir_wrtbk", CACHECTL_DIR_WRTBK<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_cmmu_access", CACHECTL_CMMU_ACCESS<<10},
ac4785b031451030aeb5cd46e94c7e8f43796decHarald Hoyer {"cachectl_cmmu_lookup", CACHECTL_CMMU_LOOKUP<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_csr_lookup", CACHECTL_CSR_LOOKUP<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_cnt_alwys", CACHECTL_CNT_ALWYS<<10},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"cachectl_hag_req_valid", CACHECTL_HAG_REQ_VALID<<10},
75a59316ea0d4bb9d04cce138817d9fa8a75479fZbigniew Jędrzejewski-Szmek {"cachectl_ciq_req_valid", CACHECTL_CIQ_REQ_VALID<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"cachectl_slq_req_valid", CACHECTL_SLQ_REQ_VALID<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering /* Cluster agent */
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_agent_alloc", CLUSTER_AGENT_ALLOC<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_agent_retired", CLUSTER_AGENT_RETIRED<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_sfi_grant_rd", CLUSTER_SFI_GRANT_RD<<10},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_sfi_grant_wr", CLUSTER_SFI_GRANT_WR<<10},
126cc76074b763c7de9edec848fb86b22e8a78efZbigniew Jędrzejewski-Szmek {"clust_pull_seen", CLUSTER_PULL_SEEN<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_1dc_rcv_ack", CLUSTER_1DC_RCV_ACK<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_2dc_snd_ack", CLUSTER_2DC_SND_ACK<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_1_cpi_rcv_ack", CLUSTER_1_CPI_RCV_ACK<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_2_cpi_rcv_ack", CLUSTER_2_CPI_RCV_ACK<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_pkt_que_odd", CLUSTER_PKT_QUE_ODD<<10},
59cfa62f20f566b2c0279405b302e890812b3334Lennart Poettering {"clust_pkt_que_even", CLUSTER_PKT_QUE_EVEN<<10},
126cc76074b763c7de9edec848fb86b22e8a78efZbigniew Jędrzejewski-Szmek {"clust_pkt_sent_odd", CLUSTER_PKT_SENT_ODD<<10},
e48fdd84432bbf9c2ecc339183258c7c33116032Lennart Poettering {"clust_pkt_sent_even", CLUSTER_PKT_SENT_EVEN<<10},
6b1dc2bd3cdb3bd932b0692be636ddd2879edb92Lennart Poettering {"clust_hli_req_0", CLUSTER_HLI_REQ_0<<10},
{"clust_hli_req_1", CLUSTER_HLI_REQ_1<<10},
{"clust_hli_req_2", CLUSTER_HLI_REQ_2<<10},
{"clust_hli_req_3", CLUSTER_HLI_REQ_3<<10},
{"clust_hli_req_4", CLUSTER_HLI_REQ_4<<10},
{"clust_hli_req_5", CLUSTER_HLI_REQ_5<<10},
{"clust_hli_grant_0", CLUSTER_HLI_GRANT_0<<10},
{"clust_hli_grant_1", CLUSTER_HLI_GRANT_1<<10},
{"clust_hli_grant_2", CLUSTER_HLI_GRANT_2<<10},
{"clust_hli_grant_3", CLUSTER_HLI_GRANT_3<<10},
{"clust_hli_grant_4", CLUSTER_HLI_GRANT_4<<10},
{"clust_hli_grant_5", CLUSTER_HLI_GRANT_5<<10},
/* cnt1 duration */
{"clust_agent_alloc_duration",
CLUSTER_AGENT_ALLOC<<10 | WCI_DURATION_BIT},
{"clust_sfi_grant_wr_duration",
CLUSTER_SFI_GRANT_WR<<10 | WCI_DURATION_BIT},
{"clust_sfi_grant_rd_duration",
CLUSTER_SFI_GRANT_RD<<10 | WCI_DURATION_BIT},
{"clust_1dc_rcv_ack_duration",
CLUSTER_1DC_RCV_ACK<<10 | WCI_DURATION_BIT},
{"clust_pkt_que_odd_duration",
CLUSTER_PKT_QUE_ODD<<10 | WCI_DURATION_BIT},
{"clust_pkt_que_even_duration",
CLUSTER_PKT_QUE_EVEN<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_0_duration",
CLUSTER_HLI_GRANT_0<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_1_duration",
CLUSTER_HLI_GRANT_1<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_2_duration",
CLUSTER_HLI_GRANT_2<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_3_duration",
CLUSTER_HLI_GRANT_3<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_4_duration",
CLUSTER_HLI_GRANT_4<<10 | WCI_DURATION_BIT},
{"clust_hli_grant_5_duration",
CLUSTER_HLI_GRANT_5<<10 | WCI_DURATION_BIT},
{"clust_1_cpi_rcv_ack_duration",
CLUSTER_1_CPI_RCV_ACK<<10 | WCI_DURATION_BIT},
/* Request agent */
{"req_agent_alloc", REQ_AGENT_ALLOC<<10},
{"req_agent_retired", REQ_AGENT_RETIRED<<10},
{"req_sfi_grant_p2", REQ_SFI_GRANT_P2<<10},
{"req_1dc_rcv_ack", REQ_1DC_RCV_ACK<<10},
{"req_2dc_snd_ack", REQ_2DC_SND_ACK<<10},
{"req_1_cpi_rcv_ack", REQ_1_CPI_RCV_ACK<<10},
{"req_2_cpi_rcv_ack", REQ_2_CPI_RCV_ACK<<10},
{"req_pkt_que", REQ_PKT_QUE<<10},
{"req_pkt_sent", REQ_PKT_SENT<<10},
{"req_pkt_sent_clust_rd", REQ_PKT_SENT_CLUST_RD<<10},
{"req_pkt_sent_clust_wr", REQ_PKT_SENT_CLUST_WR<<10},
{"req_hli_req_0", REQ_HLI_REQ_0<<10},
{"req_hli_req_1", REQ_HLI_REQ_1<<10},
{"req_hli_req_2", REQ_HLI_REQ_2<<10},
{"req_hli_req_3", REQ_HLI_REQ_3<<10},
{"req_hli_req_4", REQ_HLI_REQ_4<<10},
{"req_hli_req_5", REQ_HLI_REQ_5<<10},
{"req_hli_grant_0", REQ_HLI_GRANT_0<<10},
{"req_hli_grant_1", REQ_HLI_GRANT_1<<10},
{"req_hli_grant_2", REQ_HLI_GRANT_2<<10},
{"req_hli_grant_3", REQ_HLI_GRANT_3<<10},
{"req_hli_grant_4", REQ_HLI_GRANT_4<<10},
{"req_hli_grant_5", REQ_HLI_GRANT_5<<10},
{"req_last_reply_rcvd", REQ_LAST_REPLY_RCVD<<10},
{"req_sent_clust_rd", REQ_SENT_CLUST_RD<<10},
{"req_sent_clust_wr", REQ_SENT_CLUST_WR<<10},
{"req_piq_valid", REQ_PIQ_VALID<<10},
{"req_piq_dispatch", REQ_PIQ_DISPATCH<<10},
{"req_ciq_valid", REQ_CIQ_VALID<<10},
{"req_ciq_dispatch", REQ_CIQ_DISPATCH<<10},
{"req_niq_valid", REQ_NIQ_VALID<<10},
{"req_niq_dispatch", REQ_NIQ_DISPATCH<<10},
{"req_numa_bypass_dispatch", REQ_NUMA_BYPASS_DISPATCH<<10},
/* cnt1 duration */
{"req_agent_alloc_duration",
REQ_AGENT_ALLOC<<10 | WCI_DURATION_BIT},
{"req_sfi_grant_p2_duration",
REQ_SFI_GRANT_P2<<10 | WCI_DURATION_BIT},
{"req_1dc_rcv_ack_duration",
REQ_1DC_RCV_ACK<<10 | WCI_DURATION_BIT},
{"req_pkt_sent_clust_rd_duration",
REQ_PKT_SENT_CLUST_RD<<10 | WCI_DURATION_BIT},
{"req_1_cpi_rcv_ack_duration",
REQ_1_CPI_RCV_ACK<<10 | WCI_DURATION_BIT},
{"req_pkt_que_duration", REQ_PKT_QUE<<10 | WCI_DURATION_BIT},
{"req_pkt_sent_duration",
REQ_PKT_SENT<<10 | WCI_DURATION_BIT},
/* Home Agent */
{"home_agent_alloc", HOME_AGENT_ALLOC<<10},
{"home_agent_retired", HOME_AGENT_RETIRED<<10},
{"home_sfi_p8_rd_aux", HOME_SFI_P8_RD_AUX<<10},
{"home_sfi_p8_rd_main", HOME_SFI_P8_RD_MAIN<<10},
{"home_sfi_p8_wr", HOME_SFI_P8_WR<<10},
{"home_sfi_p9_wr", HOME_SFI_P9_WR<<10},
{"home_sfi_p10_wr", HOME_SFI_P10_WR<<10},
{"home_1dc_rcv_ack_aux", HOME_1DC_RCV_ACK_AUX<<10},
{"home_1dc_rcv_ack_main", HOME_1DC_RCV_ACK_MAIN<<10},
{"home_2dc_snd_ack", HOME_2DC_SND_ACK<<10},
{"home_sfi_pull_seen", HOME_SFI_PULL_SEEN<<10},
{"home_last_demrep_sent", HOME_LAST_DEMREP_SENT<<10},
{"home_comp_pkt_seen", HOME_COMP_PKT_SEEN<<10},
{"home_hli_req_link_0_a", HOME_HLI_REQ_LINK_0_A<<10},
{"home_hli_req_link_0_b", HOME_HLI_REQ_LINK_0_B<<10},
{"home_hli_req_link_1_a", HOME_HLI_REQ_LINK_1_A<<10},
{"home_hli_req_link_1_b", HOME_HLI_REQ_LINK_1_B<<10},
{"home_hli_req_link_2_a", HOME_HLI_REQ_LINK_2_A<<10},
{"home_hli_req_link_2_b", HOME_HLI_REQ_LINK_2_B<<10},
{"home_hli_req_link_3_a", HOME_HLI_REQ_LINK_3_A<<10},
{"home_hli_req_link_3_b", HOME_HLI_REQ_LINK_3_B<<10},
{"home_hli_req_link_4_a", HOME_HLI_REQ_LINK_4_A<<10},
{"home_hli_req_link_4_b", HOME_HLI_REQ_LINK_4_B<<10},
{"home_hli_req_link_5_a", HOME_HLI_REQ_LINK_5_A<<10},
{"home_hli_req_link_5_b", HOME_HLI_REQ_LINK_5_B<<10},
{"home_hli_grant_link_0_a", HOME_HLI_GRANT_LINK_0_A<<10},
{"home_hli_grant_link_0_b", HOME_HLI_GRANT_LINK_0_B<<10},
{"home_hli_grant_link_1_a", HOME_HLI_GRANT_LINK_1_A<<10},
{"home_hli_grant_link_1_b", HOME_HLI_GRANT_LINK_1_B<<10},
{"home_hli_grant_link_2_a", HOME_HLI_GRANT_LINK_2_A<<10},
{"home_hli_grant_link_2_b", HOME_HLI_GRANT_LINK_2_B<<10},
{"home_hli_grant_link_3_a", HOME_HLI_GRANT_LINK_3_A<<10},
{"home_hli_grant_link_3_b", HOME_HLI_GRANT_LINK_3_B<<10},
{"home_hli_grant_link_4_a", HOME_HLI_GRANT_LINK_4_A<<10},
{"home_hli_grant_link_4_b", HOME_HLI_GRANT_LINK_4_B<<10},
{"home_hli_grant_link_5_a", HOME_HLI_GRANT_LINK_5_A<<10},
{"home_hli_grant_link_5_b", HOME_HLI_GRANT_LINK_5_B<<10},
{"home_blk_cam_hit", HOME_BLK_CAM_HIT<<10},
{"home_dir_rtned_before_rd_grant",
HOME_DIR_RTNED_BEFORE_RD_GRANT<<10},
{"home_dir_rtned_before_rd_order",
HOME_DIR_RTNED_BEFORE_RD_ORDER<<10},
{"home_dir_rtned_before_rd_data",
HOME_DIR_RTNED_BEFORE_RD_DATA<<10},
{"home_dir_rtned_after_rd_data",
HOME_DIR_RTNED_AFTER_RD_DATA<<10},
{"home_req_home", HOME_REQ_HOME<<10},
{"home_req_same_box", HOME_REQ_SAME_BOX<<10},
{"home_ref_data_back_home", HOME_REF_DATA_BACK_HOME<<10},
{"home_dir_miss_alloc", HOME_DIR_MISS_ALLOC<<10},
{"home_dir_hit_gi", HOME_DIR_HIT_GI<<10},
{"home_dir_hit_gs", HOME_DIR_HIT_GS<<10},
{"home_dir_hit_gm", HOME_DIR_HIT_GM<<10},
{"home_dir_hit_rto_gm", HOME_DIR_HIT_RTO_GM<<10},
{"home_dir_hit_rts_gms", HOME_DIR_HIT_RTS_GMS<<10},
{"home_dir_miss_rts_gi", HOME_DIR_MISS_RTS_GI<<10},
{"home_dir_miss_rts", HOME_DIR_MISS_RTS<<10},
{"home_dir_miss_rto_gs_gi", HOME_DIR_MISS_RTO_GS_GI<<10},
{"home_dir_miss_rto", HOME_DIR_MISS_RTO<<10},
/* cnt1 duration */
{"home_agent_alloc_duration",
HOME_AGENT_ALLOC<<10 | WCI_DURATION_BIT},
{"home_sfi_p8_rd_aux_duration",
HOME_SFI_P8_RD_AUX<<10 | WCI_DURATION_BIT},
{"home_sfi_p8_rd_main_duration",
HOME_SFI_P8_RD_MAIN<<10 | WCI_DURATION_BIT},
{"home_1dc_rcv_ack_aux_duration",
HOME_1DC_RCV_ACK_AUX<<10 | WCI_DURATION_BIT},
{"home_1dc_rcv_ack_main_duration",
HOME_1DC_RCV_ACK_MAIN<<10 | WCI_DURATION_BIT},
{"home_sfi_p8_wr_duration",
HOME_SFI_P8_WR<<10 | WCI_DURATION_BIT},
{"home_sfi_p9_wr_duration",
HOME_SFI_P9_WR<<10 | WCI_DURATION_BIT},
{"home_sfi_p10_wr_duration",
HOME_SFI_P10_WR<<10 | WCI_DURATION_BIT},
{"home_last_demrep_sent_duration",
HOME_LAST_DEMREP_SENT<<10 | WCI_DURATION_BIT},
/* Slave agent */
{"slave_agent_alloc", SLAVE_AGENT_ALLOC<<10},
{"slave_agent_alloc_lpa", SLAVE_AGENT_ALLOC_LPA<<10},
{"slave_agent_alloc_ga", SLAVE_AGENT_ALLOC_GA<<10},
{"slave_agent_alloc_h_lpa", SLAVE_AGENT_ALLOC_H_LPA<<10},
{"slave_agent_alloc_h_ga", SLAVE_AGENT_ALLOC_H_GA<<10},
{"slave_agent_alloc_h_mlpa", SLAVE_AGENT_ALLOC_H_MLPA<<10},
{"slave_agent_alloc_h_mga", SLAVE_AGENT_ALLOC_H_MGA<<10},
{"slave_agent_alloc_h_m", SLAVE_AGENT_ALLOC_H_M<<10},
{"slave_agent_alloc_h_inv_lpa",
SLAVE_AGENT_ALLOC_H_INV_LPA<<10},
{"slave_agent_alloc_h_inv_ga",
SLAVE_AGENT_ALLOC_H_INV_GA<<10},
{"slave_agent_retired", SLAVE_AGENT_RETIRED<<10},
{"slave_reply_sent", SLAVE_REPLY_SENT<<10},
{"slave_sfi_p6_grant_wr", SLAVE_SFI_P6_GRANT_WR<<10},
{"slave_sfi_p12gt_rlpa",
SLAVE_SFI_P12GT_RLPA<<10},
{"slave_sfi_p12gt_rga",
SLAVE_SFI_P12GT_RGA<<10},
{"slave_sfi_p12gt_rhlpa",
SLAVE_SFI_P12GT_RHLPA<<10},
{"slave_sfi_p12gt_rhga",
SLAVE_SFI_P12GT_RHGA<<10},
{"slave_sfi_p12gt_rhmlpa",
SLAVE_SFI_P12GT_RHMLPA<<10},
{"slave_sfi_p12gt_rhmga",
SLAVE_SFI_P12GT_RHMGA<<10},
{"slave_sfi_p12gt_wr", SLAVE_SFI_P12GT_WR<<10},
{"slave_1dc_rcv_ack", SLAVE_1DC_RCV_ACK<<10},
{"slave_2dc_snd_ack", SLAVE_2DC_SND_ACK<<10},
{"slave_2dc_snd_ack_refl", SLAVE_2DC_SND_ACK_REFL<<10},
{"slave_4dc_snd_ack", SLAVE_4DC_SND_ACK<<10},
{"slave_pull_seen", SLAVE_PULL_SEEN<<10},
{"slave_h_m_ga_not_ownd", SLAVE_H_M_GA_NOT_OWND<<10},
{"slave_h_m_no_state_change", SLAVE_H_M_NO_STATE_CHANGE<<10},
{"slave_hli_req_0", SLAVE_HLI_REQ_0<<10},
{"slave_hli_req_1", SLAVE_HLI_REQ_1<<10},
{"slave_hli_req_2", SLAVE_HLI_REQ_2<<10},
{"slave_hli_req_3", SLAVE_HLI_REQ_3<<10},
{"slave_hli_req_4", SLAVE_HLI_REQ_4<<10},
{"slave_hli_req_5", SLAVE_HLI_REQ_5<<10},
{"slave_hli_grant_0", SLAVE_HLI_GRANT_0<<10},
{"slave_hli_grant_1", SLAVE_HLI_GRANT_1<<10},
{"slave_hli_grant_2", SLAVE_HLI_GRANT_2<<10},
{"slave_hli_grant_3", SLAVE_HLI_GRANT_3<<10},
{"slave_hli_grant_4", SLAVE_HLI_GRANT_4<<10},
{"slave_hli_grant_5", SLAVE_HLI_GRANT_5<<10},
/* cnt1 duration */
{"slave_agent_alloc_duration",
SLAVE_AGENT_ALLOC<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_rlpa_duration",
SLAVE_SFI_P12GT_RLPA<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_rga_duration",
SLAVE_SFI_P12GT_RGA<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_rhlpa_duration",
SLAVE_SFI_P12GT_RHLPA<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_rhga_duration",
SLAVE_SFI_P12GT_RHGA<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gtrhmlpa_duration",
SLAVE_SFI_P12GT_RHMLPA<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_rhmga_duration",
SLAVE_SFI_P12GT_RHMGA<<10 | WCI_DURATION_BIT},
{"slave_1dc_rcv_ack_c1_duration",
SLAVE_1DC_RCV_ACK<<10 | WCI_DURATION_BIT},
{"slave_sfi_p6_grant_wr_duration",
SLAVE_SFI_P6_GRANT_WR<<10 | WCI_DURATION_BIT},
{"slave_sfi_p12gt_wr_duration",
SLAVE_SFI_P12GT_WR<<10 | WCI_DURATION_BIT},
{"slave_2dc_sndack_refl_duration",
SLAVE_2DC_SND_ACK_REFL<<10 | WCI_DURATION_BIT},
{"clear_pic", MISC_CLEAR_PIC1},
{EOSTR, 0}
}
};
/* Loopback Counter */
static wci_event_mask_t
wci_lpbk_events_arr[WCI_NUM_PICS][WCI_LPBK_NUM_EVENTS+1] = {
/* pic 0 */
{
{"lpbk_rcvd_data_pkt", LPBK_RCVD_DATA_PKT},
{"lpbk_rcvd_addr_2_pkt", LPBK_RCVD_ADDR_2_PKT},
{"lpbk_raddr2_rdata", LPBK_RADDR2_RDATA},
{"lpbk_rcvd_addr_1_pkt", LPBK_RCVD_ADDR_1_PKT},
{"lpbk_raddr1_rdata", LPBK_RADDR1_RDATA},
{"lpbk_data_lpbk_full", LPBK_DATA_LPBK_FULL},
{"lpbk_dfull_rdata", LPBK_DFULL_RDATA},
{"lpbk_dfull_raddr2", LPBK_DFULL_RADDR2},
{"lpbk_dfull_raddr2_rdata", LPBK_DFULL_RADDR2_RDATA},
{"lpbk_dfull_raddr1", LPBK_DFULL_RADDR1},
{"lpbk_dfull_raddr1_rdata", LPBK_DFULL_RADDR1_RDATA},
{"lpbk_addr_lpbk_full", LPBK_ADDR_LPBK_FULL},
{"lpbk_afull_rdata", LPBK_AFULL_RDATA},
{"lpbk_afull_raddr2", LPBK_AFULL_RADDR2},
{"lpbk_afull_raddr2_rdata", LPBK_AFULL_RADDR2_RDATA},
{"lpbk_afull_raddr1", LPBK_AFULL_RADDR1},
{"lpbk_afull_raddr1_rdata", LPBK_AFULL_RADDR1_RDATA},
{"lpbk_afull_dfull", LPBK_AFULL_DFULL},
{"lpbk_afull_dfull_rdata", LPBK_AFULL_DFULL_RDATA},
{"lpbk_afull_dfull_raddr2", LPBK_AFULL_DFULL_RADDR2},
{"lpbk_afull_dfull_raddr2_rdata", LPBK_AFULL_DFULL_RADDR2_RDATA},
{"lpbk_afull_dfull_raddr1", LPBK_AFULL_DFULL_RADDR1},
{"lpbk_afull_dfull_raddr1_rdata", LPBK_AFULL_DFULL_RADDR1_RDATA},
{"clear_pic", LPBK_CLEAR_PIC0}
},
/* pic 1 */
{
{"lpbk_rcvd_data_pkt", LPBK_RCVD_DATA_PKT<<16},
{"lpbk_rcvd_addr_2_pkt", LPBK_RCVD_ADDR_2_PKT<<16},
{"lpbk_raddr2_rdata", LPBK_RADDR2_RDATA<<16},
{"lpbk_rcvd_addr_1_pkt", LPBK_RCVD_ADDR_1_PKT<<16},
{"lpbk_raddr1_rdata", LPBK_RADDR1_RDATA<<16},
{"lpbk_data_lpbk_full", LPBK_DATA_LPBK_FULL<<16},
{"lpbk_dfull_rdata", LPBK_DFULL_RDATA<<16},
{"lpbk_dfull_raddr2", LPBK_DFULL_RADDR2<<16},
{"lpbk_dfull_raddr2_rdata", LPBK_DFULL_RADDR2_RDATA<<16},
{"lpbk_dfull_raddr1", LPBK_DFULL_RADDR1<<16},
{"lpbk_dfull_raddr1_rdata", LPBK_DFULL_RADDR1_RDATA<<16},
{"lpbk_addr_lpbk_full", LPBK_ADDR_LPBK_FULL<<16},
{"lpbk_afull_rdata", LPBK_AFULL_RDATA<<16},
{"lpbk_afull_raddr2", LPBK_AFULL_RADDR2<<16},
{"lpbk_afull_raddr2_rdata", LPBK_AFULL_RADDR2_RDATA<<16},
{"lpbk_afull_raddr1", LPBK_AFULL_RADDR1<<16},
{"lpbk_afull_raddr1_rdata", LPBK_AFULL_RADDR1_RDATA<<16},
{"lpbk_afull_dfull", LPBK_AFULL_DFULL<<16},
{"lpbk_afull_dfull_rdata", LPBK_AFULL_DFULL_RDATA<<16},
{"lpbk_afull_dfull_raddr2", LPBK_AFULL_DFULL_RADDR2<<16},
{"lpbk_afull_dfull_raddr2_rdata", LPBK_AFULL_DFULL_RADDR2_RDATA<<16},
{"lpbk_afull_dfull_raddr1", LPBK_AFULL_DFULL_RADDR1<<16},
{"lpbk_afull_dfull_raddr1_rdata", LPBK_AFULL_DFULL_RADDR1_RDATA<<16},
{"clear_pic", LPBK_CLEAR_PIC1}
}
};
/* Link Counter */
/* one event list per counter, per link */
static wci_event_mask_t
wci_link_events_arr[WCI_NUM_PICS][WCI_LINK_NUM_EVENTS+1] = {
/* pic 0 */
{
{"link_sending_admin_pkts", LINK_SENDING_ADMIN_PKTS},
{"link_rcvd_mh_data_pkt", LINK_RCVD_MH_DATA_PKT},
{"link_sadm_rmhdp", LINK_RMHDP_SADM},
{"link_rcvd_data_pkt", LINK_RCVD_DATA_PKT},
{"link_sadm_rdp", LINK_RDP_SADM},
{"link_rdp_rmhdp", LINK_RDP_RMHDP},
{"link_rejected_flit", LINK_REJECTED_FLIT},
{"link_rejflit_sadm", LINK_REJFLIT_SADM},
{"link_rejflit_rmhdp", LINK_REJFLIT_RMHDP},
{"link_rejflit_rmhdp_sadm", LINK_REJFLIT_RMHDP_SADM},
{"link_rejflit_rdp", LINK_REJFLIT_RDP},
{"link_rejflit_rdp_sadm", LINK_REJFLIT_RDP_SADM},
{"link_rcvd_admin_pkt", LINK_RCVD_ADMIN_PKT},
{"link_radmp_sadm", LINK_RADMP_SADM},
{"link_radmp_rmhdp", LINK_RADMP_RMHDP},
{"link_radmp_rmhdp_sadm", LINK_RADMP_RMHDP_SADM},
{"link_radmp_rdp", LINK_RADMP_RDP},
{"link_radmp_rdp_sadm", LINK_RADMP_RDP_SADM},
{"link_radmp_rejflit", LINK_RADMP_REJFLIT},
{"clear_pic", LINK_CLEAR_PIC0},
},
/* pic 1 */
{
{"link_sending_admin_pkts", LINK_SENDING_ADMIN_PKTS<<16},
{"link_rcvd_mh_data_pkt", LINK_RCVD_MH_DATA_PKT<<16},
{"link_sadm_rmhdp", LINK_RMHDP_SADM<<16},
{"link_rcvd_data_pkt", LINK_RCVD_DATA_PKT<<16},
{"link_sadm_rdp", LINK_RDP_SADM<<16},
{"link_rdp_rmhdp", LINK_RDP_RMHDP<<16},
{"link_rejected_flit", LINK_REJECTED_FLIT<<16},
{"link_rejflit_sadm", LINK_REJFLIT_SADM<<16},
{"link_rejflit_rmhdp", LINK_REJFLIT_RMHDP<<16},
{"link_rejflit_rmhdp_sadm", LINK_REJFLIT_RMHDP_SADM<<16},
{"link_rejflit_rdp", LINK_REJFLIT_RDP<<16},
{"link_rejflit_rdp_sadm", LINK_REJFLIT_RDP_SADM<<16},
{"link_rcvd_admin_pkt", LINK_RCVD_ADMIN_PKT<<16},
{"link_radmp_sadm", LINK_RADMP_SADM<<16},
{"link_radmp_rmhdp", LINK_RADMP_RMHDP<<16},
{"link_radmp_rmhdp_sadm", LINK_RADMP_RMHDP_SADM<<16},
{"link_radmp_rdp", LINK_RADMP_RDP<<16},
{"link_radmp_rdp_sadm", LINK_RADMP_RDP_SADM<<16},
{"link_radmp_rejflit", LINK_RADMP_REJFLIT<<16},
{"clear_pic", LINK_CLEAR_PIC1}
}
};
/*
* WCI Safari Histogramming Counter
* One event list per pic counter.
*/
static wci_event_mask_t
wci_sfi_events_arr[WCI_NUM_PICS][WCI_SFI_NUM_EVENTS + 1] = {
/* pic 0 */
{
{"sfi_hstgrm_all_trans",
SFI_HSTGRM_ALL_TRANS | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_int", SFI_HSTGRM_INT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_local_int",
SFI_HSTGRM_LOCAL_INT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_clu_incm_int",
SFI_HSTGRM_RMT_CLU_INCM_INT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_ssm_incm_int",
SFI_HSTGRM_RMT_SSM_INCM_INT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_io", SFI_HSTGRM_IO | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_ssm_incm_io",
SFI_HSTGRM_RMT_SSM_INCM_IO | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_cohrnt", SFI_HSTGRM_COHRNT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_clu_incm_cohrnt",
SFI_HSTGRM_RMT_CLU_INCM_COHRNT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_ssm_otg_cohrnt",
SFI_HSTGRM_RMT_SSM_OTG_COHRNT | SFI_SFI_HISTOGRAM0},
{"sfi_hstgrm_rmt_ssm_incm_cohrnt",
SFI_HSTGRM_RMT_SSM_INCM_COHRNT | SFI_SFI_HISTOGRAM0},
{"clear_pic", WCI_SFI_CLEAR_PIC0}
},
/* pic 1 */
{
{"sfi_hstgrm_all_trans",
SFI_HSTGRM_ALL_TRANS<<4 | SFI_SFI_HISTOGRAM1<< 10},
{"sfi_hstgrm_int", SFI_HSTGRM_INT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_local_int",
SFI_HSTGRM_LOCAL_INT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_clu_incm_int",
SFI_HSTGRM_RMT_CLU_INCM_INT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_ssm_incm_int",
SFI_HSTGRM_RMT_SSM_INCM_INT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_io", SFI_HSTGRM_IO<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_ssm_incm_io",
SFI_HSTGRM_RMT_SSM_INCM_IO<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_cohrnt",
SFI_HSTGRM_COHRNT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_clu_incm_cohrnt",
SFI_HSTGRM_RMT_CLU_INCM_COHRNT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_ssm_otg_cohrnt",
SFI_HSTGRM_RMT_SSM_OTG_COHRNT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"sfi_hstgrm_rmt_ssm_incm_cohrnt",
SFI_HSTGRM_RMT_SSM_INCM_COHRNT<<4 | SFI_SFI_HISTOGRAM1<<10},
{"clear_pic", WCI_SFI_CLEAR_PIC1}
}
};
static wci_sfi_regs_value_t wci_sfi_ctr_regs_tab[WCI_SFI_NUM_EVENTS] = {
{ 0x0000000000000000ULL, 0x0000000000000000ULL, 0x000000000007FFFFULL },
{ 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0000000000000200ULL },
{ 0x00000000000F8000ULL, 0x00000000000F8000ULL, 0x0000000000000200ULL },
{ 0x0000F80000000000ULL, 0x0000F80000000000ULL, 0x0000000000000200ULL },
{ 0x0000F80000000000ULL, 0x0000F80000000000ULL, 0x0000000000000200ULL },
{ 0x0000000000000000ULL, 0x0000000000000000ULL, 0x000000000000000FULL },
{ 0x0000F80000000000ULL, 0x0000F80000000000ULL, 0x000000000000000FULL },
{ 0x0000000000000000ULL, 0x0000000000000000ULL, 0x000000000007FDF0ULL },
{ 0x0000F80000000000ULL, 0x0000F80000000000ULL, 0x0000000000018060ULL },
{ 0x0000000000000000ULL, 0x0000000000000000ULL, 0x00000000000001F0ULL },
{ 0x0000F80000000000ULL, 0x0000F80000000000ULL, 0x000000000007FC00ULL }
};
/*
* Driver globals
*/
static kstat_t *wci_misc_pic_ksp[WCI_NUM_PICS]; /* Misc picN kstats */
static kstat_t *wci_lpbk_pic_ksp[WCI_NUM_PICS]; /* Lpbk picN kstats */
static kstat_t *wci_link_pic_ksp[WCI_NUM_LINKS][WCI_NUM_PICS]; /* link */
static kstat_t *wci_sfi_pic_ksp[WCI_NUM_PICS]; /* SFI histogram picN kstats */
void
wci_add_counters_kstats(struct wci_common_soft_state *softsp, char *drvname)
{
wci_add_misc_kstats(softsp, drvname);
wci_add_lpbk_kstats(softsp, drvname);
wci_add_link_kstats(softsp, drvname);
wci_add_sfi_kstats(softsp, drvname);
}
void
wci_add_picN_kstats(char *drvname)
{
wci_add_misc_pic_kstats(drvname);
wci_add_lpbk_pic_kstats(drvname);
wci_add_link_pic_kstats(drvname);
wci_add_sfi_pic_kstats(drvname);
}
static void
wci_add_misc_kstats(struct wci_common_soft_state *softsp, char *drvname)
{
struct kstat *wci_misc_ksp;
struct wci_counters_kstat *wci_misc_named_ksp;
char drvmod[15];
/*
* A "counter" kstat is created for each WCI
* instance that provides access to the %pcr and %pic
* registers for that instance.
*/
(void) sprintf(drvmod, WCI_KSTAT_NAME, drvname);
if ((wci_misc_ksp = kstat_create(drvmod, softsp->instance,
"counters", "bus", KSTAT_TYPE_NAMED,
sizeof (struct wci_counters_kstat) / sizeof (kstat_named_t),
KSTAT_FLAG_WRITABLE)) == NULL) {
cmn_err(CE_WARN, "wci%d: kstat_create failed",
softsp->instance);
return;
}
wci_misc_named_ksp =
(struct wci_counters_kstat *)(wci_misc_ksp->ks_data);
/* initialize the named kstats */
kstat_named_init(&wci_misc_named_ksp->wci_ctr_ctl,
WCI_CTRCTL_KSTAT_NAMED,
KSTAT_DATA_UINT64);
kstat_named_init(&wci_misc_named_ksp->wci_ctr0,
WCI_CTR0_KSTAT_NAMED,
KSTAT_DATA_UINT64);
kstat_named_init(&wci_misc_named_ksp->wci_ctr1,
WCI_CTR1_KSTAT_NAMED,
KSTAT_DATA_UINT64);
wci_misc_ksp->ks_update = wci_misc_kstat_update;
wci_misc_ksp->ks_private = (void *)softsp;
kstat_install(wci_misc_ksp);
/* update the common softstate */
softsp->wci_misc_counters_ksp = wci_misc_ksp;
}
/*
* called from wci_add_picN_kstats() to create a kstat for each %pic that
* the WCI Misc counter supports. These (read-only) kstats export the
* event names that each %pic supports.
*
* wci_misc_events_arr is an array of (event_name, pcr_mask) records
* for each (pic, event) pair.
*/
static void
wci_add_misc_pic_kstats(char *drvname)
{
struct kstat_named *wci_misc_pic_named_data;
int event, pic;
char pic_name[30];
int i = 0;
int num_events = 0;
char drvmod[15];
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
(void) sprintf(pic_name, "pic%d", pic);
/*
* calculate the actual number of events for
* each misc picN, since they are different for each picN
* Note: make sure {NULL, 0 } is the last event
*/
for (i = 0; i < WCI_MISC_NUM_EVENTS; i++) {
if (strcmp(wci_misc_events_arr[pic][i].event_name,
EOSTR) == 0)
break;
}
num_events = i;
/*
* create the picN kstat. The size of this kstat is
* WCI_NUM_EVENTS + 1 for the clear_event_mask
*/
(void) sprintf(drvmod, WCI_KSTAT_NAME, drvname);
if ((wci_misc_pic_ksp[pic] = kstat_create(drvmod, 0,
pic_name, "bus", KSTAT_TYPE_NAMED,
num_events, NULL)) == NULL) {
cmn_err(CE_WARN, "wci misc %s: kstat_create failed",
pic_name);
/*
* remove all picN kstat from 0 to pic-1
* if current picN kstat create fails
*/
for (i = 0; i < pic; i++) {
kstat_delete(wci_misc_pic_ksp[i]);
wci_misc_pic_ksp[i] = NULL;
}
return;
}
wci_misc_pic_named_data =
(struct kstat_named *)(wci_misc_pic_ksp[pic]->ks_data);
/*
* for each picN event we need to write a kstat record
* (name = EVENT, value.ui64 = PCR_MASK)
*/
for (event = 0; event < num_events; event ++) {
/* pcr_mask */
wci_misc_pic_named_data[event].value.ui64 =
wci_misc_events_arr[pic][event].pcr_mask;
/* event-name */
kstat_named_init(&wci_misc_pic_named_data[event],
wci_misc_events_arr[pic][event].event_name,
KSTAT_DATA_UINT64);
}
kstat_install(wci_misc_pic_ksp[pic]);
}
}
static int wci_misc_kstat_update(kstat_t *ksp, int rw)
{
struct wci_counters_kstat *wci_misc_ksp;
struct wci_common_soft_state *softsp;
uint64_t wci_cluster_ctr;
wci_misc_ksp = (struct wci_counters_kstat *)ksp->ks_data;
softsp = (struct wci_common_soft_state *)ksp->ks_private;
if (rw == KSTAT_WRITE) {
/*
* can only write the wci_misc_ctr_ctl register
*/
*(softsp->wci_misc_ctr_ctl_vaddr) =
(uint64_t)wci_misc_ksp->wci_ctr_ctl.value.ui64;
/*
* The misc counters can be used to count cluster
* related events related to incoming transactions
* as they are processed by the CMMU.
* The wci_cluster_ctr_ctl register has bits <3:0>
* specifying 4 different events that are counted
* if a misc counter is programmed with event
* "cluster event 0", and bits <7:4> specifying 4
* different events that are counted if a misc
* counter is programmed with event "cluster event 1".
* For counter 0, bits <27:24> of the
* wci_misc_ksp->wci_ctr_ctl represent the setting of
* the either the cnt0 or the cnt1 wci_cluster_ctr_ctl
* register fields. For counter 1, bits <31:28> of
* the wci_misc_ksp->wci_ctr_ctl represent the setting
* of the either the cnt0 or the cnt1 wci_cluster_ctr_ctl
* register fields. Selecting a pic0 or pic1 event type
* which specifies the CACHE-CTR agent and the event type
* of "cluster event 0" or "cluster event 1" causes the
* cnt0 or cnt1 events (respectively) in the
* wci_cluster_ctr_ctl register to be set as specified in
* bits <27:24> or <31:28>, respectively. If one or more
* of bits <31:24> of wci_misc_ksp->wci_ctr_ctl are
* non-zero, we need to write those bits in
* wci_cluster_ctr_ctl registers to set and enable
* the corresponding fields.
* Hence, the cluster counter fields are contained in the
* wci_misc_ksp->wci_ctr_ctl. We need to write these bits
* to the misc control register wci_misc_ctr_ctl_vaddr.
* Since for all the other misc counter event masks,
* the bits <31:24> are set to 0, these bits are never
* used by any events other than those with Cacthe-control
* agent and "cluster event 0" or "cluster event 1" set.
* Thus, It does not matter that we also write these bits
* to the misc control register. Also, for `busstat` support,
* we must keep consistent misc control register (pcr) values.
*/
wci_cluster_ctr = (uint64_t)
(wci_misc_ksp->wci_ctr_ctl.value.ui64 >> 24) &
WCI_CLUSTER_MASK;
/* only need bits<7:0>, keep bits <63:8> original value */
if (wci_cluster_ctr > 0)
*(softsp->wci_cluster_ctr_ctl_vaddr) =
(*(softsp->wci_cluster_ctr_ctl_vaddr) &
(~WCI_CLUSTER_MASK)) | wci_cluster_ctr;
} else {
/*
* copy the current state of the hardware into the
* kstat structure.
*/
wci_misc_ksp->wci_ctr_ctl.value.ui64 =
(uint64_t)*(softsp->wci_misc_ctr_ctl_vaddr);
wci_misc_ksp->wci_ctr0.value.ui64 =
(*(softsp->wci_misc_ctr_vaddr)) & WCI_PIC0_MASK;
wci_misc_ksp->wci_ctr1.value.ui64 =
(*(softsp->wci_misc_ctr_vaddr)) >> 32;
}
return (0);
}
static void
wci_add_lpbk_kstats(struct wci_common_soft_state *softsp, char *drvname)
{
struct kstat *wci_lpbk_ksp;
struct wci_counters_kstat *wci_lpbk_named_ksp;
char drvmod[15];
(void) sprintf(drvmod, WCI_LPBK_KSTAT_NAME, drvname);
if ((wci_lpbk_ksp = kstat_create(drvmod,
softsp->instance, "counters", "bus", KSTAT_TYPE_NAMED,
sizeof (struct wci_counters_kstat) / sizeof (kstat_named_t),
KSTAT_FLAG_WRITABLE)) == NULL) {
cmn_err(CE_WARN, "wci%d: kstat_create failed",
softsp->instance);
return;
}
wci_lpbk_named_ksp = (struct wci_counters_kstat *)
(wci_lpbk_ksp->ks_data);
/* initialize the named kstats */
kstat_named_init(&wci_lpbk_named_ksp->wci_ctr_ctl,
WCI_CTRCTL_KSTAT_NAMED, KSTAT_DATA_UINT64);
kstat_named_init(&wci_lpbk_named_ksp->wci_ctr0,
WCI_CTR0_KSTAT_NAMED, KSTAT_DATA_UINT64);
kstat_named_init(&wci_lpbk_named_ksp->wci_ctr1,
WCI_CTR1_KSTAT_NAMED, KSTAT_DATA_UINT64);
wci_lpbk_ksp->ks_update = wci_lpbk_kstat_update;
wci_lpbk_ksp->ks_private = (void *)softsp;
kstat_install(wci_lpbk_ksp);
/* update the common softstate */
softsp->wci_lpbk_counters_ksp = wci_lpbk_ksp;
}
static void
wci_add_lpbk_pic_kstats(char *drvname)
{
struct kstat_named *wci_lpbk_pic_named_data;
int event, pic;
char pic_name[30];
char drvmod[15];
(void) sprintf(drvmod, WCI_LPBK_KSTAT_NAME, drvname);
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
(void) sprintf(pic_name, "pic%d", pic);
/*
* create the picN kstat. The size of this kstat is
* WCI_LPBK_NUM_EVENTS + 1 for the clear_event_mask
*/
if ((wci_lpbk_pic_ksp[pic] = kstat_create(drvmod,
0, pic_name, "bus", KSTAT_TYPE_NAMED,
WCI_LPBK_NUM_EVENTS + 1, NULL)) == NULL) {
cmn_err(CE_WARN,
"wci lpbk %s: kstat_create failed", pic_name);
/* remove pic0 kstat if pic1 create fails */
if (pic == 1) {
kstat_delete(wci_lpbk_pic_ksp[0]);
wci_lpbk_pic_ksp[0] = NULL;
}
return;
}
wci_lpbk_pic_named_data =
(struct kstat_named *)(wci_lpbk_pic_ksp[pic]->ks_data);
/*
* for each picN event we need to write a kstat record
* (name = EVENT, value.ui64 = PCR_MASK)
*/
for (event = 0; event < WCI_LPBK_NUM_EVENTS + 1; event ++) {
/* pcr_mask */
wci_lpbk_pic_named_data[event].value.ui64 =
wci_lpbk_events_arr[pic][event].pcr_mask;
/* event_name */
kstat_named_init(&wci_lpbk_pic_named_data[event],
wci_lpbk_events_arr[pic][event].event_name,
KSTAT_DATA_UINT64);
}
kstat_install(wci_lpbk_pic_ksp[pic]);
}
}
static int wci_lpbk_kstat_update(kstat_t *ksp, int rw) {
struct wci_counters_kstat *wci_lpbk_ksp;
struct wci_common_soft_state *softsp;
wci_lpbk_ksp = (struct wci_counters_kstat *)ksp->ks_data;
softsp = (struct wci_common_soft_state *)ksp->ks_private;
if (rw == KSTAT_WRITE) {
/*
* can only write the wci_misc_ctr_ctl register
*/
*(softsp->wci_lpbk_ctr_ctl_vaddr) =
(uint64_t)wci_lpbk_ksp->wci_ctr_ctl.value.ui64;
} else {
wci_lpbk_ksp->wci_ctr_ctl.value.ui64 =
(uint64_t)*(softsp->wci_lpbk_ctr_ctl_vaddr);
wci_lpbk_ksp->wci_ctr0.value.ui64 =
*(softsp->wci_lpbk_ctr_vaddr) & WCI_PIC0_MASK;
wci_lpbk_ksp->wci_ctr1.value.ui64 =
*(softsp->wci_lpbk_ctr_vaddr) >> 32;
}
return (0);
}
static void
wci_add_link_kstats(struct wci_common_soft_state *softsp, char *drvname)
{
struct kstat *wci_link_ksp[WCI_NUM_LINKS];
struct wci_counters_kstat *wci_link_named_ksp[WCI_NUM_LINKS];
int link_no;
char wci_link_kstat_name[30];
char tmp[15];
/*
* Calculate the link kstat name length, i.e., length of "wssmlink".
* This is needed in the wci_link_kstat_update() routine
*/
(void) sprintf(tmp, WCI_LINK_KSTAT_NAME, drvname);
wci_link_kstat_modlen = strlen(tmp);
for (link_no = 0; link_no < WCI_NUM_LINKS; link_no++) {
(void) sprintf(wci_link_kstat_name, "%slink%c", drvname,
link_no + 'a');
if ((wci_link_ksp[link_no] = kstat_create(
wci_link_kstat_name,
softsp->instance,
"counters", "bus", KSTAT_TYPE_NAMED,
sizeof (struct wci_counters_kstat) /
sizeof (kstat_named_t),
KSTAT_FLAG_WRITABLE)) == NULL) {
cmn_err(CE_WARN, "wci%d: kstat_create failed",
softsp->instance);
return;
}
wci_link_named_ksp[link_no] = (struct wci_counters_kstat *)
(wci_link_ksp[link_no]->ks_data);
/* initialize the named kstats */
kstat_named_init(&wci_link_named_ksp[link_no]->wci_ctr_ctl,
WCI_CTRCTL_KSTAT_NAMED,
KSTAT_DATA_UINT64);
kstat_named_init(&wci_link_named_ksp[link_no]->wci_ctr0,
WCI_CTR0_KSTAT_NAMED,
KSTAT_DATA_UINT64);
kstat_named_init(&wci_link_named_ksp[link_no]->wci_ctr1,
WCI_CTR1_KSTAT_NAMED,
KSTAT_DATA_UINT64);
wci_link_ksp[link_no]->ks_update = wci_link_kstat_update;
wci_link_ksp[link_no]->ks_private = (void *)softsp;
kstat_install(wci_link_ksp[link_no]);
/* update the common softstate */
softsp->wci_link_counters_ksp[link_no] =
wci_link_ksp[link_no];
}
}
static void
wci_add_link_pic_kstats(char *drvname)
{
struct kstat_named *wci_link_pic_named_data;
int event, pic, link_no;
char pic_name[30];
char wci_link_kstat_name[30];
for (link_no = 0; link_no < WCI_NUM_LINKS; link_no++) {
(void) sprintf(wci_link_kstat_name, "%slink%c", drvname,
link_no + 'a');
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
(void) sprintf(pic_name, "pic%d", pic);
/*
* create the picN kstat. The size of this kstat is
* WCI_LINK_NUM_EVENTS + 1 for the clear_event_mask
*/
if ((wci_link_pic_ksp[link_no][pic] = kstat_create(
wci_link_kstat_name, 0, pic_name, "bus",
KSTAT_TYPE_NAMED,
WCI_LINK_NUM_EVENTS + 1,
NULL)) == NULL) {
cmn_err(CE_WARN,
"wci link%d %s: kstat_create failed",
link_no, pic_name);
/* remove pic0 kstat if pic1 create fails */
if (pic == 1) {
kstat_delete(wci_link_pic_ksp
[link_no][0]);
wci_link_pic_ksp[link_no][0] = NULL;
}
return;
}
wci_link_pic_named_data =
(struct kstat_named *)
(wci_link_pic_ksp[link_no][pic]->ks_data);
/*
* for each picN event we need to write a kstat
* record (name = EVENT, value.ui64 = PCR_MASK)
*/
for (event = 0; event < WCI_LINK_NUM_EVENTS + 1;
event++) {
/* pcr mask */
wci_link_pic_named_data[event].
value.ui64 =
wci_link_events_arr[pic][event].pcr_mask;
/* event_name */
kstat_named_init(
&wci_link_pic_named_data[event],
wci_link_events_arr[pic][event].
event_name,
KSTAT_DATA_UINT64);
}
kstat_install(wci_link_pic_ksp[link_no][pic]);
}
}
}
static int wci_link_kstat_update(kstat_t *ksp, int rw) {
struct wci_counters_kstat *wci_link_ksp;
struct wci_common_soft_state *softsp;
int arr_index;
wci_link_ksp = (struct wci_counters_kstat *)ksp->ks_data;
ASSERT(wci_link_ksp != NULL);
softsp = (struct wci_common_soft_state *)ksp->ks_private;
ASSERT(softsp != NULL);
arr_index = ksp->ks_module[wci_link_kstat_modlen] - 'a';
ASSERT(arr_index >= 0);
if (rw == KSTAT_WRITE) {
/*
* can only write the wci_link_ctr_ctl register array
*/
*(softsp->wci_link_ctr_ctl_vaddr[arr_index]) =
(uint64_t)wci_link_ksp->wci_ctr_ctl.value.ui64;
} else {
ASSERT(softsp->wci_link_ctr_ctl_vaddr[arr_index] != NULL);
wci_link_ksp->wci_ctr_ctl.value.ui64 =
(uint64_t)*(softsp->wci_link_ctr_ctl_vaddr[arr_index]);
wci_link_ksp->wci_ctr0.value.ui64 = (uint64_t)
*(softsp->wci_link_ctr_vaddr[arr_index]) & WCI_PIC0_MASK;
wci_link_ksp->wci_ctr1.value.ui64 = (uint64_t)
*(softsp->wci_link_ctr_vaddr[arr_index]) >> 32;
}
return (0);
}
static void
wci_add_sfi_kstats(struct wci_common_soft_state *softsp, char *drvname)
{
struct kstat *wci_sfi_ksp;
struct wci_counters_kstat *wci_sfi_named_ksp;
char drvmod[15];
(void) sprintf(drvmod, WCI_SFI_KSTAT_NAME, drvname);
if ((wci_sfi_ksp = kstat_create(drvmod,
softsp->instance, "counters", "bus", KSTAT_TYPE_NAMED,
sizeof (struct wci_counters_kstat) / sizeof (kstat_named_t),
KSTAT_FLAG_WRITABLE)) == NULL) {
cmn_err(CE_WARN, "wci%d: kstat_create failed for sfi histogram",
softsp->instance);
return;
}
wci_sfi_named_ksp = (struct wci_counters_kstat *)
(wci_sfi_ksp->ks_data);
/* initialize the named kstats */
kstat_named_init(&wci_sfi_named_ksp->wci_ctr_ctl,
WCI_CTRCTL_KSTAT_NAMED, KSTAT_DATA_UINT64);
kstat_named_init(&wci_sfi_named_ksp->wci_ctr0,
WCI_CTR0_KSTAT_NAMED, KSTAT_DATA_UINT64);
kstat_named_init(&wci_sfi_named_ksp->wci_ctr1,
WCI_CTR1_KSTAT_NAMED, KSTAT_DATA_UINT64);
wci_sfi_ksp->ks_update = wci_sfi_kstat_update;
wci_sfi_ksp->ks_private = (void *)softsp;
kstat_install(wci_sfi_ksp);
/* update the common softstate */
softsp->wci_sfi_counters_ksp = wci_sfi_ksp;
}
static void
wci_add_sfi_pic_kstats(char *drvname)
{
struct kstat_named *wci_sfi_pic_named_data;
int event, pic;
char pic_name[30];
char drvmod[15];
(void) sprintf(drvmod, WCI_SFI_KSTAT_NAME, drvname);
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
(void) sprintf(pic_name, "pic%d", pic);
/*
* create the picN kstat. The size of this kstat is
* WCI_SFI_NUM_EVENTS + 1 for the clear_event_mask
*/
if ((wci_sfi_pic_ksp[pic] = kstat_create(drvmod,
0, pic_name, "bus", KSTAT_TYPE_NAMED,
WCI_SFI_NUM_EVENTS + 1, NULL)) == NULL) {
cmn_err(CE_WARN,
"wci sfi %s: kstat_create failed", pic_name);
/* remove pic0 kstat if pic1 create fails */
if (pic == 1) {
kstat_delete(wci_sfi_pic_ksp[0]);
wci_sfi_pic_ksp[0] = NULL;
}
return;
}
wci_sfi_pic_named_data =
(struct kstat_named *)(wci_sfi_pic_ksp[pic]->ks_data);
/*
* for each picN event we need to write a kstat record
* (name = EVENT, value.ui64 = PCR_MASK)
*/
for (event = 0; event < WCI_SFI_NUM_EVENTS + 1; event ++) {
/* pcr_mask */
wci_sfi_pic_named_data[event].value.ui64 =
wci_sfi_events_arr[pic][event].pcr_mask;
/* event_name */
kstat_named_init(&wci_sfi_pic_named_data[event],
wci_sfi_events_arr[pic][event].event_name,
KSTAT_DATA_UINT64);
}
kstat_install(wci_sfi_pic_ksp[pic]);
}
}
static int wci_sfi_kstat_update(kstat_t *ksp, int rw)
{
struct wci_counters_kstat *wci_sfi_ksp;
struct wci_common_soft_state *softsp;
uint64_t evt0, evt1;
uint_t id0, id1;
wci_sfi_ksp = (struct wci_counters_kstat *)ksp->ks_data;
softsp = (struct wci_common_soft_state *)ksp->ks_private;
if (rw == KSTAT_WRITE) {
/* write to virtual sfi counter control */
softsp->wci_sfi_sw_ctr_ctl =
wci_sfi_ksp->wci_ctr_ctl.value.ui64;
/* write to wci_misc_ctr_ctl register bit <19:0> */
*softsp->wci_misc_ctr_ctl_vaddr =
wci_sfi_ksp->wci_ctr_ctl.value.ui64 &
WCI_SFI_SW_CTR_CTL_MASK;
evt0 = (softsp->wci_sfi_sw_ctr_ctl & WCI_SFI_CTR0_EVENT_MASK);
id0 = (uint_t)(evt0 >> WCI_SFI_CTR0_EVENT_SHIFT);
if (evt0 > 0) {
/* safri histogramming counter 0 */
*softsp->wci_sfi_ctr0_mask_vaddr =
wci_sfi_ctr_regs_tab[id0-1].wci_sfi_ctr_mask_val;
*softsp->wci_sfi_ctr0_match_transaction_vaddr =
wci_sfi_ctr_regs_tab[id0-1].
wci_sfi_ctr_match_trans_val;
switch (evt0) {
case SFI_HSTGRM_LOCAL_INT:
*softsp->wci_sfi_ctr0_match_vaddr =
(softsp->node_id <<
WCI_SFI_ADDR_TNID_SHIFT) &
wci_sfi_ctr_regs_tab[id0-1].
wci_sfi_ctr_match_val;
break;
case SFI_HSTGRM_RMT_CLU_INCM_INT:
case SFI_HSTGRM_RMT_SSM_INCM_INT:
case SFI_HSTGRM_RMT_SSM_INCM_IO:
case SFI_HSTGRM_RMT_CLU_INCM_COHRNT:
case SFI_HSTGRM_RMT_SSM_INCM_COHRNT:
*softsp->wci_sfi_ctr0_match_vaddr =
((uint64_t)(softsp->node_id)
<< WCI_SFI_ATRANS_DEVID_SHIFT) &
wci_sfi_ctr_regs_tab[id0-1].
wci_sfi_ctr_match_val;
break;
default:
*softsp->wci_sfi_ctr0_match_vaddr =
wci_sfi_ctr_regs_tab[id0-1].
wci_sfi_ctr_match_val;
break;
}
}
evt1 = softsp->wci_sfi_sw_ctr_ctl & WCI_SFI_CTR1_EVENT_MASK;
id1 = (uint_t)(evt1 >> WCI_SFI_CTR1_EVENT_SHIFT);
if (evt1 > 0) {
/* safri histogramming counter 1 */
*softsp->wci_sfi_ctr1_mask_vaddr =
wci_sfi_ctr_regs_tab[id1-1].wci_sfi_ctr_mask_val;
*softsp->wci_sfi_ctr1_match_transaction_vaddr =
wci_sfi_ctr_regs_tab[id1-1].
wci_sfi_ctr_match_trans_val;
switch (evt1 >> 4) {
case SFI_HSTGRM_LOCAL_INT:
*softsp->wci_sfi_ctr1_match_vaddr =
(softsp->node_id <<
WCI_SFI_ADDR_TNID_SHIFT) &
wci_sfi_ctr_regs_tab[id1-1].
wci_sfi_ctr_match_val;
break;
case SFI_HSTGRM_RMT_CLU_INCM_INT:
case SFI_HSTGRM_RMT_SSM_INCM_INT:
case SFI_HSTGRM_RMT_SSM_INCM_IO:
case SFI_HSTGRM_RMT_CLU_INCM_COHRNT:
case SFI_HSTGRM_RMT_SSM_INCM_COHRNT:
*softsp->wci_sfi_ctr1_match_vaddr =
((uint64_t)(softsp->node_id)
<< WCI_SFI_ATRANS_DEVID_SHIFT) &
wci_sfi_ctr_regs_tab[id1-1].
wci_sfi_ctr_match_val;
break;
default:
*softsp->wci_sfi_ctr1_match_vaddr =
wci_sfi_ctr_regs_tab[id1-1].
wci_sfi_ctr_match_val;
break;
}
}
} else {
/*
* Copy the current state of the hardware into the kstat
* structure. Here for safari histogram counter control, we
* need to copy the combination of wci_misc_ctr_ctl bits
* <19:0> and wci_sfi_sw_ctr_ctl bits <27:20> because the
* busstat needs a way to find out whether another process
* has changed wci_misc_ctr_ctl to count other events. When
* using safari histogramming counter, wci_misc_ctr_ctl must
* select agent 0, and event 0 or 1. If another process choose
* other agent or event by manipulating misc device, then the
* user who is monitoring sfi device should be notified.
*/
wci_sfi_ksp->wci_ctr_ctl.value.ui64 =
((((uint64_t)*(softsp->wci_misc_ctr_ctl_vaddr)) &
WCI_SFI_SW_CTR_CTL_MASK) |
(softsp->wci_sfi_sw_ctr_ctl &
(~WCI_SFI_SW_CTR_CTL_MASK)));
wci_sfi_ksp->wci_ctr0.value.ui64 =
(*(softsp->wci_misc_ctr_vaddr)) & WCI_PIC0_MASK;
wci_sfi_ksp->wci_ctr1.value.ui64 =
(*(softsp->wci_misc_ctr_vaddr)) >> 32;
}
return (0);
}
void wci_del_counters_kstats(struct wci_common_soft_state *softsp) {
struct kstat *wci_ksp;
int link_no;
/* remove "link" counters kstat */
for (link_no = 0; link_no < WCI_NUM_LINKS; link_no++) {
wci_ksp = softsp->wci_link_counters_ksp[link_no];
softsp->wci_link_counters_ksp[link_no] = NULL;
if (wci_ksp != NULL) {
ASSERT(wci_ksp->ks_private == (void *)softsp);
kstat_delete(wci_ksp);
}
}
/* remove "lpbk" counters kstat */
wci_ksp = softsp->wci_lpbk_counters_ksp;
softsp->wci_lpbk_counters_ksp = NULL;
if (wci_ksp != NULL) {
ASSERT(wci_ksp->ks_private == (void *)softsp);
kstat_delete(wci_ksp);
}
/* remove "misc" counters kstat */
wci_ksp = softsp->wci_misc_counters_ksp;
softsp->wci_misc_counters_ksp = NULL;
if (wci_ksp != NULL) {
ASSERT(wci_ksp->ks_private == (void *)softsp);
kstat_delete(wci_ksp);
}
/* remove "sfi" counters kstat */
wci_ksp = softsp->wci_sfi_counters_ksp;
softsp->wci_sfi_counters_ksp = NULL;
if (wci_ksp != NULL) {
ASSERT(wci_ksp->ks_private == (void *)softsp);
kstat_delete(wci_ksp);
}
}
void wci_del_picN_kstats() {
int pic, link_no;
/* remove "link" picN kstat */
for (link_no = 0; link_no < WCI_NUM_LINKS; link_no++) {
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
if (wci_link_pic_ksp[link_no][pic] !=
(kstat_t *)NULL) {
kstat_delete(wci_link_pic_ksp[link_no][pic]);
wci_link_pic_ksp[link_no][pic] = NULL;
}
}
}
for (pic = 0; pic < WCI_NUM_PICS; pic++) {
/* remove "lpbk" picN kstat */
if (wci_lpbk_pic_ksp[pic] != (kstat_t *)NULL) {
kstat_delete(wci_lpbk_pic_ksp[pic]);
wci_lpbk_pic_ksp[pic] = NULL;
}
/* remove "misc" picN kstat */
if (wci_misc_pic_ksp[pic] != (kstat_t *)NULL) {
kstat_delete(wci_misc_pic_ksp[pic]);
wci_misc_pic_ksp[pic] = NULL;
}
/* remove "sfi" picN kstat */
if (wci_sfi_pic_ksp[pic] != (kstat_t *)NULL) {
kstat_delete(wci_sfi_pic_ksp[pic]);
wci_sfi_pic_ksp[pic] = NULL;
}
}
}