xref: /illumos-gate/usr/src/uts/common/sys/scsi/adapters/mfi/mfi_evt.h (revision 98f0a994ee13c4f450852a3d01f2e340abe69fb8)
1*98f0a994SHans Rosenfeld /*
2*98f0a994SHans Rosenfeld  * This file and its contents are supplied under the terms of the
3*98f0a994SHans Rosenfeld  * Common Development and Distribution License ("CDDL"), version 1.0.
4*98f0a994SHans Rosenfeld  * You may only use this file in accordance with the terms of version
5*98f0a994SHans Rosenfeld  * 1.0 of the CDDL.
6*98f0a994SHans Rosenfeld  *
7*98f0a994SHans Rosenfeld  * A full copy of the text of the CDDL should have accompanied this
8*98f0a994SHans Rosenfeld  * source.  A copy of the CDDL is also available via the Internet at
9*98f0a994SHans Rosenfeld  * http://www.illumos.org/license/CDDL.
10*98f0a994SHans Rosenfeld  */
11*98f0a994SHans Rosenfeld 
12*98f0a994SHans Rosenfeld /*
13*98f0a994SHans Rosenfeld  * Copyright 2024 Racktop Systems, Inc.
14*98f0a994SHans Rosenfeld  */
15*98f0a994SHans Rosenfeld #ifndef _MFI_EVT_H
16*98f0a994SHans Rosenfeld #define	_MFI_EVT_H
17*98f0a994SHans Rosenfeld 
18*98f0a994SHans Rosenfeld #include <sys/types.h>
19*98f0a994SHans Rosenfeld #include <sys/debug.h>
20*98f0a994SHans Rosenfeld 
21*98f0a994SHans Rosenfeld #include <sys/scsi/adapters/mfi/mfi.h>
22*98f0a994SHans Rosenfeld 
23*98f0a994SHans Rosenfeld #ifdef __cplusplus
24*98f0a994SHans Rosenfeld extern "C" {
25*98f0a994SHans Rosenfeld #endif
26*98f0a994SHans Rosenfeld 
27*98f0a994SHans Rosenfeld 
28*98f0a994SHans Rosenfeld typedef struct mfi_aen			mfi_aen_t;
29*98f0a994SHans Rosenfeld 
30*98f0a994SHans Rosenfeld typedef struct mfi_evt			mfi_evt_t;
31*98f0a994SHans Rosenfeld typedef struct mfi_evt_log_info		mfi_evt_log_info_t;
32*98f0a994SHans Rosenfeld typedef struct mfi_evt_detail		mfi_evt_detail_t;
33*98f0a994SHans Rosenfeld typedef struct mfi_evt_list		mfi_evt_list_t;
34*98f0a994SHans Rosenfeld 
35*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_cdb_sense	mfi_evtarg_cdb_sense_t;
36*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld		mfi_evtarg_ld_t;
37*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_count	mfi_evtarg_ld_count_t;
38*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_lba	mfi_evtarg_ld_lba_t;
39*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_owner	mfi_evtarg_ld_owner_t;
40*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_lba_pd_lba	mfi_evtarg_ld_lba_pd_lba_t;
41*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_progress	mfi_evtarg_ld_progress_t;
42*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ld_state	mfi_evtarg_ld_state_t;
43*98f0a994SHans Rosenfeld typedef	struct mfi_evtarg_ld_strip	mfi_evtarg_ld_strip_t;
44*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd		mfi_evtarg_pd_t;
45*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd_err	mfi_evtarg_pd_err_t;
46*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd_lba	mfi_evtarg_pd_lba_t;
47*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd_lba_ld	mfi_evtarg_pd_lba_ld_t;
48*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd_progress	mfi_evtarg_pd_progress_t;
49*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pd_state	mfi_evtarg_pd_state_t;
50*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_pci		mfi_evtarg_pci_t;
51*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_time		mfi_evtarg_time_t;
52*98f0a994SHans Rosenfeld typedef struct mfi_evtarg_ecc		mfi_evtarg_ecc_t;
53*98f0a994SHans Rosenfeld 
54*98f0a994SHans Rosenfeld 
55*98f0a994SHans Rosenfeld /*
56*98f0a994SHans Rosenfeld  * Asynchronous Event Notifications
57*98f0a994SHans Rosenfeld  */
58*98f0a994SHans Rosenfeld #define	MFI_EVT_CFG_CLEARED			0x0004
59*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PATROL_READ_COMPLETE	0x0023
60*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PATROL_READ_RESUMED	0x0026
61*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PATROL_READ_START		0x0027
62*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_BG_INIT_PROGRESS		0x0034
63*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_CC_COMPLETE			0x003a
64*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_CC_PROGRESS			0x0041
65*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_CC_STARTED			0x0042
66*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_INIT_ABORTED		0x0043
67*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_INIT_PROGRESS		0x0045
68*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_FAST_INIT_STARTED		0x0046
69*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_FULL_INIT_STARTED		0x0047
70*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_INIT_COMPLETE		0x0048
71*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_PROP_CHANGED		0x0049
72*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_STATE_CHANGE		0x0051
73*98f0a994SHans Rosenfeld #define	MFI_EVT_PD_INSERTED			0x005b
74*98f0a994SHans Rosenfeld #define	MFI_EVT_PD_PATROL_READ_PROGRESS	0x005e
75*98f0a994SHans Rosenfeld #define	MFI_EVT_PD_REMOVED			0x0070
76*98f0a994SHans Rosenfeld #define	MFI_EVT_PD_CHANGED			0x0072
77*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_CREATED			0x008a
78*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_DELETED			0x008b
79*98f0a994SHans Rosenfeld #define	MFI_EVT_FOREIGN_CFG_IMPORTED		0x00db
80*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_OPTIMAL			0x00f9
81*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_OFFLINE			0x00fc
82*98f0a994SHans Rosenfeld #define	MFI_EVT_PD_RESET			0x010c
83*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PATROL_READ_CANT_START	0x0124
84*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PROP_CHANGED		0x012f
85*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_BBT_CLEARED			0x014f
86*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_HOST_BUS_SCAN_REQD	0x0152
87*98f0a994SHans Rosenfeld #define	MFI_EVT_LD_AVAILABLE			0x0172
88*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PERF_COLLECTION		0x017e
89*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_BOOTDEV_SET		0x01ec
90*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_BOOTDEV_RESET		0x01f3
91*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PERSONALITY_CHANGE	0x0206
92*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_PERSONALITY_CHANGE_PEND	0x0222
93*98f0a994SHans Rosenfeld #define	MFI_EVT_CTRL_NR_OF_VALID_SNAPDUMP	0x024e
94*98f0a994SHans Rosenfeld 
95*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_DEBUG			(int8_t)-2
96*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_PROGRESS			(int8_t)-1
97*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_INFO			0
98*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_WARNING			1
99*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_CRITICAL			2
100*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_FATAL			3
101*98f0a994SHans Rosenfeld #define	MFI_EVT_CLASS_DEAD			4
102*98f0a994SHans Rosenfeld 
103*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_LD			0x0001
104*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_PD			0x0002
105*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_ENCL			0x0004
106*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_BBU			0x0008
107*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_SAS			0x0010
108*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_CTRL			0x0020
109*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_CONFIG			0x0040
110*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_CLUSTER			0x0080
111*98f0a994SHans Rosenfeld #define	MFI_EVT_LOCALE_ALL			0xffff
112*98f0a994SHans Rosenfeld 
113*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_NONE			0
114*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_CDB_SENSE			1
115*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD				2
116*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_COUNT			3
117*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_LBA			4
118*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_OWNER			5
119*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_LBA_PD_LBA		6
120*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_PROG			7
121*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_STATE			8
122*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_LD_STRIP			9
123*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD				10
124*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD_ERR			11
125*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD_LBA			12
126*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD_LBA_LD			13
127*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD_PROG			14
128*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PD_STATE			15
129*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_PCI			16
130*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_RATE			17
131*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_STR			18
132*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_TIME			19
133*98f0a994SHans Rosenfeld #define	MFI_EVT_ARGS_ECC			20
134*98f0a994SHans Rosenfeld 
135*98f0a994SHans Rosenfeld #pragma pack(1)
136*98f0a994SHans Rosenfeld 
137*98f0a994SHans Rosenfeld struct mfi_aen {
138*98f0a994SHans Rosenfeld 	uint16_t	aen_host_no;
139*98f0a994SHans Rosenfeld 	uint16_t	aen_cmd_status;
140*98f0a994SHans Rosenfeld 	uint32_t	aen_seqnum;
141*98f0a994SHans Rosenfeld 	uint32_t	aen_class_locale_word;
142*98f0a994SHans Rosenfeld };
143*98f0a994SHans Rosenfeld 
144*98f0a994SHans Rosenfeld struct mfi_evt {
145*98f0a994SHans Rosenfeld 	uint16_t	evt_locale;
146*98f0a994SHans Rosenfeld 	uint8_t		evt_rsvd;
147*98f0a994SHans Rosenfeld 	int8_t		evt_class;
148*98f0a994SHans Rosenfeld };
149*98f0a994SHans Rosenfeld 
150*98f0a994SHans Rosenfeld struct mfi_evt_log_info {
151*98f0a994SHans Rosenfeld 	uint32_t	eli_newest_seqnum;
152*98f0a994SHans Rosenfeld 	uint32_t	eli_oldest_seqnum;
153*98f0a994SHans Rosenfeld 	uint32_t	eli_clear_seqnum;
154*98f0a994SHans Rosenfeld 	uint32_t	eli_shutdown_seqnum;
155*98f0a994SHans Rosenfeld 	uint32_t	eli_boot_seqnum;
156*98f0a994SHans Rosenfeld };
157*98f0a994SHans Rosenfeld 
158*98f0a994SHans Rosenfeld struct mfi_evtarg_ld {
159*98f0a994SHans Rosenfeld 	uint16_t	el_tgtid;
160*98f0a994SHans Rosenfeld 	uint8_t		el_ld_id;
161*98f0a994SHans Rosenfeld 	uint8_t		el_rsvd;
162*98f0a994SHans Rosenfeld };
163*98f0a994SHans Rosenfeld 
164*98f0a994SHans Rosenfeld struct mfi_evtarg_pd {
165*98f0a994SHans Rosenfeld 	uint16_t	ep_dev_id;
166*98f0a994SHans Rosenfeld 	uint8_t		ep_enc_idx;
167*98f0a994SHans Rosenfeld 	uint8_t		ep_slot;
168*98f0a994SHans Rosenfeld };
169*98f0a994SHans Rosenfeld 
170*98f0a994SHans Rosenfeld struct mfi_evtarg_cdb_sense {
171*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	cs_pd;
172*98f0a994SHans Rosenfeld 	uint8_t		cs_cdb_len;
173*98f0a994SHans Rosenfeld 	uint8_t		cs_sense_len;
174*98f0a994SHans Rosenfeld 	uint8_t		cs_rsvd[2];
175*98f0a994SHans Rosenfeld 	uint8_t		cs_cdb[16];
176*98f0a994SHans Rosenfeld 	uint8_t		cs_sense[64];
177*98f0a994SHans Rosenfeld };
178*98f0a994SHans Rosenfeld 
179*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_count {
180*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	lc_ld;
181*98f0a994SHans Rosenfeld 	uint64_t	lc_count;
182*98f0a994SHans Rosenfeld };
183*98f0a994SHans Rosenfeld 
184*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_lba {
185*98f0a994SHans Rosenfeld 	uint64_t	ll_lba;
186*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	ll_ld;
187*98f0a994SHans Rosenfeld };
188*98f0a994SHans Rosenfeld 
189*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_owner {
190*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	lo_ld;
191*98f0a994SHans Rosenfeld 	uint32_t	lo_prev_owner;
192*98f0a994SHans Rosenfeld 	uint32_t	lo_new_owner;
193*98f0a994SHans Rosenfeld };
194*98f0a994SHans Rosenfeld 
195*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_lba_pd_lba {
196*98f0a994SHans Rosenfeld 	uint64_t	llpl_ld_lba;
197*98f0a994SHans Rosenfeld 	uint64_t	llpl_pd_lba;
198*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	llpl_ld;
199*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	llpl_pd;
200*98f0a994SHans Rosenfeld };
201*98f0a994SHans Rosenfeld 
202*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_progress {
203*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	lp_ld;
204*98f0a994SHans Rosenfeld 	mfi_progress_t	lp_progress;
205*98f0a994SHans Rosenfeld };
206*98f0a994SHans Rosenfeld 
207*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_state {
208*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	ls_ld;
209*98f0a994SHans Rosenfeld 	uint32_t	ls_prev_state;
210*98f0a994SHans Rosenfeld 	uint32_t	ls_new_state;
211*98f0a994SHans Rosenfeld };
212*98f0a994SHans Rosenfeld 
213*98f0a994SHans Rosenfeld struct mfi_evtarg_ld_strip {
214*98f0a994SHans Rosenfeld 	uint64_t	ls_strip;
215*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	ls_ld;
216*98f0a994SHans Rosenfeld };
217*98f0a994SHans Rosenfeld 
218*98f0a994SHans Rosenfeld struct mfi_evtarg_pd_err {
219*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	pe_pd;
220*98f0a994SHans Rosenfeld 	uint64_t	pe_err;
221*98f0a994SHans Rosenfeld };
222*98f0a994SHans Rosenfeld 
223*98f0a994SHans Rosenfeld struct mfi_evtarg_pd_lba {
224*98f0a994SHans Rosenfeld 	uint64_t	pl_lba;
225*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	pl_pd;
226*98f0a994SHans Rosenfeld };
227*98f0a994SHans Rosenfeld 
228*98f0a994SHans Rosenfeld struct mfi_evtarg_pd_lba_ld {
229*98f0a994SHans Rosenfeld 	uint64_t	pll_lba;
230*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	pll_pd;
231*98f0a994SHans Rosenfeld 	mfi_evtarg_ld_t	pll_ld;
232*98f0a994SHans Rosenfeld };
233*98f0a994SHans Rosenfeld 
234*98f0a994SHans Rosenfeld struct mfi_evtarg_pd_progress {
235*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	pp_pd;
236*98f0a994SHans Rosenfeld 	mfi_progress_t	pp_progress;
237*98f0a994SHans Rosenfeld };
238*98f0a994SHans Rosenfeld 
239*98f0a994SHans Rosenfeld struct mfi_evtarg_pd_state {
240*98f0a994SHans Rosenfeld 	mfi_evtarg_pd_t	ps_pd;
241*98f0a994SHans Rosenfeld 	uint32_t	ps_prev_state;
242*98f0a994SHans Rosenfeld 	uint32_t	ps_new_state;
243*98f0a994SHans Rosenfeld };
244*98f0a994SHans Rosenfeld 
245*98f0a994SHans Rosenfeld struct mfi_evtarg_pci {
246*98f0a994SHans Rosenfeld 	uint16_t	pci_vendor_id;
247*98f0a994SHans Rosenfeld 	uint16_t	pci_device_id;
248*98f0a994SHans Rosenfeld 	uint16_t	pci_sub_vendor_id;
249*98f0a994SHans Rosenfeld 	uint16_t	pci_sub_device_id;
250*98f0a994SHans Rosenfeld };
251*98f0a994SHans Rosenfeld 
252*98f0a994SHans Rosenfeld struct mfi_evtarg_time {
253*98f0a994SHans Rosenfeld 	uint32_t	t_rtc;
254*98f0a994SHans Rosenfeld 	uint16_t	t_elapsed;
255*98f0a994SHans Rosenfeld };
256*98f0a994SHans Rosenfeld 
257*98f0a994SHans Rosenfeld struct mfi_evtarg_ecc {
258*98f0a994SHans Rosenfeld 	uint32_t	ecc_ecar;
259*98f0a994SHans Rosenfeld 	uint32_t	ecc_elog;
260*98f0a994SHans Rosenfeld 	char		ecc_str[64];
261*98f0a994SHans Rosenfeld };
262*98f0a994SHans Rosenfeld 
263*98f0a994SHans Rosenfeld struct mfi_evt_detail {
264*98f0a994SHans Rosenfeld 	uint32_t	evt_seqnum;
265*98f0a994SHans Rosenfeld 	uint32_t	evt_timestamp;
266*98f0a994SHans Rosenfeld 	uint32_t	evt_code;
267*98f0a994SHans Rosenfeld 	mfi_evt_t	evt_cl;
268*98f0a994SHans Rosenfeld 	uint8_t		evt_argtype;
269*98f0a994SHans Rosenfeld 	uint8_t		evt_rsvd2[15];
270*98f0a994SHans Rosenfeld 	union {
271*98f0a994SHans Rosenfeld 		mfi_evtarg_cdb_sense_t		evt_cdb_sense;
272*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_t			evt_ld;
273*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_count_t		evt_ld_count;
274*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_lba_t		evt_ld_lba;
275*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_owner_t		evt_ld_owner;
276*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_lba_pd_lba_t	evt_ld_lba_pd_lba;
277*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_progress_t	evt_ld_progress;
278*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_state_t		evt_ld_state;
279*98f0a994SHans Rosenfeld 		mfi_evtarg_ld_strip_t		evt_ld_strip;
280*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_t			evt_pd;
281*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_err_t		evt_pd_err;
282*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_lba_t		evt_pd_lba;
283*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_lba_ld_t		evt_pd_lba_ld;
284*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_progress_t	evt_pd_progress;
285*98f0a994SHans Rosenfeld 		mfi_evtarg_pd_state_t		evt_pd_state;
286*98f0a994SHans Rosenfeld 		mfi_evtarg_pci_t		evt_pci;
287*98f0a994SHans Rosenfeld 		uint32_t			evt_rebuild_rate;
288*98f0a994SHans Rosenfeld 		mfi_evtarg_time_t		evt_time;
289*98f0a994SHans Rosenfeld 		mfi_evtarg_ecc_t		evt_ecc;
290*98f0a994SHans Rosenfeld 
291*98f0a994SHans Rosenfeld 		char				evt_str[96];
292*98f0a994SHans Rosenfeld 	};
293*98f0a994SHans Rosenfeld 	char		evt_descr[128];
294*98f0a994SHans Rosenfeld };
295*98f0a994SHans Rosenfeld CTASSERT(sizeof (mfi_evt_detail_t) == 256);
296*98f0a994SHans Rosenfeld 
297*98f0a994SHans Rosenfeld struct mfi_evt_list {
298*98f0a994SHans Rosenfeld 	uint32_t		el_count;
299*98f0a994SHans Rosenfeld 	uint32_t		el_rsvd;
300*98f0a994SHans Rosenfeld 	mfi_evt_detail_t	el_evt[0];
301*98f0a994SHans Rosenfeld };
302*98f0a994SHans Rosenfeld 
303*98f0a994SHans Rosenfeld #pragma pack(0)
304*98f0a994SHans Rosenfeld 
305*98f0a994SHans Rosenfeld 
306*98f0a994SHans Rosenfeld #ifdef __cplusplus
307*98f0a994SHans Rosenfeld }
308*98f0a994SHans Rosenfeld #endif
309*98f0a994SHans Rosenfeld 
310*98f0a994SHans Rosenfeld #endif	/* _MFI_EVT_H */
311