1*eb00b1c8SRobert Mustacchi /*
2*eb00b1c8SRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*eb00b1c8SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*eb00b1c8SRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*eb00b1c8SRobert Mustacchi  * 1.0 of the CDDL.
6*eb00b1c8SRobert Mustacchi  *
7*eb00b1c8SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*eb00b1c8SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*eb00b1c8SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*eb00b1c8SRobert Mustacchi  */
11*eb00b1c8SRobert Mustacchi 
12*eb00b1c8SRobert Mustacchi /*
13*eb00b1c8SRobert Mustacchi  * Copyright 2019 Joyent, Inc.
14*eb00b1c8SRobert Mustacchi  */
15*eb00b1c8SRobert Mustacchi 
16*eb00b1c8SRobert Mustacchi #include "imc_test.h"
17*eb00b1c8SRobert Mustacchi 
18*eb00b1c8SRobert Mustacchi /*
19*eb00b1c8SRobert Mustacchi  * This file tests several different miscellaneous failure modes by using
20*eb00b1c8SRobert Mustacchi  * incomplete imc_t and imc_t with bad data.
21*eb00b1c8SRobert Mustacchi  */
22*eb00b1c8SRobert Mustacchi 
23*eb00b1c8SRobert Mustacchi /*
24*eb00b1c8SRobert Mustacchi  * This IMC is a nominally valid IMC; however, it has flags indicate that the
25*eb00b1c8SRobert Mustacchi  * socket has bad data.
26*eb00b1c8SRobert Mustacchi  */
27*eb00b1c8SRobert Mustacchi static const imc_t imc_badsock = {
28*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
29*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
30*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
31*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_BAD_NODEID,
32*eb00b1c8SRobert Mustacchi 		.isock_sad = {
33*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
34*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
35*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
36*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
37*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
38*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
39*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
40*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
41*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
42*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
43*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
44*eb00b1c8SRobert Mustacchi 			},
45*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
46*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
47*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
48*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
49*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
50*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
51*eb00b1c8SRobert Mustacchi 			}
52*eb00b1c8SRobert Mustacchi 		},
53*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
54*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
55*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
56*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
57*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
58*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
59*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
60*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
61*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
62*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
63*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
64*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
65*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
66*eb00b1c8SRobert Mustacchi 			},
67*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
68*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
69*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
70*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
71*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
72*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
73*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
74*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
75*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
76*eb00b1c8SRobert Mustacchi 			}
77*eb00b1c8SRobert Mustacchi 		},
78*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
79*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
80*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
81*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
82*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
83*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
84*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
85*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
86*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
87*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
88*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
89*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
90*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
91*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
92*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
93*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
94*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
95*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
96*eb00b1c8SRobert Mustacchi 				},
97*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
98*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
99*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
100*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
101*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
102*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
103*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
104*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
105*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
106*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
107*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
108*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
109*eb00b1c8SRobert Mustacchi 				}
110*eb00b1c8SRobert Mustacchi 			}
111*eb00b1c8SRobert Mustacchi 		}
112*eb00b1c8SRobert Mustacchi 	}
113*eb00b1c8SRobert Mustacchi };
114*eb00b1c8SRobert Mustacchi 
115*eb00b1c8SRobert Mustacchi static const imc_t imc_invalid_sad = {
116*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
117*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
118*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
119*eb00b1c8SRobert Mustacchi 		.isock_valid = 0,
120*eb00b1c8SRobert Mustacchi 		.isock_sad = {
121*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
122*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_BAD_DRAM_ATTR,
123*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
124*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
125*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
126*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
127*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
128*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
129*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
130*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
131*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
132*eb00b1c8SRobert Mustacchi 			},
133*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
134*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
135*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
136*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
137*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
138*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
139*eb00b1c8SRobert Mustacchi 			}
140*eb00b1c8SRobert Mustacchi 		}
141*eb00b1c8SRobert Mustacchi 	}
142*eb00b1c8SRobert Mustacchi };
143*eb00b1c8SRobert Mustacchi 
144*eb00b1c8SRobert Mustacchi static const imc_t imc_invalid_sad_rule = {
145*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
146*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
147*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
148*eb00b1c8SRobert Mustacchi 		.isock_valid = 0,
149*eb00b1c8SRobert Mustacchi 		.isock_sad = {
150*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
151*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
152*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
153*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
154*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
155*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
156*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
157*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x34,
158*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
159*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
160*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
161*eb00b1c8SRobert Mustacchi 			},
162*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
163*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
164*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x42,
165*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
166*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
167*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
168*eb00b1c8SRobert Mustacchi 			}
169*eb00b1c8SRobert Mustacchi 		}
170*eb00b1c8SRobert Mustacchi 	}
171*eb00b1c8SRobert Mustacchi };
172*eb00b1c8SRobert Mustacchi 
173*eb00b1c8SRobert Mustacchi static const imc_t imc_invalid_sad_interleave = {
174*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
175*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
176*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
177*eb00b1c8SRobert Mustacchi 		.isock_valid = 0,
178*eb00b1c8SRobert Mustacchi 		.isock_sad = {
179*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
180*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
181*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
182*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
183*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
184*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
185*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
186*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
187*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
188*eb00b1c8SRobert Mustacchi 				.isr_ntargets = 0
189*eb00b1c8SRobert Mustacchi 			},
190*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
191*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
192*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
193*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
194*eb00b1c8SRobert Mustacchi 				.isr_ntargets = 0
195*eb00b1c8SRobert Mustacchi 			}
196*eb00b1c8SRobert Mustacchi 		}
197*eb00b1c8SRobert Mustacchi 	}
198*eb00b1c8SRobert Mustacchi };
199*eb00b1c8SRobert Mustacchi 
200*eb00b1c8SRobert Mustacchi static const imc_t imc_invalid_sad_target = {
201*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
202*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
203*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
204*eb00b1c8SRobert Mustacchi 		.isock_valid = 0,
205*eb00b1c8SRobert Mustacchi 		.isock_sad = {
206*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
207*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
208*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
209*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
210*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
211*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
212*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
213*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
214*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
215*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
216*eb00b1c8SRobert Mustacchi 				.isr_targets = { 9, 9, 9, 9, 9, 9, 9, 9 }
217*eb00b1c8SRobert Mustacchi 			},
218*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
219*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
220*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
221*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
222*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
223*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
224*eb00b1c8SRobert Mustacchi 			}
225*eb00b1c8SRobert Mustacchi 		}
226*eb00b1c8SRobert Mustacchi 	}
227*eb00b1c8SRobert Mustacchi };
228*eb00b1c8SRobert Mustacchi 
229*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_tad_rule = {
230*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
231*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
232*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
233*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
234*eb00b1c8SRobert Mustacchi 		.isock_sad = {
235*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
236*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
237*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
238*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
239*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
240*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
241*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
242*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
243*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
244*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
245*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
246*eb00b1c8SRobert Mustacchi 			},
247*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
248*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
249*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
250*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
251*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
252*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
253*eb00b1c8SRobert Mustacchi 			}
254*eb00b1c8SRobert Mustacchi 		},
255*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
256*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
257*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
258*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
259*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
260*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
261*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x2,
262*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
263*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
264*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
265*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
266*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
267*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
268*eb00b1c8SRobert Mustacchi 			},
269*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
270*eb00b1c8SRobert Mustacchi 				.itr_base = 0x277777777ULL,
271*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
272*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
273*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
274*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
275*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
276*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
277*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
278*eb00b1c8SRobert Mustacchi 			}
279*eb00b1c8SRobert Mustacchi 		}
280*eb00b1c8SRobert Mustacchi 	}
281*eb00b1c8SRobert Mustacchi };
282*eb00b1c8SRobert Mustacchi 
283*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_tad_3way = {
284*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
285*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
286*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
287*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
288*eb00b1c8SRobert Mustacchi 		.isock_sad = {
289*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
290*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
291*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
292*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
293*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
294*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
295*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
296*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
297*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
298*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
299*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
300*eb00b1c8SRobert Mustacchi 			},
301*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
302*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
303*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
304*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
305*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
306*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
307*eb00b1c8SRobert Mustacchi 			}
308*eb00b1c8SRobert Mustacchi 		},
309*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
310*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
311*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
312*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
313*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
314*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
315*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
316*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
317*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 3,
318*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
319*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
320*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
321*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
322*eb00b1c8SRobert Mustacchi 			},
323*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
324*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
325*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
326*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
327*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 3,
328*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
329*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
330*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
331*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
332*eb00b1c8SRobert Mustacchi 			}
333*eb00b1c8SRobert Mustacchi 		}
334*eb00b1c8SRobert Mustacchi 	}
335*eb00b1c8SRobert Mustacchi };
336*eb00b1c8SRobert Mustacchi 
337*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_tad_target = {
338*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
339*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
340*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
341*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
342*eb00b1c8SRobert Mustacchi 		.isock_sad = {
343*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
344*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
345*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
346*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
347*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
348*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
349*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
350*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
351*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
352*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
353*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
354*eb00b1c8SRobert Mustacchi 			},
355*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
356*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
357*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
358*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
359*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
360*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
361*eb00b1c8SRobert Mustacchi 			}
362*eb00b1c8SRobert Mustacchi 		},
363*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
364*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
365*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
366*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
367*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
368*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
369*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
370*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
371*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
372*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
373*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
374*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 0,
375*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
376*eb00b1c8SRobert Mustacchi 			},
377*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
378*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
379*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
380*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
381*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
382*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
383*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
384*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 0,
385*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
386*eb00b1c8SRobert Mustacchi 			}
387*eb00b1c8SRobert Mustacchi 		}
388*eb00b1c8SRobert Mustacchi 	}
389*eb00b1c8SRobert Mustacchi };
390*eb00b1c8SRobert Mustacchi 
391*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_tad_channelid = {
392*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
393*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
394*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
395*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
396*eb00b1c8SRobert Mustacchi 		.isock_sad = {
397*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
398*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
399*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
400*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
401*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
402*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
403*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
404*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
405*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
406*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
407*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
408*eb00b1c8SRobert Mustacchi 			},
409*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
410*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
411*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
412*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
413*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
414*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
415*eb00b1c8SRobert Mustacchi 			}
416*eb00b1c8SRobert Mustacchi 		},
417*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
418*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
419*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
420*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
421*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
422*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
423*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
424*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
425*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
426*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
427*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
428*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
429*eb00b1c8SRobert Mustacchi 				.itr_targets = { 17, 23, 42, 167 }
430*eb00b1c8SRobert Mustacchi 			},
431*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
432*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
433*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
434*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
435*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
436*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
437*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
438*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
439*eb00b1c8SRobert Mustacchi 				.itr_targets = { 17, 23, 42, 167 }
440*eb00b1c8SRobert Mustacchi 			}
441*eb00b1c8SRobert Mustacchi 		},
442*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
443*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
444*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
445*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
446*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
447*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
448*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
449*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
450*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
451*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
452*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
453*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
454*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
455*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
456*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
457*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
458*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
459*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
460*eb00b1c8SRobert Mustacchi 				},
461*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
462*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
463*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
464*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
465*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
466*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
467*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
468*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
469*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
470*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
471*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
472*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
473*eb00b1c8SRobert Mustacchi 				}
474*eb00b1c8SRobert Mustacchi 			}
475*eb00b1c8SRobert Mustacchi 		}
476*eb00b1c8SRobert Mustacchi 	}
477*eb00b1c8SRobert Mustacchi };
478*eb00b1c8SRobert Mustacchi 
479*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_channel_offset = {
480*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
481*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
482*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
483*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
484*eb00b1c8SRobert Mustacchi 		.isock_sad = {
485*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
486*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
487*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
488*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
489*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
490*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
491*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
492*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
493*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
494*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
495*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
496*eb00b1c8SRobert Mustacchi 			},
497*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
498*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
499*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
500*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
501*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
502*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
503*eb00b1c8SRobert Mustacchi 			}
504*eb00b1c8SRobert Mustacchi 		},
505*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
506*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
507*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
508*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
509*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
510*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
511*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
512*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
513*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
514*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
515*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
516*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
517*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
518*eb00b1c8SRobert Mustacchi 			},
519*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
520*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
521*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
522*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
523*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
524*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
525*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
526*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
527*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
528*eb00b1c8SRobert Mustacchi 			}
529*eb00b1c8SRobert Mustacchi 		},
530*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
531*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
532*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
533*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
534*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
535*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
536*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
537*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
538*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
539*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
540*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
541*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
542*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
543*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
544*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
545*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
546*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
547*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
548*eb00b1c8SRobert Mustacchi 				},
549*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 0,
550*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
551*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
552*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
553*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
554*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
555*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
556*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
557*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
558*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
559*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
560*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
561*eb00b1c8SRobert Mustacchi 				}
562*eb00b1c8SRobert Mustacchi 			}
563*eb00b1c8SRobert Mustacchi 		}
564*eb00b1c8SRobert Mustacchi 	}
565*eb00b1c8SRobert Mustacchi };
566*eb00b1c8SRobert Mustacchi 
567*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_rir_rule = {
568*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
569*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
570*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
571*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
572*eb00b1c8SRobert Mustacchi 		.isock_sad = {
573*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
574*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
575*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
576*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
577*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
578*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
579*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
580*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
581*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
582*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
583*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
584*eb00b1c8SRobert Mustacchi 			},
585*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
586*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
587*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
588*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
589*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
590*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
591*eb00b1c8SRobert Mustacchi 			}
592*eb00b1c8SRobert Mustacchi 		},
593*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
594*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
595*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
596*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
597*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
598*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
599*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
600*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
601*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
602*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
603*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
604*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
605*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
606*eb00b1c8SRobert Mustacchi 			},
607*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
608*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
609*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
610*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
611*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
612*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
613*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
614*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
615*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
616*eb00b1c8SRobert Mustacchi 			}
617*eb00b1c8SRobert Mustacchi 		},
618*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
619*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
620*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
621*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
622*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
623*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
624*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
625*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
626*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
627*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
628*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
629*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
630*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
631*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
632*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
633*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
634*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
635*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
636*eb00b1c8SRobert Mustacchi 				},
637*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
638*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
639*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
640*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
641*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
642*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
643*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
644*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
645*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x1,
646*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
647*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
648*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
649*eb00b1c8SRobert Mustacchi 				}
650*eb00b1c8SRobert Mustacchi 			}
651*eb00b1c8SRobert Mustacchi 		}
652*eb00b1c8SRobert Mustacchi 	}
653*eb00b1c8SRobert Mustacchi };
654*eb00b1c8SRobert Mustacchi 
655*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_rir_ileave = {
656*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
657*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
658*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
659*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
660*eb00b1c8SRobert Mustacchi 		.isock_sad = {
661*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
662*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
663*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
664*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
665*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
666*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
667*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
668*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
669*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
670*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
671*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
672*eb00b1c8SRobert Mustacchi 			},
673*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
674*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
675*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
676*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
677*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
678*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
679*eb00b1c8SRobert Mustacchi 			}
680*eb00b1c8SRobert Mustacchi 		},
681*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
682*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
683*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
684*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
685*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
686*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
687*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
688*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
689*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
690*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
691*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
692*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
693*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
694*eb00b1c8SRobert Mustacchi 			},
695*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
696*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
697*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
698*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
699*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
700*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
701*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
702*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
703*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
704*eb00b1c8SRobert Mustacchi 			}
705*eb00b1c8SRobert Mustacchi 		},
706*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
707*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
708*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
709*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
710*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
711*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
712*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
713*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
714*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
715*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
716*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
717*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
718*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
719*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
720*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
721*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
722*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
723*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
724*eb00b1c8SRobert Mustacchi 				},
725*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
726*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
727*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
728*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
729*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
730*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
731*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
732*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
733*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
734*eb00b1c8SRobert Mustacchi 					.irle_nentries = 0
735*eb00b1c8SRobert Mustacchi 				}
736*eb00b1c8SRobert Mustacchi 			}
737*eb00b1c8SRobert Mustacchi 		}
738*eb00b1c8SRobert Mustacchi 	}
739*eb00b1c8SRobert Mustacchi };
740*eb00b1c8SRobert Mustacchi 
741*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_dimm_index = {
742*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
743*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
744*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
745*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
746*eb00b1c8SRobert Mustacchi 		.isock_sad = {
747*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
748*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
749*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
750*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
751*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
752*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
753*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
754*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
755*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
756*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
757*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
758*eb00b1c8SRobert Mustacchi 			},
759*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
760*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
761*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
762*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
763*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
764*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
765*eb00b1c8SRobert Mustacchi 			}
766*eb00b1c8SRobert Mustacchi 		},
767*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
768*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
769*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
770*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
771*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
772*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
773*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
774*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
775*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
776*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
777*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
778*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
779*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
780*eb00b1c8SRobert Mustacchi 			},
781*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
782*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
783*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
784*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
785*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
786*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
787*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
788*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
789*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
790*eb00b1c8SRobert Mustacchi 			}
791*eb00b1c8SRobert Mustacchi 		},
792*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
793*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
794*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
795*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
796*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
797*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
798*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
799*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
800*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
801*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
802*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
803*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
804*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
805*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
806*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
807*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
808*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
809*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
810*eb00b1c8SRobert Mustacchi 				},
811*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
812*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
813*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
814*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
815*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
816*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
817*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
818*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
819*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
820*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
821*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x23, 0x0 },
822*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x42, 0x0 }
823*eb00b1c8SRobert Mustacchi 				}
824*eb00b1c8SRobert Mustacchi 			}
825*eb00b1c8SRobert Mustacchi 		}
826*eb00b1c8SRobert Mustacchi 	}
827*eb00b1c8SRobert Mustacchi };
828*eb00b1c8SRobert Mustacchi 
829*eb00b1c8SRobert Mustacchi static const imc_t imc_missing_dimm = {
830*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
831*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
832*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
833*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
834*eb00b1c8SRobert Mustacchi 		.isock_sad = {
835*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
836*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
837*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
838*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
839*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
840*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
841*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
842*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
843*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
844*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
845*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
846*eb00b1c8SRobert Mustacchi 			},
847*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
848*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
849*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
850*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
851*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
852*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
853*eb00b1c8SRobert Mustacchi 			}
854*eb00b1c8SRobert Mustacchi 		},
855*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
856*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
857*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
858*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
859*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
860*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
861*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
862*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
863*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
864*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
865*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
866*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
867*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
868*eb00b1c8SRobert Mustacchi 			},
869*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
870*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
871*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
872*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
873*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
874*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
875*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
876*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
877*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
878*eb00b1c8SRobert Mustacchi 			}
879*eb00b1c8SRobert Mustacchi 		},
880*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
881*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
882*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
883*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
884*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
885*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
886*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
887*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
888*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
889*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
890*eb00b1c8SRobert Mustacchi 					.idimm_present = B_FALSE
891*eb00b1c8SRobert Mustacchi 				},
892*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
893*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
894*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
895*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
896*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
897*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
898*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
899*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
900*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
901*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
902*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
903*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
904*eb00b1c8SRobert Mustacchi 				}
905*eb00b1c8SRobert Mustacchi 			}
906*eb00b1c8SRobert Mustacchi 		}
907*eb00b1c8SRobert Mustacchi 	}
908*eb00b1c8SRobert Mustacchi };
909*eb00b1c8SRobert Mustacchi 
910*eb00b1c8SRobert Mustacchi static const imc_t imc_bad_rank_index = {
911*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
912*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
913*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
914*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
915*eb00b1c8SRobert Mustacchi 		.isock_sad = {
916*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
917*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
918*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
919*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
920*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
921*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
922*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
923*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
924*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
925*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
926*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
927*eb00b1c8SRobert Mustacchi 			},
928*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
929*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
930*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
931*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
932*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
933*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
934*eb00b1c8SRobert Mustacchi 			}
935*eb00b1c8SRobert Mustacchi 		},
936*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
937*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
938*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
939*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
940*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
941*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
942*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
943*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
944*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
945*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
946*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
947*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
948*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
949*eb00b1c8SRobert Mustacchi 			},
950*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
951*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
952*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
953*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
954*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
955*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
956*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
957*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
958*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
959*eb00b1c8SRobert Mustacchi 			}
960*eb00b1c8SRobert Mustacchi 		},
961*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
962*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
963*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
964*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
965*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
966*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
967*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
968*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
969*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
970*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
971*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
972*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
973*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
974*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
975*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
976*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
977*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
978*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
979*eb00b1c8SRobert Mustacchi 				},
980*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
981*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
982*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
983*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
984*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
985*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
986*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
987*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
988*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
989*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
990*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x2, 0x0 },
991*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x3, 0x0 }
992*eb00b1c8SRobert Mustacchi 				}
993*eb00b1c8SRobert Mustacchi 			}
994*eb00b1c8SRobert Mustacchi 		}
995*eb00b1c8SRobert Mustacchi 	}
996*eb00b1c8SRobert Mustacchi };
997*eb00b1c8SRobert Mustacchi 
998*eb00b1c8SRobert Mustacchi static const imc_t imc_chanoff_underflow = {
999*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
1000*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
1001*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
1002*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
1003*eb00b1c8SRobert Mustacchi 		.isock_sad = {
1004*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
1005*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
1006*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
1007*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
1008*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
1009*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
1010*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
1011*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
1012*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
1013*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
1014*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
1015*eb00b1c8SRobert Mustacchi 			},
1016*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
1017*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
1018*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
1019*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
1020*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
1021*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
1022*eb00b1c8SRobert Mustacchi 			}
1023*eb00b1c8SRobert Mustacchi 		},
1024*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
1025*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
1026*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
1027*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
1028*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
1029*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
1030*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
1031*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
1032*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
1033*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
1034*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
1035*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
1036*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
1037*eb00b1c8SRobert Mustacchi 			},
1038*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
1039*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
1040*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
1041*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
1042*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
1043*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
1044*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
1045*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
1046*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
1047*eb00b1c8SRobert Mustacchi 			}
1048*eb00b1c8SRobert Mustacchi 		},
1049*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
1050*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
1051*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
1052*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
1053*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
1054*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
1055*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
1056*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
1057*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
1058*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
1059*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
1060*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
1061*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
1062*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
1063*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
1064*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
1065*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
1066*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
1067*eb00b1c8SRobert Mustacchi 				},
1068*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
1069*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0x1000000000ULL,
1070*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1071*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1072*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1073*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1074*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1075*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1076*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1077*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1078*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1079*eb00b1c8SRobert Mustacchi 					0x1000000000ULL,
1080*eb00b1c8SRobert Mustacchi 					0x1000000000ULL
1081*eb00b1c8SRobert Mustacchi 				},
1082*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
1083*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
1084*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
1085*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
1086*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
1087*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
1088*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
1089*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0, 0x0 },
1090*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1, 0x0 }
1091*eb00b1c8SRobert Mustacchi 				}
1092*eb00b1c8SRobert Mustacchi 			}
1093*eb00b1c8SRobert Mustacchi 		}
1094*eb00b1c8SRobert Mustacchi 	}
1095*eb00b1c8SRobert Mustacchi };
1096*eb00b1c8SRobert Mustacchi 
1097*eb00b1c8SRobert Mustacchi static const imc_t imc_riroff_underflow = {
1098*eb00b1c8SRobert Mustacchi 	.imc_gen = IMC_GEN_SANDY,
1099*eb00b1c8SRobert Mustacchi 	.imc_nsockets = 1,
1100*eb00b1c8SRobert Mustacchi 	.imc_sockets[0] = {
1101*eb00b1c8SRobert Mustacchi 		.isock_valid = IMC_SOCKET_V_VALID,
1102*eb00b1c8SRobert Mustacchi 		.isock_sad = {
1103*eb00b1c8SRobert Mustacchi 			.isad_flags = 0,
1104*eb00b1c8SRobert Mustacchi 			.isad_valid = IMC_SAD_V_VALID,
1105*eb00b1c8SRobert Mustacchi 			.isad_tolm = 0x80000000,	/* 2 GiB */
1106*eb00b1c8SRobert Mustacchi 			.isad_tohm = 0x280000000ULL,	/* 10 GiB */
1107*eb00b1c8SRobert Mustacchi 			.isad_nrules = 10,
1108*eb00b1c8SRobert Mustacchi 			.isad_rules[0] = {
1109*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
1110*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x80000000,
1111*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
1112*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
1113*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
1114*eb00b1c8SRobert Mustacchi 			},
1115*eb00b1c8SRobert Mustacchi 			.isad_rules[1] = {
1116*eb00b1c8SRobert Mustacchi 				.isr_enable = B_TRUE,
1117*eb00b1c8SRobert Mustacchi 				.isr_limit = 0x280000000ULL,
1118*eb00b1c8SRobert Mustacchi 				.isr_imode = IMC_SAD_IMODE_8t6,
1119*eb00b1c8SRobert Mustacchi 				.isr_ntargets = IMC_MAX_SAD_INTERLEAVE,
1120*eb00b1c8SRobert Mustacchi 				.isr_targets = { 0, 0, 0, 0, 0, 0, 0, 0 }
1121*eb00b1c8SRobert Mustacchi 			}
1122*eb00b1c8SRobert Mustacchi 		},
1123*eb00b1c8SRobert Mustacchi 		.isock_ntad = 1,
1124*eb00b1c8SRobert Mustacchi 		.isock_tad[0] = {
1125*eb00b1c8SRobert Mustacchi 			.itad_flags = 0,
1126*eb00b1c8SRobert Mustacchi 			.itad_nrules = 12,
1127*eb00b1c8SRobert Mustacchi 			.itad_rules[0] = {
1128*eb00b1c8SRobert Mustacchi 				.itr_base = 0x0,
1129*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x80000000,
1130*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
1131*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
1132*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
1133*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
1134*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
1135*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
1136*eb00b1c8SRobert Mustacchi 			},
1137*eb00b1c8SRobert Mustacchi 			.itad_rules[1] = {
1138*eb00b1c8SRobert Mustacchi 				.itr_base = 0x80000000,
1139*eb00b1c8SRobert Mustacchi 				.itr_limit = 0x280000000ULL,
1140*eb00b1c8SRobert Mustacchi 				.itr_sock_way = 1,
1141*eb00b1c8SRobert Mustacchi 				.itr_chan_way = 1,
1142*eb00b1c8SRobert Mustacchi 				.itr_sock_gran = IMC_TAD_GRAN_64B,
1143*eb00b1c8SRobert Mustacchi 				.itr_chan_gran = IMC_TAD_GRAN_64B,
1144*eb00b1c8SRobert Mustacchi 				.itr_ntargets = 4,
1145*eb00b1c8SRobert Mustacchi 				.itr_targets = { 0, 0, 0, 0 }
1146*eb00b1c8SRobert Mustacchi 			}
1147*eb00b1c8SRobert Mustacchi 		},
1148*eb00b1c8SRobert Mustacchi 		.isock_nimc = 1,
1149*eb00b1c8SRobert Mustacchi 		.isock_imcs[0] = {
1150*eb00b1c8SRobert Mustacchi 			.icn_nchannels = 1,
1151*eb00b1c8SRobert Mustacchi 			.icn_dimm_type = IMC_DIMM_DDR3,
1152*eb00b1c8SRobert Mustacchi 			.icn_ecc = B_TRUE,
1153*eb00b1c8SRobert Mustacchi 			.icn_lockstep = B_FALSE,
1154*eb00b1c8SRobert Mustacchi 			.icn_closed = B_FALSE,
1155*eb00b1c8SRobert Mustacchi 			.icn_channels[0] = {
1156*eb00b1c8SRobert Mustacchi 				.ich_ndimms = 1,
1157*eb00b1c8SRobert Mustacchi 				.ich_dimms[0] = {
1158*eb00b1c8SRobert Mustacchi 					.idimm_present = B_TRUE,
1159*eb00b1c8SRobert Mustacchi 					.idimm_nbanks = 3,
1160*eb00b1c8SRobert Mustacchi 					.idimm_width = 8,
1161*eb00b1c8SRobert Mustacchi 					.idimm_density = 2,
1162*eb00b1c8SRobert Mustacchi 					.idimm_nranks = 2,
1163*eb00b1c8SRobert Mustacchi 					.idimm_nrows = 14,
1164*eb00b1c8SRobert Mustacchi 					.idimm_ncolumns = 10,
1165*eb00b1c8SRobert Mustacchi 					.idimm_size = 0x80000000
1166*eb00b1c8SRobert Mustacchi 				},
1167*eb00b1c8SRobert Mustacchi 				.ich_ntad_offsets = 12,
1168*eb00b1c8SRobert Mustacchi 				.ich_tad_offsets = { 0, 0x80000000, 0, 0, 0, 0,
1169*eb00b1c8SRobert Mustacchi 				    0, 0, 0, 0, 0 },
1170*eb00b1c8SRobert Mustacchi 				.ich_nrankileaves = 8,
1171*eb00b1c8SRobert Mustacchi 				.ich_rankileaves[0] = {
1172*eb00b1c8SRobert Mustacchi 					.irle_enabled = B_TRUE,
1173*eb00b1c8SRobert Mustacchi 					.irle_nways = 2,
1174*eb00b1c8SRobert Mustacchi 					.irle_nwaysbits = 1,
1175*eb00b1c8SRobert Mustacchi 					.irle_limit = 0x200000000ULL,
1176*eb00b1c8SRobert Mustacchi 					.irle_nentries = 5,
1177*eb00b1c8SRobert Mustacchi 					.irle_entries[0] = { 0x0,
1178*eb00b1c8SRobert Mustacchi 					    0x100000000000ULL },
1179*eb00b1c8SRobert Mustacchi 					.irle_entries[1] = { 0x1,
1180*eb00b1c8SRobert Mustacchi 					    0x100000000000ULL }
1181*eb00b1c8SRobert Mustacchi 				}
1182*eb00b1c8SRobert Mustacchi 			}
1183*eb00b1c8SRobert Mustacchi 		}
1184*eb00b1c8SRobert Mustacchi 	}
1185*eb00b1c8SRobert Mustacchi };
1186*eb00b1c8SRobert Mustacchi 
1187*eb00b1c8SRobert Mustacchi const imc_test_case_t imc_test_fail[] = { {
1188*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad Socket data (1)",
1189*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_badsock,
1190*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x34,
1191*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1192*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SOCKET
1193*eb00b1c8SRobert Mustacchi }, {
1194*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad Socket data (2)",
1195*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_badsock,
1196*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1197*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1198*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SOCKET
1199*eb00b1c8SRobert Mustacchi }, {
1200*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad Socket data (3)",
1201*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_badsock,
1202*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1203*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1204*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SOCKET
1205*eb00b1c8SRobert Mustacchi }, {
1206*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD data (1)",
1207*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad,
1208*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x34,
1209*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1210*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD
1211*eb00b1c8SRobert Mustacchi }, {
1212*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD data (2)",
1213*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad,
1214*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1215*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1216*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD
1217*eb00b1c8SRobert Mustacchi }, {
1218*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD data (3)",
1219*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad,
1220*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1221*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1222*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD
1223*eb00b1c8SRobert Mustacchi }, {
1224*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD rule (1)",
1225*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_rule,
1226*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1227*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1228*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_SAD_RULE
1229*eb00b1c8SRobert Mustacchi }, {
1230*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD rule (2)",
1231*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_rule,
1232*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1233*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1234*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_SAD_RULE
1235*eb00b1c8SRobert Mustacchi }, {
1236*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD rule (3)",
1237*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_rule,
1238*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1239*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1240*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_SAD_RULE
1241*eb00b1c8SRobert Mustacchi }, {
1242*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD interleave (1)",
1243*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_interleave,
1244*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1245*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1246*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD_INTERLEAVE
1247*eb00b1c8SRobert Mustacchi }, {
1248*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD interleave (2)",
1249*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_interleave,
1250*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1251*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1252*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD_INTERLEAVE
1253*eb00b1c8SRobert Mustacchi }, {
1254*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD interleave (3)",
1255*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_interleave,
1256*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1257*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1258*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_SAD_INTERLEAVE
1259*eb00b1c8SRobert Mustacchi }, {
1260*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD TAD target (1)",
1261*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_target,
1262*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1263*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1264*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_SAD_BAD_SOCKET
1265*eb00b1c8SRobert Mustacchi }, {
1266*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD TAD target (2)",
1267*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_target,
1268*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1269*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1270*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_SAD_BAD_SOCKET
1271*eb00b1c8SRobert Mustacchi }, {
1272*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad SAD TAD target (3)",
1273*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_invalid_sad_target,
1274*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1275*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1276*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_SAD_BAD_TAD
1277*eb00b1c8SRobert Mustacchi }, {
1278*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD rule (1)",
1279*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_rule,
1280*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1281*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1282*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_TAD_RULE
1283*eb00b1c8SRobert Mustacchi }, {
1284*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD rule (2)",
1285*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_rule,
1286*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1287*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1288*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_TAD_RULE
1289*eb00b1c8SRobert Mustacchi }, {
1290*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD rule (3)",
1291*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_rule,
1292*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1293*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1294*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_TAD_RULE
1295*eb00b1c8SRobert Mustacchi }, {
1296*eb00b1c8SRobert Mustacchi 	.itc_desc = "Unsupported 3 way interleave (1)",
1297*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_3way,
1298*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1299*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1300*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_3_ILEAVE
1301*eb00b1c8SRobert Mustacchi }, {
1302*eb00b1c8SRobert Mustacchi 	.itc_desc = "Unsupported 3 way interleave (2)",
1303*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_3way,
1304*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1305*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1306*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_3_ILEAVE
1307*eb00b1c8SRobert Mustacchi }, {
1308*eb00b1c8SRobert Mustacchi 	.itc_desc = "Unsupported 3 way interleave (3)",
1309*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_3way,
1310*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1311*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1312*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_3_ILEAVE
1313*eb00b1c8SRobert Mustacchi }, {
1314*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target index (1)",
1315*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_target,
1316*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1317*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1318*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_BAD_TARGET_INDEX
1319*eb00b1c8SRobert Mustacchi }, {
1320*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target index (2)",
1321*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_target,
1322*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1323*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1324*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_BAD_TARGET_INDEX
1325*eb00b1c8SRobert Mustacchi }, {
1326*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target index (3)",
1327*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_target,
1328*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1329*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1330*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_TAD_BAD_TARGET_INDEX
1331*eb00b1c8SRobert Mustacchi }, {
1332*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target channel (1)",
1333*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_channelid,
1334*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1335*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1336*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_ID
1337*eb00b1c8SRobert Mustacchi }, {
1338*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target channel (2)",
1339*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_channelid,
1340*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1341*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1342*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_ID
1343*eb00b1c8SRobert Mustacchi }, {
1344*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad TAD target channel (3)",
1345*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_tad_channelid,
1346*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1347*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1348*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_ID
1349*eb00b1c8SRobert Mustacchi }, {
1350*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset target (1)",
1351*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_channel_offset,
1352*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1353*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1354*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_TAD_OFFSET
1355*eb00b1c8SRobert Mustacchi }, {
1356*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset target (2)",
1357*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_channel_offset,
1358*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1359*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1360*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_TAD_OFFSET
1361*eb00b1c8SRobert Mustacchi }, {
1362*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset target (3)",
1363*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_channel_offset,
1364*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1365*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1366*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_CHANNEL_TAD_OFFSET
1367*eb00b1c8SRobert Mustacchi }, {
1368*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rule (1)",
1369*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_rule,
1370*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1371*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1372*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_RIR_RULE
1373*eb00b1c8SRobert Mustacchi }, {
1374*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rule (2)",
1375*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_rule,
1376*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1377*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1378*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_RIR_RULE
1379*eb00b1c8SRobert Mustacchi }, {
1380*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rule (3)",
1381*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1382*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_rule,
1383*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_NO_RIR_RULE
1384*eb00b1c8SRobert Mustacchi }, {
1385*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR interleave target (1)",
1386*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_ileave,
1387*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1388*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1389*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_RIR_ILEAVE_TARGET
1390*eb00b1c8SRobert Mustacchi }, {
1391*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR interleave target (2)",
1392*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_ileave,
1393*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1394*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1395*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_RIR_ILEAVE_TARGET
1396*eb00b1c8SRobert Mustacchi }, {
1397*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR interleave target (3)",
1398*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rir_ileave,
1399*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1400*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1401*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_RIR_ILEAVE_TARGET
1402*eb00b1c8SRobert Mustacchi }, {
1403*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (1)",
1404*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_dimm_index,
1405*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1406*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1407*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_INDEX
1408*eb00b1c8SRobert Mustacchi }, {
1409*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (2)",
1410*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_dimm_index,
1411*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1412*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1413*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_INDEX
1414*eb00b1c8SRobert Mustacchi }, {
1415*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (3)",
1416*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_dimm_index,
1417*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1418*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1419*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_INDEX
1420*eb00b1c8SRobert Mustacchi }, {
1421*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (1)",
1422*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_missing_dimm,
1423*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1424*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1425*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_DIMM_NOT_PRESENT
1426*eb00b1c8SRobert Mustacchi }, {
1427*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (2)",
1428*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_missing_dimm,
1429*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1430*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1431*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_DIMM_NOT_PRESENT
1432*eb00b1c8SRobert Mustacchi }, {
1433*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR DIMM target (3)",
1434*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_missing_dimm,
1435*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1436*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1437*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_DIMM_NOT_PRESENT
1438*eb00b1c8SRobert Mustacchi }, {
1439*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rank target (1)",
1440*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rank_index,
1441*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1442*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1443*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_RANK
1444*eb00b1c8SRobert Mustacchi }, {
1445*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rank target (2)",
1446*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rank_index,
1447*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1448*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1449*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_RANK
1450*eb00b1c8SRobert Mustacchi }, {
1451*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad RIR rank target (3)",
1452*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_bad_rank_index,
1453*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1454*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1455*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_BAD_DIMM_RANK
1456*eb00b1c8SRobert Mustacchi }, {
1457*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset underflow (1)",
1458*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_chanoff_underflow,
1459*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1460*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1461*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_CHANOFF_UNDERFLOW
1462*eb00b1c8SRobert Mustacchi }, {
1463*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset underflow (2)",
1464*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_chanoff_underflow,
1465*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1466*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1467*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_CHANOFF_UNDERFLOW
1468*eb00b1c8SRobert Mustacchi }, {
1469*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad channel offset underflow (3)",
1470*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_chanoff_underflow,
1471*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1472*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1473*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_CHANOFF_UNDERFLOW
1474*eb00b1c8SRobert Mustacchi }, {
1475*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad rank offset underflow (1)",
1476*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_riroff_underflow,
1477*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x45,
1478*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1479*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_RANKOFF_UNDERFLOW
1480*eb00b1c8SRobert Mustacchi }, {
1481*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad rank offset underflow (2)",
1482*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_riroff_underflow,
1483*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x7fffff,
1484*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1485*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_RANKOFF_UNDERFLOW
1486*eb00b1c8SRobert Mustacchi }, {
1487*eb00b1c8SRobert Mustacchi 	.itc_desc = "Bad rank offset underflow (3)",
1488*eb00b1c8SRobert Mustacchi 	.itc_imc = &imc_riroff_underflow,
1489*eb00b1c8SRobert Mustacchi 	.itc_pa = 0x123456789ULL,
1490*eb00b1c8SRobert Mustacchi 	.itc_pass = B_FALSE,
1491*eb00b1c8SRobert Mustacchi 	.itc_fail = IMC_DECODE_F_RANKOFF_UNDERFLOW
1492*eb00b1c8SRobert Mustacchi }, {
1493*eb00b1c8SRobert Mustacchi 	.itc_desc = NULL
1494*eb00b1c8SRobert Mustacchi } };
1495