--- old/./mr_sas.h	Tue Nov  6 14:29:40 2012
+++ new/./mr_sas.h	Tue Nov  6 14:29:40 2012
@@ -12,8 +12,39 @@
  *		Manju R
  *		Rasheed
  *		Shakeel Bukhari
+ *
+ * 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,
+ *    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. Neither the name of the author nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
+ * COPYRIGHT OWNER 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.
  */
 
+/*
+ * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
+ */
+
 #ifndef	_MR_SAS_H_
 #define	_MR_SAS_H_
 
@@ -28,7 +59,7 @@
 /*
  * MegaRAID SAS2.0 Driver meta data
  */
-#define	MRSAS_VERSION				"6.503.00.00JOYENT"
+#define	MRSAS_VERSION				"6.503.00.00ILLUMOS"
 #define	MRSAS_RELDATE				"July 30, 2012"
 
 #define	MRSAS_TRUE				1
@@ -37,23 +68,21 @@
 #define	ADAPTER_RESET_NOT_REQUIRED		0
 #define	ADAPTER_RESET_REQUIRED			1
 
-#define PDSUPPORT	1
+#define	PDSUPPORT	1
 
-#define	SWAP_BYTES(w)	((((w)>>8)&0xFF) | (((w)&0xFF)<<8))
-#define	BIG_ENDIAN(d)	(SWAP_BYTES((d) >> 16) | (SWAP_BYTES(d) << 16))
 /*
  * MegaRAID SAS2.0 device id conversion definitions.
  */
 #define	INST2LSIRDCTL(x)		((x) << INST_MINOR_SHIFT)
-#define MRSAS_GET_BOUNDARY_ALIGNED_LEN(len, new_len, boundary_len)  { \
-        int rem; \
-        rem = (len / boundary_len); \
-        if ((rem * boundary_len) != len) { \
-                new_len = len + ((rem + 1) * boundary_len - len); \
-         } else { \
-                new_len = len; \
-        } \
-} \
+#define	MRSAS_GET_BOUNDARY_ALIGNED_LEN(len, new_len, boundary_len)  { \
+	int rem; \
+	rem = (len / boundary_len); \
+	if ((rem * boundary_len) != len) { \
+		new_len = len + ((rem + 1) * boundary_len - len); \
+	} else { \
+		new_len = len; \
+	} \
+}
 
 
 /*
@@ -83,7 +112,7 @@
 #define	UNCONFIGURED_GOOD			0x0
 #define	PD_SYSTEM				0x40
 #define	MR_EVT_PD_STATE_CHANGE			0x0072
-#define MR_EVT_PD_REMOVED_EXT		0x00f8
+#define	MR_EVT_PD_REMOVED_EXT		0x00f8
 #define	MR_EVT_PD_INSERTED_EXT		0x00f7
 #define	MR_DCMD_PD_GET_INFO			0x02020000
 #define	MRSAS_TBOLT_PD_LUN		1
@@ -93,11 +122,11 @@
 #endif
 
 /* Raid Context Flags */
-#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT        0x4
-#define MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_MASK 0x30
-typedef enum    MR_RAID_FLAGS_IO_SUB_TYPE {
-        MR_RAID_FLAGS_IO_SUB_TYPE_NONE = 0,
-        MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD = 1
+#define	MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_SHIFT 0x4
+#define	MR_RAID_CTX_RAID_FLAGS_IO_SUB_TYPE_MASK 0x30
+typedef enum MR_RAID_FLAGS_IO_SUB_TYPE {
+	MR_RAID_FLAGS_IO_SUB_TYPE_NONE = 0,
+	MR_RAID_FLAGS_IO_SUB_TYPE_SYSTEM_PD = 1
 } MR_RAID_FLAGS_IO_SUB_TYPE;
 
 /* Dynamic Enumeration Flags */
@@ -510,31 +539,33 @@
 	int		baseaddress;
 	char		iocnode[16];
 
-	/*Driver resources unroll flags.
-	  The flag is set for resources that are needed to be free'd at detach() time */
-
-	struct _unroll {                             
-		uint8_t softs;     	// The software state was allocated.
-		uint8_t regs;           // Controller registers mapped.
-		uint8_t intr;           // Interrupt handler added.
-		uint8_t reqs;           // Request structs allocated.
-		uint8_t mutexs;         // Mutex's allocated.
-		uint8_t taskq;          // Task q's created.
-		uint8_t tran;           // Tran struct allocated
-		uint8_t tranSetup;      // Tran attached to the ddi.
-		uint8_t devctl;         // Device nodes for cfgadm created.
-		uint8_t scsictl;        // Device nodes for cfgadm created.
-		uint8_t ioctl;          // Device nodes for ioctl's created.
-		uint8_t timer;          // Timer started.
-		uint8_t aenPend;        // AEN cmd pending f/w.
-		uint8_t mapUpdate_pend; // LD MAP update cmd pending f/w.
-		uint8_t soft_isr;
-		uint8_t ldlist_buff;
-		uint8_t pdlist_buff;
-		uint8_t syncCmd;
-		uint8_t verBuff;
-		uint8_t alloc_space_mfi;
-		uint8_t alloc_space_mpi2;
+	int		fm_capabilities;
+	/*
+	 * Driver resources unroll flags.  The flag is set for resources that
+	 * are needed to be free'd at detach() time.
+	 */
+	struct _unroll {
+		uint8_t softs;		/* The software state was allocated. */
+		uint8_t regs;		/* Controller registers mapped. */
+		uint8_t intr;		/* Interrupt handler added. */
+		uint8_t reqs;		/* Request structs allocated. */
+		uint8_t mutexs;		/* Mutex's allocated. */
+		uint8_t taskq;		/* Task q's created. */
+		uint8_t tran;		/* Tran struct allocated */
+		uint8_t tranSetup;	/* Tran attached to the ddi. */
+		uint8_t devctl;		/* Device nodes for cfgadm created. */
+		uint8_t scsictl;	/* Device nodes for cfgadm created. */
+		uint8_t ioctl;		/* Device nodes for ioctl's created. */
+		uint8_t timer;		/* Timer started. */
+		uint8_t aenPend;	/* AEN cmd pending f/w. */
+		uint8_t mapUpdate_pend; /* LD MAP update cmd pending f/w. */
+		uint8_t soft_isr;	/* Soft interrupt handler allocated. */
+		uint8_t ldlist_buff;	/* Logical disk list allocated. */
+		uint8_t pdlist_buff;	/* Physical disk list allocated. */
+		uint8_t syncCmd;	/* Sync map command allocated. */
+		uint8_t verBuff;	/* 2108 MFI buffer allocated. */
+		uint8_t alloc_space_mfi;  /* Allocated space for 2108 MFI. */
+		uint8_t alloc_space_mpi2; /* Allocated space for 2208 MPI2. */
 	} unroll;
 
 
@@ -543,8 +574,8 @@
 
 
 	/* MSI interrupts specific */
-	ddi_intr_handle_t *intr_htable;       //Interrupt handle array
-	size_t		intr_htable_size;     //Interrupt handle array size
+	ddi_intr_handle_t *intr_htable;		/* Interrupt handle array */
+	size_t		intr_htable_size;	/* Int. handle array size */
 	int		intr_type;
 	int		intr_cnt;
 	uint_t		intr_pri;
@@ -565,17 +596,22 @@
 
 	uint16_t	tbolt;
 	uint16_t	reply_read_index;
-	uint16_t	reply_size; 		// Single Reply structure size
-	uint16_t	raid_io_msg_size; 	// Single message size
+	uint16_t	reply_size; 		/* Single Reply struct size */
+	uint16_t	raid_io_msg_size; 	/* Single message size */
 	uint32_t	io_request_frames_phy;
 	uint8_t 	*io_request_frames;
-	MRSAS_REQUEST_DESCRIPTOR_UNION	*request_message_pool;   // Virtual address of request desc frame pool
-	uint32_t	request_message_pool_phy;		 // Physical address of request desc frame pool
-	MPI2_REPLY_DESCRIPTORS_UNION	*reply_frame_pool;	 // Virtual address of reply Frame
-	uint32_t	reply_frame_pool_phy;			 // Physical address of reply Frame
-	uint8_t		*reply_pool_limit;			 // Last reply frame address
-	uint32_t	reply_pool_limit_phy;			 // Physical address of Last reply frame
-	uint32_t	reply_q_depth;				 // Reply Queue Depth
+	/* Virtual address of request desc frame pool */
+	MRSAS_REQUEST_DESCRIPTOR_UNION	*request_message_pool;
+	/* Physical address of request desc frame pool */
+	uint32_t	request_message_pool_phy;
+	/* Virtual address of reply Frame */
+	MPI2_REPLY_DESCRIPTORS_UNION	*reply_frame_pool;
+	/* Physical address of reply Frame */
+	uint32_t	reply_frame_pool_phy;
+	uint8_t		*reply_pool_limit;	/* Last reply frame address */
+	/* Physical address of Last reply frame */
+	uint32_t	reply_pool_limit_phy;
+	uint32_t	reply_q_depth;		/* Reply Queue Depth */
 	uint8_t		max_sge_in_main_msg;
 	uint8_t		max_sge_in_chain;
 	uint8_t    	chain_offset_io_req;
@@ -588,7 +624,7 @@
 	struct mrsas_cmd *map_update_cmd;
 	uint32_t	SyncRequired;
 	kmutex_t	ocr_flags_mtx;
-	dma_obj_t        drv_ver_dma_obj;
+	dma_obj_t	drv_ver_dma_obj;
 } mrsas_t;
 
 
@@ -606,7 +642,7 @@
 	void (*disable_intr)(struct mrsas_instance *);
 	int (*intr_ack)(struct mrsas_instance *);
 	int (*init_adapter)(struct mrsas_instance *);
-//	int (*reset_adapter)(struct mrsas_instance *);
+/*	int (*reset_adapter)(struct mrsas_instance *); */
 };
 
 /*
@@ -627,13 +663,13 @@
  */
 #define	CL_NONE		0	/* No debug information */
 #define	CL_ANN		1	/* print unconditionally, announcements */
-#define	CL_ANN1		2	/* No o/p  */
+#define	CL_ANN1		2	/* No-op  */
 #define	CL_DLEVEL1	3	/* debug level 1, informative */
 #define	CL_DLEVEL2	4	/* debug level 2, verbose */
 #define	CL_DLEVEL3	5	/* debug level 3, very verbose */
 
 #ifdef __SUNPRO_C
-#define	__func__	__FUNCTION__	//""
+#define	__func__ ""
 #endif
 
 #define	con_log(level, fmt) { if (debug_level_g >= level) cmn_err fmt; }
@@ -1917,122 +1953,22 @@
 #define	DDI_VENDOR_LSI		"LSI"
 #endif /* DDI_VENDOR_LSI */
 
-static int	mrsas_getinfo(dev_info_t *, ddi_info_cmd_t,  void *, void **);
-static int	mrsas_attach(dev_info_t *, ddi_attach_cmd_t);
-static int	mrsas_reset(dev_info_t *, ddi_reset_cmd_t);
-int	mrsas_quiesce(dev_info_t *);
-static int	mrsas_detach(dev_info_t *, ddi_detach_cmd_t);
-static int	mrsas_open(dev_t *, int, int, cred_t *);
-static int	mrsas_close(dev_t, int, int, cred_t *);
-static int	mrsas_ioctl(dev_t, int, intptr_t, int, cred_t *, int *);
+int mrsas_config_scsi_device(struct mrsas_instance *,
+    struct scsi_device *, dev_info_t **);
 
-static int	mrsas_tran_tgt_init(dev_info_t *, dev_info_t *,
-		    scsi_hba_tran_t *, struct scsi_device *);
-static struct scsi_pkt *mrsas_tran_init_pkt(struct scsi_address *, register
-		    struct scsi_pkt *, struct buf *, int, int, int, int,
-		    int (*)(), caddr_t);
-static int	mrsas_tran_start(struct scsi_address *,
-		    register struct scsi_pkt *);
-static int	mrsas_tran_abort(struct scsi_address *, struct scsi_pkt *);
-static int	mrsas_tran_reset(struct scsi_address *, int);
-static int	mrsas_tran_bus_reset(dev_info_t *, int);
-static int	mrsas_tran_getcap(struct scsi_address *, char *, int);
-static int	mrsas_tran_setcap(struct scsi_address *, char *, int, int);
-static void	mrsas_tran_destroy_pkt(struct scsi_address *,
-		    struct scsi_pkt *);
-static void	mrsas_tran_dmafree(struct scsi_address *, struct scsi_pkt *);
-static void	mrsas_tran_sync_pkt(struct scsi_address *, struct scsi_pkt *);
-static int	mrsas_tran_quiesce(dev_info_t *dip);
-static int	mrsas_tran_unquiesce(dev_info_t *dip);
-static uint_t	mrsas_isr();
-static uint_t	mrsas_softintr();
-
-static struct mrsas_cmd *get_mfi_pkt(struct mrsas_instance *);
-static void	return_mfi_pkt(struct mrsas_instance *,
-		    struct mrsas_cmd *);
-
-static void	free_space_for_mfi(struct mrsas_instance *);
-static int	mrsas_tbolt_alloc_additional_dma_buffer
-(struct mrsas_instance *);
-int 		mrsas_tbolt_sync_map_info(struct mrsas_instance *instance);
-static int	alloc_additional_dma_buffer(struct mrsas_instance *);
-static uint32_t	read_fw_status_reg_ppc(struct mrsas_instance *);
-static void	issue_cmd_ppc(struct mrsas_cmd *, struct mrsas_instance *);
-static int	issue_cmd_in_poll_mode_ppc(struct mrsas_instance *,
-		    struct mrsas_cmd *);
-static int	issue_cmd_in_sync_mode_ppc(struct mrsas_instance *,
-		    struct mrsas_cmd *);
-static void	enable_intr_ppc(struct mrsas_instance *);
-static void	disable_intr_ppc(struct mrsas_instance *);
-static int	intr_ack_ppc(struct mrsas_instance *);
-int	mfi_state_transition_to_ready(struct mrsas_instance *);
-static void	flush_cache(struct mrsas_instance *instance);
-void	display_scsi_inquiry(caddr_t);
-static int	start_mfi_aen(struct mrsas_instance *instance);
-static int	handle_drv_ioctl(struct mrsas_instance *instance,
-		    struct mrsas_ioctl *ioctl, int mode);
-static int	handle_mfi_ioctl(struct mrsas_instance *instance,
-		    struct mrsas_ioctl *ioctl, int mode);
-static int	handle_mfi_aen(struct mrsas_instance *instance,
-		    struct mrsas_aen *aen);
-void	fill_up_drv_ver(struct mrsas_drv_ver *dv);
-static struct mrsas_cmd *build_cmd(struct mrsas_instance *instance,
-		    struct scsi_address *ap, struct scsi_pkt *pkt,
-		    uchar_t *cmd_done);
-static struct mrsas_cmd *mrsas_tbolt_build_cmd(struct mrsas_instance *instance,
-		    struct scsi_address *ap, struct scsi_pkt *pkt,
-		    uchar_t *cmd_done);
-static int	wait_for_outstanding(struct mrsas_instance *instance);
-static int	register_mfi_aen(struct mrsas_instance *instance,
-		    uint32_t seq_num, uint32_t class_locale_word);
-static int	issue_mfi_pthru(struct mrsas_instance *instance, struct
-		    mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
-static int	issue_mfi_dcmd(struct mrsas_instance *instance, struct
-		    mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
-static int	issue_mfi_smp(struct mrsas_instance *instance, struct
-		    mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
-static int	issue_mfi_stp(struct mrsas_instance *instance, struct
-		    mrsas_ioctl *ioctl, struct mrsas_cmd *cmd, int mode);
-static int	abort_aen_cmd(struct mrsas_instance *instance,
-		    struct mrsas_cmd *cmd_to_abort);
-
-
-static void	mrsas_rem_intrs(struct mrsas_instance *instance);
-static int	mrsas_add_intrs(struct mrsas_instance *instance, int intr_type);
-
-static void	mrsas_tran_tgt_free(dev_info_t *, dev_info_t *,
-		    scsi_hba_tran_t *, struct scsi_device *);
-static int	mrsas_tran_bus_config(dev_info_t *, uint_t,
-		    ddi_bus_config_op_t, void *, dev_info_t **);
-static int	mrsas_parse_devname(char *, int *, int *);
-static int	mrsas_config_all_devices(struct mrsas_instance *);
-int 	mrsas_config_scsi_device(struct mrsas_instance *,
-		    struct scsi_device *, dev_info_t **);
-static int 	mrsas_config_ld(struct mrsas_instance *, uint16_t,
-			uint8_t, dev_info_t **);
-
 #ifdef PDSUPPORT
-int 	mrsas_tbolt_config_pd(struct mrsas_instance *, uint16_t,
-			uint8_t, dev_info_t **);
-static void	mrsas_tbolt_get_pd_info(struct mrsas_instance *,
-			struct mrsas_tbolt_pd_info *, int);
+int mrsas_tbolt_config_pd(struct mrsas_instance *, uint16_t,
+    uint8_t, dev_info_t **);
 #endif
 
-dev_info_t *mrsas_find_child(struct mrsas_instance *, uint16_t,
-			uint8_t);
-static int	mrsas_name_node(dev_info_t *, char *, int);
-static void	mrsas_issue_evt_taskq(struct mrsas_eventinfo *);
-int	mrsas_service_evt(struct mrsas_instance *, int, int, int,
-			uint64_t);
-static void 	free_additional_dma_buffer(struct mrsas_instance *);
-
-struct mrsas_cmd *get_raid_msg_pkt(struct mrsas_instance *);
+dev_info_t *mrsas_find_child(struct mrsas_instance *, uint16_t, uint8_t);
+int mrsas_service_evt(struct mrsas_instance *, int, int, int, uint64_t);
 void return_raid_msg_pkt(struct mrsas_instance *, struct mrsas_cmd *);
 struct mrsas_cmd *get_raid_msg_mfi_pkt(struct mrsas_instance *);
 void return_raid_msg_mfi_pkt(struct mrsas_instance *, struct mrsas_cmd *);
 
 int	alloc_space_for_mpi2(struct mrsas_instance *);
-int	alloc_additional_dma_buffer(struct mrsas_instance *);
+void	fill_up_drv_ver(struct mrsas_drv_ver *dv);
 
 int	mrsas_issue_init_mpi2(struct mrsas_instance *);
 struct scsi_pkt *mrsas_tbolt_tran_init_pkt(struct scsi_address *, register
@@ -2060,37 +1996,18 @@
 			struct scsi_pkt *, struct buf *);
 int	mrsas_alloc_dma_obj(struct mrsas_instance *, dma_obj_t *,
 		    uchar_t);
-int 	mrsas_tbolt_ioc_init(struct mrsas_instance *, dma_obj_t *,
-	ddi_acc_handle_t);
-int	mrsas_tbolt_prepare_pkt(struct scsa_cmd *);
 void 	mr_sas_tbolt_build_mfi_cmd(struct mrsas_instance *, struct mrsas_cmd *);
 int 	mrsas_dma_alloc_dmd(struct mrsas_instance *, dma_obj_t *);
-int	mr_sas_tbolt_build_sgl(struct mrsas_instance *,
-	struct scsa_cmd *,
-	struct mrsas_cmd *,
-	Mpi2RaidSCSIIORequest_t *,
-	uint32_t *);
 void 	tbolt_complete_cmd_in_sync_mode(struct mrsas_instance *,
 	struct mrsas_cmd *);
 int 	alloc_req_rep_desc(struct mrsas_instance *);
-static void 	complete_cmd_in_sync_mode(struct mrsas_instance *,
-		struct mrsas_cmd *);
-static void 	io_timeout_checker(void *instance);
-static int	mrsas_kill_adapter(struct mrsas_instance *);
 int		mrsas_mode_sense_build(struct scsi_pkt *);
 void		push_pending_mfi_pkt(struct mrsas_instance *,
 			struct mrsas_cmd *);
-static int 	mrsas_issue_init_mfi(struct mrsas_instance *);
-int		mrsas_issue_pending_cmds(struct mrsas_instance *);
+int	mrsas_issue_pending_cmds(struct mrsas_instance *);
 int 	mrsas_print_pending_cmds(struct mrsas_instance *);
 int  	mrsas_complete_pending_cmds(struct mrsas_instance *);
-static int	mrsas_reset_ppc(struct mrsas_instance *);
-static uint32_t mrsas_initiate_ocr_if_fw_is_faulty(struct mrsas_instance *);
 
-MRSAS_REQUEST_DESCRIPTOR_UNION *\
-	mr_sas_get_request_descriptor(struct mrsas_instance *,
-	uint16_t, struct mrsas_cmd *);
-
 int	create_mfi_frame_pool(struct mrsas_instance *);
 void	destroy_mfi_frame_pool(struct mrsas_instance *);
 int 	create_mfi_mpi_frame_pool(struct mrsas_instance *);
@@ -2103,34 +2020,37 @@
 void 	free_space_for_mpi2(struct mrsas_instance *);
 void 	mrsas_dump_reply_desc(struct mrsas_instance *);
 void 	tbolt_complete_cmd(struct mrsas_instance *, struct mrsas_cmd *);
-void 	io_timeout_checker(void *);
 void	display_scsi_inquiry(caddr_t);
 void	service_mfi_aen(struct mrsas_instance *, struct mrsas_cmd *);
 int	mrsas_mode_sense_build(struct scsi_pkt *);
 int 	mrsas_tbolt_get_ld_map_info(struct mrsas_instance *);
-void 	mrsas_tbolt_set_pd_lba(U8 cdb[], uint8_t *cdb_len, U64 start_blk, U32 num_blocks, U8 DifCapable);
-U8 	mrsas_tbolt_check_map_info(struct mrsas_instance *);
 struct mrsas_cmd *mrsas_tbolt_build_poll_cmd(struct mrsas_instance *,
 	struct scsi_address *, struct scsi_pkt *, uchar_t *);
 int	mrsas_tbolt_reset_ppc(struct mrsas_instance *instance);
-int	mrsas_tbolt_kill_adapter(struct mrsas_instance *instance);
+void	mrsas_tbolt_kill_adapter(struct mrsas_instance *instance);
 int 	abort_syncmap_cmd(struct mrsas_instance *, struct mrsas_cmd *);
-void 	mrsas_tbolt_prepare_cdb(struct mrsas_instance *instance, U8 cdb[],struct IO_REQUEST_INFO *,
-	Mpi2RaidSCSIIORequest_t *, U32);
+void	mrsas_tbolt_prepare_cdb(struct mrsas_instance *instance, U8 cdb[],
+    struct IO_REQUEST_INFO *, Mpi2RaidSCSIIORequest_t *, U32);
 
 
-static int
-mrsas_undo_resources (dev_info_t *dip, struct mrsas_instance *instance);
+int mrsas_init_adapter_ppc(struct mrsas_instance *instance);
+int mrsas_init_adapter_tbolt(struct mrsas_instance *instance);
+int mrsas_init_adapter(struct mrsas_instance *instance);
 
-int mrsas_init_adapter_ppc (struct mrsas_instance *instance);
-int mrsas_init_adapter_tbolt (struct mrsas_instance *instance);
-int mrsas_init_adapter (struct mrsas_instance *instance);
-
 int mrsas_alloc_cmd_pool(struct mrsas_instance *instance);
 void mrsas_free_cmd_pool(struct mrsas_instance *instance);
 
-void mrsas_print_cmd_details(struct mrsas_instance *, struct mrsas_cmd *, int );
+void mrsas_print_cmd_details(struct mrsas_instance *, struct mrsas_cmd *, int);
+struct mrsas_cmd *get_raid_msg_pkt(struct mrsas_instance *);
 
+int mfi_state_transition_to_ready(struct mrsas_instance *);
+
+
+/* FMA functions. */
+int mrsas_common_check(struct mrsas_instance *, struct  mrsas_cmd *);
+void mrsas_fm_ereport(struct mrsas_instance *, char *);
+
+
 #ifdef	__cplusplus
 }
 #endif
