Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | /* |
2 | * ========== Copyright Header Begin ========================================== | |
3 | * | |
4 | * Hypervisor Software File: fire.h | |
5 | * | |
6 | * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. | |
7 | * | |
8 | * - Do no alter or remove copyright notices | |
9 | * | |
10 | * - Redistribution and use of this software in source and binary forms, with | |
11 | * or without modification, are permitted provided that the following | |
12 | * conditions are met: | |
13 | * | |
14 | * - Redistribution of source code must retain the above copyright notice, | |
15 | * this list of conditions and the following disclaimer. | |
16 | * | |
17 | * - Redistribution in binary form must reproduce the above copyright notice, | |
18 | * this list of conditions and the following disclaimer in the | |
19 | * documentation and/or other materials provided with the distribution. | |
20 | * | |
21 | * Neither the name of Sun Microsystems, Inc. or the names of contributors | |
22 | * may be used to endorse or promote products derived from this software | |
23 | * without specific prior written permission. | |
24 | * | |
25 | * This software is provided "AS IS," without a warranty of any kind. | |
26 | * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, | |
27 | * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A | |
28 | * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN | |
29 | * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR | |
30 | * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR | |
31 | * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN | |
32 | * OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR | |
33 | * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE | |
34 | * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, | |
35 | * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF | |
36 | * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. | |
37 | * | |
38 | * You acknowledge that this software is not designed, licensed or | |
39 | * intended for use in the design, construction, operation or maintenance of | |
40 | * any nuclear facility. | |
41 | * | |
42 | * ========== Copyright Header End ============================================ | |
43 | */ | |
44 | /* | |
45 | * Copyright 2007 Sun Microsystems, Inc. All rights reserved. | |
46 | * Use is subject to license terms. | |
47 | */ | |
48 | ||
49 | #ifndef _FIRE_FIRE_H | |
50 | #define _FIRE_FIRE_H | |
51 | ||
52 | #pragma ident "@(#)fire.h 1.9 07/07/17 SMI" | |
53 | ||
54 | ||
55 | #ifdef __cplusplus | |
56 | extern "C" { | |
57 | #endif | |
58 | ||
59 | #include <support.h> | |
60 | ||
61 | #define FIRE_A_AID (0x1e) | |
62 | #define FIRE_B_AID (FIRE_A_AID+1) | |
63 | ||
64 | #define FIRE_VINO_MIN (FIRE_A_AID << FIRE_DEVINO_SHIFT) | |
65 | #define FIRE_VINO_MAX ((FIRE_B_AID << FIRE_DEVINO_SHIFT) | FIRE_DEVINO_MASK) | |
66 | ||
67 | #define NFIREDEVINO (64) | |
68 | #define FIRE_DEVINO_MASK (NFIREDEVINO - 1) | |
69 | #define FIRE_DEVINO_SHIFT 6 | |
70 | ||
71 | #define FIRE_EQ2INO(n) (24+n) | |
72 | #define FIRE_NEQS 36 | |
73 | ||
74 | #define FIRE_MAX_MSIS 256 | |
75 | #define FIRE_MSI_MASK (FIRE_MAX_MSIS - 1) | |
76 | ||
77 | #define FIRE_MSIEQNUM_MASK ((1 << 6) - 1) | |
78 | ||
79 | #define FIRE_EQREC_SHIFT MSIEQ_REC_SHIFT | |
80 | #define FIRE_EQREC_SIZE MSIEQ_REC_SIZE | |
81 | #define FIRE_NEQRECORDS 128 | |
82 | ||
83 | #define FIRE_EQSIZE (FIRE_NEQRECORDS * FIRE_EQREC_SIZE) | |
84 | #define FIRE_EQMASK (FIRE_EQSIZE - 1) | |
85 | ||
86 | #define NFIREINTRCONTROLLERS 4 | |
87 | #define FIRE_INTR_CNTLR_MASK ((1 << NFIREINTRCONTROLLERS) - 1) | |
88 | #define FIRE_INTR_CNTLR_SHIFT 6 | |
89 | ||
90 | #define INTRSTATE_MASK 0x1 | |
91 | ||
92 | #define JPID_MASK 0x1f | |
93 | #define JPID_SHIFT 26 | |
94 | ||
95 | #define PCI_CFG_OFFSET_MASK ((1 << 12) - 1) | |
96 | #define PCI_CFG_SIZE_MASK 7 | |
97 | #define PCI_DEV_MASK (((1 << 24) - 1)^((1 << 8) -1)) | |
98 | #define PCI_DEV_SHIFT 4 | |
99 | ||
100 | #define JBUS_PA_SHIFT 43 | |
101 | #define FIRE_PAGESIZE_8K_SHIFT 13 | |
102 | ||
103 | #define FIRE_TSB_1K 0 | |
104 | #define FIRE_TSB_2K 1 | |
105 | #define FIRE_TSB_4K 2 | |
106 | #define FIRE_TSB_8K 3 | |
107 | #define FIRE_TSB_16K 4 | |
108 | #define FIRE_TSB_32K 5 | |
109 | #define FIRE_TSB_64K 6 | |
110 | #define FIRE_TSB_128K 7 | |
111 | #define FIRE_TSB_256K 8 | |
112 | #define FIRE_TSB_512K 9 | |
113 | ||
114 | #define FIRE_TSB_SIZE FIRE_TSB_256K | |
115 | ||
116 | #define FIRE_IOMMU_SIZE(n) (xULL(1) << ((n) + 10)) | |
117 | ||
118 | #define IOTTE_SIZE 8 | |
119 | #define IOTTE_SHIFT 3 /* log2(IOTTE_SIZE) */ | |
120 | #define IOMMU_PAGESHIFT 13 /* 2K */ | |
121 | #define IOMMU_PAGESIZE (xULL(1) << IOMMU_PAGESHIFT) | |
122 | ||
123 | #define EQALIGN (xULL(512) * xULL(1024)) /* 512K Align */ | |
124 | #define EQ_MAX_SIZE (FIRE_NEQS * FIRE_EQSIZE) | |
125 | #define IOMMU_EQ_RESERVE ((EQ_MAX_SIZE + EQALIGN - 1) & ~(EQALIGN - 1)) | |
126 | ||
127 | #define IOMMU_SPACE (FIRE_IOMMU_SIZE(FIRE_TSB_SIZE) << \ | |
128 | IOMMU_PAGESHIFT) | |
129 | /* | |
130 | * We carve out a 512K aligned chunk (IOMMU_EQ_RESERVE) of the DVMA range | |
131 | * for MSI Event Queues. So we make sure the max idx a guest can pass for | |
132 | * a map call doesn't trample on the event queues. | |
133 | */ | |
134 | #define IOTSB_INDEX_MAX (((IOMMU_SPACE - IOMMU_EQ_RESERVE) >> \ | |
135 | IOMMU_PAGESHIFT) - 1) | |
136 | #define IOTSB_SIZE ((IOMMU_SPACE/IOMMU_PAGESIZE) * IOTTE_SIZE) | |
137 | ||
138 | #define FIRE_IOTTE_V_SHIFT 63 | |
139 | #define FIRE_IOTTE_W_SHIFT 1 | |
140 | #define FIRE_INTMR_V_SHIFT 31 | |
141 | #define FIRE_INTMR_MDO_MODE_SHIFT 63 | |
142 | #define FIRE_MSIMR_V_SHIFT 63 | |
143 | #define FIRE_MSIMR_EQWR_N_SHIFT 62 | |
144 | #define FIRE_MSGMR_V_SHIFT 63 | |
145 | #define FIRE_EQREC_TYPE_SHIFT 56 | |
146 | #define FIRE_EQCCR_E2I_SHIFT 47 | |
147 | #define FIRE_EQCCR_COVERR 57 | |
148 | #define FIRE_EQCSR_EN_SHIFT 44 | |
149 | #define FIRE_EQCSR_ENOVERR 57 | |
150 | ||
151 | #define FIRE_IO_TTE(x) ((x) | (1ull << FIRE_IOTTE_V_SHIFT) \ | |
152 | | (1ull << FIRE_IOTTE_W_SHIFT)) | |
153 | #define FIRE_DVMA_RANGE_MAX (xULL(1) << 32) | |
154 | ||
155 | #define MSI_EQ_BASE_BYPASS_ADDR (0xfffc000000000000LL) | |
156 | ||
157 | #define FIRE_INTR_IDLE 0 | |
158 | #define FIRE_INTR_RECEIVED 3 | |
159 | ||
160 | ||
161 | #define MSIEQ_RID_SHIFT 16 | |
162 | #define MSIEQ_RID_SIZE_BITS 16 | |
163 | ||
164 | #define MSIEQ_TID_SHIFT 16 | |
165 | #define MSIEQ_TID_SIZE_BITS 8 | |
166 | ||
167 | #define MSIEQ_MSG_RT_CODE_SHIFT 56 | |
168 | #define MSIEQ_MSG_RT_CODE_SIZE_BITS 3 | |
169 | ||
170 | #define MSIEQ_DATA_SHIFT 16 | |
171 | #define MSIEQ_DATA_SIZE_BITS 16 | |
172 | ||
173 | #define MSIEQ_MSG_CODE_SHIFT 0 | |
174 | #define MSIEQ_MSG_CODE_SIZE_BITS 8 | |
175 | ||
176 | #define PCIE_PME_MSG 0x18 | |
177 | #define PCIE_PME_ACK_MSG 0x1b | |
178 | #define PCIE_CORR_MSG 0x30 | |
179 | #define PCIE_NONFATAL_MSG 0x31 | |
180 | #define PCIE_FATAL_MSG 0x33 | |
181 | ||
182 | #define FIRE_CORR_OFF 0x00 | |
183 | #define FIRE_NONFATAL_OFF 0x08 | |
184 | #define FIRE_FATAL_OFF 0x10 | |
185 | #define FIRE_PME_OFF 0x18 | |
186 | #define FIRE_PME_ACK_OFF 0x20 | |
187 | ||
188 | #define FIRE_MMU_CSR_TE (1 << 0) /* Translation Enable */ | |
189 | #define FIRE_MMU_CSR_BE (1 << 1) /* Bypass Enable */ | |
190 | #define FIRE_MMU_CSR_CM (3 << 8) /* Cache Mode */ | |
191 | #define FIRE_MMU_CSR_SE (1 << 10) /* Snoop Enable */ | |
192 | ||
193 | #define FIRE_MMU_CSR_VALUE (FIRE_MMU_CSR_TE |\ | |
194 | FIRE_MMU_CSR_BE |\ | |
195 | FIRE_MMU_CSR_CM |\ | |
196 | FIRE_MMU_CSR_SE) | |
197 | ||
198 | #define FIRE_IOMMU_BYPASS_BASE (0xffffc000000000000LL) | |
199 | #define FIRE_JBUS_ID_MR_MASK 0xf | |
200 | #define FIRE_REV_1 0x1 | |
201 | #define FIRE_REV_2_0 0x3 | |
202 | #define FIRE_REV_2_1 0x4 | |
203 | ||
204 | #define FIRE_TLU_CTL_NPWR_EN 0x100000 | |
205 | #define FIRE_TLU_STS_STATUS_MASK 0xf | |
206 | #define FIRE_TLU_STS_STATUS_DATA_LINK_ACTIVE 0x4 | |
207 | ||
208 | #ifdef __cplusplus | |
209 | } | |
210 | #endif | |
211 | ||
212 | #endif /* _FIRE_FIRE_H */ |