17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 57c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 67c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 77c478bd9Sstevel@tonic-gate * with the License. 87c478bd9Sstevel@tonic-gate * 97c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 107c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 117c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 127c478bd9Sstevel@tonic-gate * and limitations under the License. 137c478bd9Sstevel@tonic-gate * 147c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 157c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 167c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 177c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 187c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 197c478bd9Sstevel@tonic-gate * 207c478bd9Sstevel@tonic-gate * CDDL HEADER END 217c478bd9Sstevel@tonic-gate */ 227c478bd9Sstevel@tonic-gate /* 237c478bd9Sstevel@tonic-gate * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 247c478bd9Sstevel@tonic-gate * Use is subject to license terms. 257c478bd9Sstevel@tonic-gate */ 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate #ifndef _SYS_NIAGARAREGS_H 287c478bd9Sstevel@tonic-gate #define _SYS_NIAGARAREGS_H 297c478bd9Sstevel@tonic-gate 307c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate #ifdef __cplusplus 337c478bd9Sstevel@tonic-gate extern "C" { 347c478bd9Sstevel@tonic-gate #endif 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate /* 377c478bd9Sstevel@tonic-gate * Niagara SPARC Performance Instrumentation Counter 387c478bd9Sstevel@tonic-gate */ 397c478bd9Sstevel@tonic-gate #define PIC0_MASK (((uint64_t)1 << 32) - 1) /* pic0 in bits 31:0 */ 407c478bd9Sstevel@tonic-gate #define PIC1_SHIFT 32 /* pic1 in bits 64:32 */ 417c478bd9Sstevel@tonic-gate 427c478bd9Sstevel@tonic-gate /* 437c478bd9Sstevel@tonic-gate * Niagara SPARC Performance Control Register 447c478bd9Sstevel@tonic-gate */ 457c478bd9Sstevel@tonic-gate 467c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_PRIVPIC 0 477c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_SYS 1 487c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_USR 2 497c478bd9Sstevel@tonic-gate 507c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_PIC0_SHIFT 4 517c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_PIC1_SHIFT 0 527c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_PIC0_MASK UINT64_C(0x7) 537c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_PIC1_MASK UINT64_C(0) 547c478bd9Sstevel@tonic-gate 557c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_OVF_MASK UINT64_C(0x300) 567c478bd9Sstevel@tonic-gate #define CPC_NIAGARA_PCR_OVF_SHIFT 8 577c478bd9Sstevel@tonic-gate 587c478bd9Sstevel@tonic-gate /* 597c478bd9Sstevel@tonic-gate * Niagara DRAM performance counters 607c478bd9Sstevel@tonic-gate */ 617c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_BANKS 0x4 627c478bd9Sstevel@tonic-gate 637c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC0_SEL_SHIFT 0x4 647c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC1_SEL_SHIFT 0x0 657c478bd9Sstevel@tonic-gate 667c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC0_SHIFT 0x20 677c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC0_MASK 0x7fffffff 687c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC1_SHIFT 0x0 697c478bd9Sstevel@tonic-gate #define NIAGARA_DRAM_PIC1_MASK 0x7fffffff 707c478bd9Sstevel@tonic-gate 717c478bd9Sstevel@tonic-gate /* 727c478bd9Sstevel@tonic-gate * Niagara JBUS performance counters 737c478bd9Sstevel@tonic-gate */ 747c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC0_SEL_SHIFT 0x4 757c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC1_SEL_SHIFT 0x0 767c478bd9Sstevel@tonic-gate 777c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC0_SHIFT 0x20 787c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC0_MASK 0x7fffffff 797c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC1_SHIFT 0x0 807c478bd9Sstevel@tonic-gate #define NIAGARA_JBUS_PIC1_MASK 0x7fffffff 817c478bd9Sstevel@tonic-gate 827c478bd9Sstevel@tonic-gate 837c478bd9Sstevel@tonic-gate /* 847c478bd9Sstevel@tonic-gate * Hypervisor FAST_TRAP API function numbers to get/set DRAM and 857c478bd9Sstevel@tonic-gate * JBUS performance counters 867c478bd9Sstevel@tonic-gate */ 877c478bd9Sstevel@tonic-gate #define HV_NIAGARA_GETPERF 0x100 887c478bd9Sstevel@tonic-gate #define HV_NIAGARA_SETPERF 0x101 897c478bd9Sstevel@tonic-gate 907c478bd9Sstevel@tonic-gate 917c478bd9Sstevel@tonic-gate /* 927c478bd9Sstevel@tonic-gate * DRAM/JBUS performance counter register numbers for HV_NIAGARA_GETPERF 937c478bd9Sstevel@tonic-gate * and HV_NIAGARA_SETPERF 947c478bd9Sstevel@tonic-gate */ 957c478bd9Sstevel@tonic-gate #define HV_NIAGARA_JBUS_CTL 0x0 967c478bd9Sstevel@tonic-gate #define HV_NIAGARA_JBUS_COUNT 0x1 977c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_CTL0 0x2 987c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_COUNT0 0x3 997c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_CTL1 0x4 1007c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_COUNT1 0x5 1017c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_CTL2 0x6 1027c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_COUNT2 0x7 1037c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_CTL3 0x8 1047c478bd9Sstevel@tonic-gate #define HV_NIAGARA_DRAM_COUNT3 0x9 1057c478bd9Sstevel@tonic-gate 1067c478bd9Sstevel@tonic-gate /* 1077c478bd9Sstevel@tonic-gate * prototypes for hypervisor interface to get/set DRAM and JBUS 1087c478bd9Sstevel@tonic-gate * performance counters 1097c478bd9Sstevel@tonic-gate */ 1107c478bd9Sstevel@tonic-gate #ifndef _ASM 1117c478bd9Sstevel@tonic-gate extern uint64_t hv_niagara_setperf(uint64_t regnum, uint64_t val); 1127c478bd9Sstevel@tonic-gate extern uint64_t hv_niagara_getperf(uint64_t regnum, uint64_t *val); 1137c478bd9Sstevel@tonic-gate #endif 1147c478bd9Sstevel@tonic-gate 115*6dfee483Stsien /* 116*6dfee483Stsien * Bits defined in L2 Error Status Register 117*6dfee483Stsien * 118*6dfee483Stsien * +---+---+---+---+----+----+----+----+----+----+----+----+----+----+ 119*6dfee483Stsien * |MEU|MEC|RW |RSV|MODA|VCID|LDAC|LDAU|LDWC|LDWU|LDRC|LDRU|LDSC|LDSU| 120*6dfee483Stsien * +---+---+---+---+----+----+----+----+----+----+----+----+----+----+ 121*6dfee483Stsien * 63 62 61 60 59 58-54 53 52 51 50 49 48 47 46 122*6dfee483Stsien * 123*6dfee483Stsien * +---+---+---+---+---+---+---+---+---+---+---+-------+------+ 124*6dfee483Stsien * |LTC|LRU|LVU|DAC|DAU|DRC|DRU|DSC|DSU|VEC|VEU| RSVD1 | SYND | 125*6dfee483Stsien * +---+---+---+---+---+---+---+---+---+---+---+-------+------+ 126*6dfee483Stsien * 45 44 43 42 41 40 39 38 37 36 35 34-32 31-0 127*6dfee483Stsien */ 128*6dfee483Stsien #define NI_L2AFSR_MEU 0x8000000000000000 129*6dfee483Stsien #define NI_L2AFSR_MEC 0x4000000000000000 130*6dfee483Stsien #define NI_L2AFSR_RW 0x2000000000000000 131*6dfee483Stsien #define NI_L2AFSR_RSVD0 0x1000000000000000 132*6dfee483Stsien #define NI_L2AFSR_MODA 0x0800000000000000 133*6dfee483Stsien #define NI_L2AFSR_VCID 0x07C0000000000000 134*6dfee483Stsien #define NI_L2AFSR_LDAC 0x0020000000000000 135*6dfee483Stsien #define NI_L2AFSR_LDAU 0x0010000000000000 136*6dfee483Stsien #define NI_L2AFSR_LDWC 0x0008000000000000 137*6dfee483Stsien #define NI_L2AFSR_LDWU 0x0004000000000000 138*6dfee483Stsien #define NI_L2AFSR_LDRC 0x0002000000000000 139*6dfee483Stsien #define NI_L2AFSR_LDRU 0x0001000000000000 140*6dfee483Stsien #define NI_L2AFSR_LDSC 0x0000800000000000 141*6dfee483Stsien #define NI_L2AFSR_LDSU 0x0000400000000000 142*6dfee483Stsien #define NI_L2AFSR_LTC 0x0000200000000000 143*6dfee483Stsien #define NI_L2AFSR_LRU 0x0000100000000000 144*6dfee483Stsien #define NI_L2AFSR_LVU 0x0000080000000000 145*6dfee483Stsien #define NI_L2AFSR_DAC 0x0000040000000000 146*6dfee483Stsien #define NI_L2AFSR_DAU 0x0000020000000000 147*6dfee483Stsien #define NI_L2AFSR_DRC 0x0000010000000000 148*6dfee483Stsien #define NI_L2AFSR_DRU 0x0000008000000000 149*6dfee483Stsien #define NI_L2AFSR_DSC 0x0000004000000000 150*6dfee483Stsien #define NI_L2AFSR_DSU 0x0000002000000000 151*6dfee483Stsien #define NI_L2AFSR_VEC 0x0000001000000000 152*6dfee483Stsien #define NI_L2AFSR_VEU 0x0000000800000000 153*6dfee483Stsien #define NI_L2AFSR_RSVD1 0x0000000700000000 154*6dfee483Stsien #define NI_L2AFSR_SYND 0x00000000FFFFFFFF 155*6dfee483Stsien 156*6dfee483Stsien /* 157*6dfee483Stsien * These L2 bit masks are used to determine if another bit of higher priority 158*6dfee483Stsien * is set. This tells us whether the reported syndrome and address are valid 159*6dfee483Stsien * for this ereport. If the error in hand is Pn, use Pn-1 to bitwise & with 160*6dfee483Stsien * the l2-afsr value. If result is 0, then this ereport's afsr is valid. 161*6dfee483Stsien */ 162*6dfee483Stsien #define NI_L2AFSR_P01 (NI_L2AFSR_LVU) 163*6dfee483Stsien #define NI_L2AFSR_P02 (NI_L2AFSR_P01 | NI_L2AFSR_LRU) 164*6dfee483Stsien #define NI_L2AFSR_P03 (NI_L2AFSR_P02 | NI_L2AFSR_LDAU | NI_L2AFSR_LDSU) 165*6dfee483Stsien #define NI_L2AFSR_P04 (NI_L2AFSR_P03 | NI_L2AFSR_LDWU) 166*6dfee483Stsien #define NI_L2AFSR_P05 (NI_L2AFSR_P04 | NI_L2AFSR_LDRU) 167*6dfee483Stsien #define NI_L2AFSR_P06 (NI_L2AFSR_P05 | NI_L2AFSR_DAU | NI_L2AFSR_DRU) 168*6dfee483Stsien #define NI_L2AFSR_P07 (NI_L2AFSR_P06 | NI_L2AFSR_LTC) 169*6dfee483Stsien #define NI_L2AFSR_P08 (NI_L2AFSR_P07 | NI_L2AFSR_LDAC | NI_L2AFSR_LDSC) 170*6dfee483Stsien #define NI_L2AFSR_P09 (NI_L2AFSR_P08 | NI_L2AFSR_LDWC) 171*6dfee483Stsien #define NI_L2AFSR_P10 (NI_L2AFSR_P09 | NI_L2AFSR_LDRC) 172*6dfee483Stsien #define NI_L2AFSR_P11 (NI_L2AFSR_P10 | NI_L2AFSR_DAC | NI_L2AFSR_DRC) 173*6dfee483Stsien 174*6dfee483Stsien /* 175*6dfee483Stsien * Bits defined in DRAM Error Status Register 176*6dfee483Stsien * 177*6dfee483Stsien * +---+---+---+---+---+---+---+----------+------+ 178*6dfee483Stsien * |MEU|MEC|DAC|DAU|DSC|DSU|DBU| RESERVED | SYND | 179*6dfee483Stsien * +---+---+---+---+---+---+---+----------+------+ 180*6dfee483Stsien * 63 62 61 60 59 58 57 56-16 15-0 181*6dfee483Stsien * 182*6dfee483Stsien */ 183*6dfee483Stsien #define NI_DMAFSR_MEU 0x8000000000000000 184*6dfee483Stsien #define NI_DMAFSR_MEC 0x4000000000000000 185*6dfee483Stsien #define NI_DMAFSR_DAC 0x2000000000000000 186*6dfee483Stsien #define NI_DMAFSR_DAU 0x1000000000000000 187*6dfee483Stsien #define NI_DMAFSR_DSC 0x0800000000000000 188*6dfee483Stsien #define NI_DMAFSR_DSU 0x0400000000000000 189*6dfee483Stsien #define NI_DMAFSR_DBU 0x0200000000000000 190*6dfee483Stsien #define NI_DMAFSR_RSVD 0x01FFFFFFFFFF0000 191*6dfee483Stsien #define NI_DMAFSR_SYND 0x000000000000FFFF 192*6dfee483Stsien 193*6dfee483Stsien /* Bit mask for DRAM priority determination */ 194*6dfee483Stsien #define NI_DMAFSR_P01 (NI_DMAFSR_DSU | NI_DMAFSR_DAU) 195*6dfee483Stsien 196*6dfee483Stsien /* 197*6dfee483Stsien * The following is the syndrome value placed in memory 198*6dfee483Stsien * when an uncorrectable error is written back from L2 cache. 199*6dfee483Stsien */ 200*6dfee483Stsien #define NI_DRAM_POISON_SYND_FROM_LDWU 0x1118 201*6dfee483Stsien 202*6dfee483Stsien /* 203*6dfee483Stsien * This L2 poison syndrome is placed on 4 byte checkwords of L2 204*6dfee483Stsien * when a UE is loaded or DMA'ed into L2 205*6dfee483Stsien */ 206*6dfee483Stsien #define NI_L2_POISON_SYND_FROM_DAU 0x3 207*6dfee483Stsien #define NI_L2_POISON_SYND_MASK 0x7F 208*6dfee483Stsien #define NI_L2_POISON_SYND_SIZE 7 209*6dfee483Stsien 2107c478bd9Sstevel@tonic-gate #ifdef __cplusplus 2117c478bd9Sstevel@tonic-gate } 2127c478bd9Sstevel@tonic-gate #endif 2137c478bd9Sstevel@tonic-gate 2147c478bd9Sstevel@tonic-gate #endif /* _SYS_NIAGARAREGS_H */ 215