summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/include/logout.h
blob: 0baa6e42e8588f5d03441dd29c3887fe8c46fe84 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
/* $OpenBSD: logout.h,v 1.2 2009/01/17 18:30:08 miod Exp $ */
/* $NetBSD: logout.h,v 1.6 2005/12/11 12:16:16 christos Exp $ */

/*
 * Copyright (c) 2009 Miodrag Vallat.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */
/*
 * Copyright (c) 1998 by Matthew Jacob
 * NASA AMES Research Center.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice immediately at the beginning of the file, without modification,
 *    this list of conditions, and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * Various Alpha OSF/1 PAL Logout error definitions.
 */

/*
 * Information gathered from: DEC documentation
 */

/*
 * Avanti (AlphaStation 200 and 400) Specific PALcode Exception Logout 
 * Area Definitions
 */

/*
 * Avanti Specific common logout frame header.
 * *Almost* identical to the generic logout header listed in alpha_cpu.h.
 */

typedef struct {
	unsigned int	la_frame_size;		/* frame size */
	unsigned int	la_flags;		/* flags; see alpha_cpu.h */
	unsigned int	la_cpu_offset;		/* offset to CPU area */
	unsigned int	la_system_offset;	/* offset to system area */
	unsigned int	mcheck_code;		/* machine check code */
	unsigned int	:32;
} mc_hdr_avanti;

/* Machine Check Codes */

/* SCB 660 Fatal Machine Checks */
#define AVANTI_RETRY_TIMEOUT		0x201L
#define	AVANTI_DMA_DATA_PARITY		0x202L
#define AVANTI_IO_PARITY		0x203L
#define AVANTI_TARGET_ABORT		0x204L
#define AVANTI_NO_DEVICE		0x205L
#define AVANTI_CORRRECTABLE_MEMORY	0x206L	/* Should never occur */
#define AVANTI_UNCORRECTABLE_PCI_MEMORY	0x207L
#define AVANTI_INVALID_PT_LOOKUP	0x208L
#define AVANTI_MEMORY			0x209L
#define AVANTI_BCACHE_TAG_ADDR_PARITY	0x20AL
#define AVANTI_BCACHE_TAG_CTRL_PARITY	0x20BL
#define AVANTI_NONEXISTENT_MEMORY	0x20CL
#define AVANTI_IO_BUS			0x20DL
#define AVANTI_BCACHE_TAG_PARITY	 0x80L
#define AVANTI_BCACHE_TAG_CTRL_PARITY2   0x82L

/* SCB 670 Processor Fatal Machine Checks */
#define AVANTI_HARD_ERROR		 0x84L
#define AVANTI_CORRECTABLE_ECC		 0x86L
#define AVANTI_NONCORRECTABLE_ECC	 0x88L
#define AVANTI_UNKNOWN_ERROR		 0x8AL
#define AVANTI_SOFT_ERROR		 0x8CL
#define AVANTI_BUGCHECK		 	 0x8EL
#define AVANTI_OS_BUGCHECK		 0x90L
#define AVANTI_DCACHE_FILL_PARITY 	 0x92L
#define AVANTI_ICACHE_FILL_PARITY	 0x94L

typedef struct {
	/* Registers from the CPU */
	u_int64_t	paltemp[32];	/* PAL TEMP REGS.		*/
	u_int64_t	exc_addr;	/* Address of excepting ins.	*/
	u_int64_t	exc_sum;	/* Summary of arithmetic traps.	*/
	u_int64_t	exc_mask;	/* Exception mask.		*/ 
	u_int64_t	iccsr;
	u_int64_t	pal_base;	/* Base address for PALcode.	*/
	u_int64_t	hier;
	u_int64_t	hirr;
	u_int64_t	mm_csr;
	u_int64_t	dc_stat;
	u_int64_t	dc_addr;
	u_int64_t	abox_ctl;
	u_int64_t	biu_stat;	/* Bus Interface Unit Status.	*/
	u_int64_t	biu_addr;
	u_int64_t	biu_ctl;
	u_int64_t	fill_syndrome;
	u_int64_t	fill_addr;
	u_int64_t	va;
	u_int64_t	bc_tag;

	/* Registers from the cache and memory controller (21071-CA) */
	u_int64_t	coma_gcr;	/* Error and Diag. Status.	*/
	u_int64_t	coma_edsr;
	u_int64_t	coma_ter;
	u_int64_t	coma_elar;
	u_int64_t	coma_ehar;
	u_int64_t	coma_ldlr;
	u_int64_t	coma_ldhr;
	u_int64_t	coma_base0;
	u_int64_t	coma_base1;
	u_int64_t	coma_base2;
	u_int64_t	coma_cnfg0;
	u_int64_t	coma_cnfg1;
	u_int64_t	coma_cnfg2;

	/* Registers from the PCI bridge (21071-DA) */
	u_int64_t	epic_dcsr;	 /* Diag. Control and Status.	*/
	u_int64_t	epic_pear;
	u_int64_t	epic_sear;
	u_int64_t	epic_tbr1;
	u_int64_t	epic_tbr2;
	u_int64_t	epic_pbr1;
	u_int64_t	epic_pbr2;
	u_int64_t	epic_pmr1;
	u_int64_t	epic_pmr2;
	u_int64_t	epic_harx1;
	u_int64_t	epic_harx2;
	u_int64_t	epic_pmlt;
	u_int64_t	epic_tag0;
	u_int64_t	epic_tag1;
	u_int64_t	epic_tag2;
	u_int64_t	epic_tag3;
	u_int64_t	epic_tag4;
	u_int64_t	epic_tag5;
	u_int64_t	epic_tag6;
	u_int64_t	epic_tag7;
	u_int64_t	epic_data0;
	u_int64_t	epic_data1;
	u_int64_t	epic_data2;
	u_int64_t	epic_data3;
	u_int64_t	epic_data4;
	u_int64_t	epic_data5;
	u_int64_t	epic_data6;
	u_int64_t	epic_data7;
} mc_uc_avanti;

/*
 * Information gathered from: OSF/1 header files.
 */


/*
 * EV5 Specific OSF/1 Pal Code Exception Logout Area Definitions
 * (inspired from OSF/1 Header files).
 */

/*
 * EV5 Specific common logout frame header.
 * *Almost* identical to the generic logout header listed in alpha_cpu.h.
 */

typedef struct {
	unsigned int	la_frame_size;		/* frame size */
	unsigned int	la_flags;		/* flags; see alpha_cpu.h */
	unsigned int	la_cpu_offset;		/* offset to CPU area */
	unsigned int	la_system_offset;	/* offset to system area */
	unsigned long	mcheck_code;		/* machine check code */
} mc_hdr_ev5;

/* Machine Check Codes */
#define	EV5_CORRECTED		0x86L
#define	SYSTEM_CORRECTED	0x201L

/*
 * EV5 Specific Machine Check logout frame for uncorrectable errors.
 * This is used to log uncorrectable errors such as double bit ECC errors.
 *
 * This typically resides in the CPU offset area of the logout frame.
 */

typedef struct {
	u_int64_t	shadow[8];	/* Shadow reg. 8-14, 25		*/
	u_int64_t	paltemp[24];	/* PAL TEMP REGS.		*/
	u_int64_t	exc_addr;	/* Address of excepting ins.	*/
	u_int64_t	exc_sum;	/* Summary of arithmetic traps.	*/
	u_int64_t	exc_mask;	/* Exception mask.		*/ 
	u_int64_t	pal_base;	/* Base address for PALcode.	*/
	u_int64_t	isr;		/* Interrupt Status Reg.	*/
	u_int64_t	icsr;		/* CURRENT SETUP OF EV5 IBOX	*/
	u_int64_t	ic_perr_stat;	/*
					 * I-CACHE Reg:
					 *	<13> IBOX Timeout
					 *	<12> TAG parity
					 *	<11> Data parity
					 */
	u_int64_t	dc_perr_stat;	/* D-CACHE error Reg:
					 * Bits set to 1:
					 *  <2> Data error in bank 0
					 *  <3> Data error in bank 1
					 *  <4> Tag error in bank 0
					 *  <5> Tag error in bank 1
					 */
	u_int64_t	va;		/* Effective VA of fault or miss. */
	u_int64_t	mm_stat;	/*
					 * Holds the reason for D-stream 
					 * fault or D-cache parity errors
					 */
	u_int64_t	sc_addr;	/*
					 * Address that was being accessed
					 * when EV5 detected Secondary cache
					 * failure.
					 */
	u_int64_t	sc_stat;	/*
					 * Helps determine if the error was
					 * TAG/Data parity(Secondary Cache)
					 */
	u_int64_t	bc_tag_addr;	/* Contents of EV5 BC_TAG_ADDR	  */
	u_int64_t	ei_addr;	/*
					 * Physical address of any transfer
					 * that is logged in the EV5 EI_STAT
					 */
	u_int64_t	fill_syndrome;	/* For correcting ECC errors.	  */
	u_int64_t	ei_stat;	/*
					 * Helps identify reason of any 
					 * processor uncorrectable error
					 * at its external interface.	  
					 */
	u_int64_t	ld_lock;	/* Contents of EV5 LD_LOCK register*/
} mc_uc_ev5;
#define	EV5_IC_PERR_IBOXTMO	0x2000

/*
 * EV5 Specific Machine Check logout frame for correctable errors.
 *
 * This is used to log correctable errors such as Single bit ECC errors.
 */
typedef struct {
	u_int64_t	ei_addr;	/*
					 * Physical address of any transfer
					 * that is logged in the EV5 EI_STAT
					 */
	u_int64_t	fill_syndrome;	/* For correcting ECC errors.	  */
	u_int64_t	ei_stat;	/*
					 * Helps identify reason of any 
					 * processor uncorrectable error
					 * at its external interface.	  
					 */
	u_int64_t	isr;		/* Interrupt Status Reg. 	  */
} mc_cc_ev5;

/*
 * Information gathered from: AlphaServer ES40 Service Guide
 */

/*
 * EV6 Specific OSF/1 Pal Code Exception Logout Area Definitions
 */

/*
 * EV6 Specific common logout frame header.
 * *Almost* identical to the generic logout header listed in alpha_cpu.h.
 */

typedef struct {
	unsigned int	la_frame_size;		/* frame size */
	unsigned int	la_flags;		/* flags; see alpha_cpu.h */
	unsigned int	la_cpu_offset;		/* offset to CPU area */
	unsigned int	la_system_offset;	/* offset to system area */
	unsigned int	mcheck_code;		/* machine check code */
	unsigned int	mcheck_rev;		/* frame revision */
#define	MC_EV6_FRAME_REVISION		1
} mc_hdr_ev6;

/*
 * EV6 Specific Machine Check processor area.
 */

typedef struct {
	uint64_t	i_stat;
	uint64_t	dc_stat;
	uint64_t	c_addr;
	uint64_t	c_syndrome_0;
	uint64_t	c_syndrome_1;
	uint64_t	c_stat;
	uint64_t	c_sts;
	uint64_t	mm_stat;
	/* the following fields only exist for uncorrectable errors */
	uint64_t	exc_addr;
	uint64_t	ier_cm;
	uint64_t	isum;
	uint64_t	reserved0;
	uint64_t	pal_base;
	uint64_t	i_ctl;
	uint64_t	pctx;
	uint64_t	reserved1;
	uint64_t	reserved2;
} mc_cpu_ev6;

/* C_STAT bits */
#define	EV6_C_STAT_MASK					0x1f
#define	EV6_C_STAT_NO_ERROR				0x00
#define	EV6_C_STAT_SNGL_BC_TAG_PERR			0x01
#define	EV6_C_STAT_SNGL_DC_DUPLICATE_TAG_PERR		0x02
#define	EV6_C_STAT_SNGL_DSTREAM_MEM_ECC_ERR		0x03
#define	EV6_C_STAT_SNGL_DSTREAM_BC_ECC_ERR		0x04
#define	EV6_C_STAT_SNGL_DSTREAM_DC_ECC_ERR		0x05
#define	EV6_C_STAT_SNGL_BC_PROBE_HIT_ERR		0x06
#define	EV6_C_STAT_SNGL_BC_PROBE_HIT_ERR2		0x07
#define	EV6_C_STAT_SNGL_ISTREAM_MEM_ECC_ERR		0x0b
#define	EV6_C_STAT_SNGL_ISTREAM_BC_ECC_ERR		0x0c
#define	EV6_C_STAT_DBL_DSTREAM_MEM_ECC_ERR		0x13
#define	EV6_C_STAT_DBL_DSTREAM_BC_ECC_ERR		0x14
#define	EV6_C_STAT_DBL_ISTREAM_MEM_ECC_ERR		0x1b
#define	EV6_C_STAT_DBL_ISTREAM_BC_ECC_ERR		0x1c

/* C_STS bits */
#define	EV6_C_STS_MASK					0x0f
#define	EV6_C_STS_PARITY				0x08
#define	EV6_C_STS_VALID					0x04
#define	EV6_C_STS_DIRTY					0x02
#define	EV6_C_STS_SHARED				0x01

/* DC_STAT */
#define	EV6_DC_STAT_MASK				0x1f
#define	EV6_DC_STAT_PIPELINE_0_ERROR			0x01
#define	EV6_DC_STAT_PIPELINE_1_ERROR			0x02
#define	EV6_DC_STAT_STORE_DATA_ECC_ERROR		0x04
#define	EV6_DC_STAT_LOAD_DATA_ECC_ERROR			0x08
#define	EV6_DC_STAT_STORE_DATA_ECC_ERROR_REPEATED	0x10

/* MM_STAT */
#define	EV6_MM_STAT_MASK				0x03ff
#define	EV6_MM_STAT_WRITE				0x0001
#define	EV6_MM_STAT_ACCESS_VIOLATION			0x0002
#define	EV6_MM_STAT_FOR_SET				0x0004
#define	EV6_MM_STAT_FOW_SET				0x0008
#define	EV6_MM_STAT_OPCODE_MASK				0x02f0
#define	EV6_MM_STAT_DCACHE_CORRECTABLE_ERROR		0x0300

/*
 * EV6 Specific Machine Check system area.
 */

typedef struct {
	uint64_t	flags;
	uint64_t	c_dir;
	uint64_t	c_misc;
	uint64_t	p0_perror;
	uint64_t	p1_perror;
} mc_sys_ev6;

/*
 * EV6 Environmental Error logout frame.
 */

typedef struct {
	uint64_t	flags;
	uint64_t	c_dir;
	uint64_t	smir;
	uint64_t	cpuir;
	uint64_t	psir;
	uint64_t	lm78_isr;
	uint64_t	doors;
	uint64_t	temp_warning;
	uint64_t	fan_control;
	uint64_t	fatal_power_down;
	uint64_t	reserved;
} mc_env_ev6;

/* SMIR */
#define	EV6_ENV_SMIR_RESET				0x80
#define	EV6_ENV_SMIR_PCI1_RESET				0x40
#define	EV6_ENV_SMIR_PCI0_RESET				0x20
#define	EV6_ENV_SMIR_OVERTEMP				0x10
#define	EV6_ENV_SMIR_DC_FAILURE				0x04
#define	EV6_ENV_SMIR_RMC_HALT				0x02
#define	EV6_ENV_SMIR_PSU_FAILURE			0x01

/* CPUIR */
#define	EV6_ENV_CPUIR_CPU_FAIL(cpuno)			((cpuno) << 4)
#define	EV6_ENV_CPUIR_CPU_ENABLE(cpuno)			((cpuno) << 0)

/* PSIR */
#define	EV6_ENV_PSIR_PSU_FAIL(psuno)			((psuno) << 4)
#define	EV6_ENV_PSIR_PSU_ENABLE(psuno)			((psuno) << 0)

/* LM78_ISR */
#define	EV6_ENV_LM78_PSU_AC_HIGH_LIMIT			0x0000800000000000
#define	EV6_ENV_LM78_PSU_AC_LOW_LIMIT			0x0000400000000000
#define	EV6_ENV_LM78_PSU_OVERTEMP			0x0000200000000000
#define	EV6_ENV_LM78_PSU_12V_OVERAMP			0x0000100000000000
#define	EV6_ENV_LM78_PSU_5V_OVERAMP			0x0000080000000000
#define	EV6_ENV_LM78_PSU_3_3V_OVERAMP			0x0000040000000000
#define	EV6_ENV_LM78_PSU_NUMBER_MASK			0x0000030000000000
#define	EV6_ENV_LM78_PSU_NUMBER_SHIFT			40
#define	EV6_ENV_LM78_FAN6_FAILURE			0x0000008000000000
#define	EV6_ENV_LM78_FAN3_FAILURE			0x0000004000000000
#define	EV6_ENV_LM78_ZONE2_OVERTEMP			0x0000001000000000
#define	EV6_ENV_LM78_CPU3_VIO_OOT			0x0000000800000000
#define	EV6_ENV_LM78_CPU3_VCORE_OOT			0x0000000400000000
#define	EV6_ENV_LM78_CPU2_VIO_OOT			0x0000000200000000
#define	EV6_ENV_LM78_CPU2_VCORE_OOT			0x0000000100000000
#define	EV6_ENV_LM78_FAN5_FAILURE			0x0000000000800000
#define	EV6_ENV_LM78_FAN4_FAILURE			0x0000000000400000
#define	EV6_ENV_LM78_ZONE1_OVERTEMP			0x0000000000100000
#define	EV6_ENV_LM78_CPU1_VIO_OOT			0x0000000000080000
#define	EV6_ENV_LM78_CPU1_VCORE_OOT			0x0000000000040000
#define	EV6_ENV_LM78_CPU0_VIO_OOT			0x0000000000020000
#define	EV6_ENV_LM78_CPU0_VCORE_OOT			0x0000000000010000
#define	EV6_ENV_LM78_PSU_MINUS12V_OOT			0x0000000000000800
#define	EV6_ENV_LM78_CTERM_OOT				0x0000000000000100
#define	EV6_ENV_LM78_FAN2_FAILURE			0x0000000000000080
#define	EV6_ENV_LM78_FAN1_FAILURE			0x0000000000000040
#define	EV6_ENV_LM78_CPU_OVERTEMP			0x0000000000000020
#define	EV6_ENV_LM78_ZONA0_OVERTEMP			0x0000000000000010
#define	EV6_ENV_LM78_VTERM_OOT				0x0000000000000008
#define	EV6_ENV_LM78_PSU_12V_OOT			0x0000000000000004
#define	EV6_ENV_LM78_PSU_5V_OOT				0x0000000000000002
#define	EV6_ENV_LM78_PSU_3_3V_OOT			0x0000000000000001

/* Doors */
#define	EV6_ENV_DOORS_PCI_CLOSED			0x80
#define	EV6_ENV_DOORS_FAN_CLOSED			0x40
#define	EV6_ENV_DOORS_CPU_CLOSED			0x20
#define	EV6_ENV_DOORS_PCI_OPEN				0x08
#define	EV6_ENV_DOORS_FAN_OPEN				0x04
#define	EV6_ENV_DOORS_CPU_OPEN				0x02

/* System Temperature Warning (sticky?) */
#define	EV6_ENV_STW_ZONE2				0x40
#define	EV6_ENV_STW_ZONE1				0x20
#define	EV6_ENV_STW_ZONE0				0x10
#define	EV6_ENV_STW_CPU3				0x08
#define	EV6_ENV_STW_CPU2				0x04
#define	EV6_ENV_STW_CPU1				0x02
#define	EV6_ENV_STW_CPU0				0x01

/* System Fan Control Fault */
#define	EV6_ENV_SFCF_FAN1234_LOW_SPEED			0x0800
#define	EV6_ENV_SFCF_FAN1234_HIGH_SPEED			0x0400
#define	EV6_ENV_SFCF_FAN56_LOW_SPEED			0x0200
#define	EV6_ENV_SFCF_FAN56_HIGH_SPEED			0x0100
#define	EV6_ENV_SFCF_FAN6_NONRESPONSIVE			0x0020
#define	EV6_ENV_SFCF_FAN5_NONRESPONSIVE			0x0010
#define	EV6_ENV_SFCF_FAN4_NONRESPONSIVE			0x0008
#define	EV6_ENV_SFCF_FAN3_NONRESPONSIVE			0x0004
#define	EV6_ENV_SFCF_FAN2_NONRESPONSIVE			0x0002
#define	EV6_ENV_SFCF_FAN1_NONRESPONSIVE			0x0001