294 * @cmd:
295 *
296 * The kernel calls a driver's attach() entry point to attach an instance of
297 * a device (for MegaRAID, it is instance of a controller) or to resume
298 * operation for an instance of a device that has been suspended or has been
299 * shut down by the power management framework
300 * The attach() entry point typically includes the following types of
301 * processing:
302 * - allocate a soft-state structure for the device instance (for MegaRAID,
303 * controller instance)
304 * - initialize per-instance mutexes
305 * - initialize condition variables
306 * - register the device's interrupts (for MegaRAID, controller's interrupts)
307 * - map the registers and memory of the device instance (for MegaRAID,
308 * controller instance)
309 * - create minor device nodes for the device instance (for MegaRAID,
310 * controller instance)
311 * - report that the device instance (for MegaRAID, controller instance) has
312 * attached
313 */
314 #if __SunOS_5_11
315 #define DDI_PM_RESUME DDI_PM_RESUME_OBSOLETE
316 #define DDI_PM_SUSPEND DDI_PM_SUSPEND_OBSOLETE
317 #endif // __SunOS_5_11
318 static int
319 mrsas_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
320 {
321 int instance_no;
322 int nregs;
323 int i = 0;
324 uint8_t irq;
325 uint16_t vendor_id;
326 uint16_t device_id;
327 uint16_t subsysvid;
328 uint16_t subsysid;
329 uint16_t command;
330 off_t reglength = 0;
331 int intr_types = 0;
332 char *data;
333
334 scsi_hba_tran_t *tran;
2630 pkt->pkt_cdbp[0]));
2631 }else {
2632 con_log(CL_ANN1, (CE_CONT, "NO-PKT"));
2633 }
2634
2635 if((detail==0xDD) && instance->tbolt) {
2636 con_log(CL_ANN1, (CE_CONT, "RAID_SCSI_IO_REQUEST\n"));
2637 con_log(CL_ANN1, (CE_CONT, "DevHandle=0x%X Function=0x%X IoFlags=0x%X SGLFlags=0x%X DataLength=0x%X\n",
2638 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->DevHandle),
2639 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->Function),
2640 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->IoFlags),
2641 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->SGLFlags),
2642 ddi_get32(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->DataLength) ));
2643
2644 for(i=0; i < 32; i++)
2645 con_log(CL_ANN1, (CE_CONT, "CDB[%d]=0x%x ",i,
2646 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->CDB.CDB32[i]) ));
2647
2648 con_log(CL_ANN1, (CE_CONT, "RAID-CONTEXT\n"));
2649 con_log(CL_ANN1, (CE_CONT, "status=0x%X extStatus=0x%X ldTargetId=0x%X timeoutValue=0x%X"
2650 "regLockFlags=0x%X RAIDFlags=0x%X regLockRowLBA=0x%lX regLockLength=0x%X spanArm=0x%X\n",
2651 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.status),
2652 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.extStatus),
2653 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.ldTargetId),
2654 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.timeoutValue),
2655 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockFlags),
2656 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.RAIDFlags),
2657 ddi_get64(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockRowLBA),
2658 ddi_get32(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockLength),
2659 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.spanArm) ));
2660
2661
2662 }
2663
2664 if (detail == 0xDD) {
2665 debug_level_g = saved_level;
2666 }
2667
2668 return;
2669 }
2670
|
294 * @cmd:
295 *
296 * The kernel calls a driver's attach() entry point to attach an instance of
297 * a device (for MegaRAID, it is instance of a controller) or to resume
298 * operation for an instance of a device that has been suspended or has been
299 * shut down by the power management framework
300 * The attach() entry point typically includes the following types of
301 * processing:
302 * - allocate a soft-state structure for the device instance (for MegaRAID,
303 * controller instance)
304 * - initialize per-instance mutexes
305 * - initialize condition variables
306 * - register the device's interrupts (for MegaRAID, controller's interrupts)
307 * - map the registers and memory of the device instance (for MegaRAID,
308 * controller instance)
309 * - create minor device nodes for the device instance (for MegaRAID,
310 * controller instance)
311 * - report that the device instance (for MegaRAID, controller instance) has
312 * attached
313 */
314 /* #if __SunOS_5_11 */
315 #if 0
316 #define DDI_PM_RESUME DDI_PM_RESUME_OBSOLETE
317 #define DDI_PM_SUSPEND DDI_PM_SUSPEND_OBSOLETE
318 #endif // __SunOS_5_11
319 static int
320 mrsas_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
321 {
322 int instance_no;
323 int nregs;
324 int i = 0;
325 uint8_t irq;
326 uint16_t vendor_id;
327 uint16_t device_id;
328 uint16_t subsysvid;
329 uint16_t subsysid;
330 uint16_t command;
331 off_t reglength = 0;
332 int intr_types = 0;
333 char *data;
334
335 scsi_hba_tran_t *tran;
2631 pkt->pkt_cdbp[0]));
2632 }else {
2633 con_log(CL_ANN1, (CE_CONT, "NO-PKT"));
2634 }
2635
2636 if((detail==0xDD) && instance->tbolt) {
2637 con_log(CL_ANN1, (CE_CONT, "RAID_SCSI_IO_REQUEST\n"));
2638 con_log(CL_ANN1, (CE_CONT, "DevHandle=0x%X Function=0x%X IoFlags=0x%X SGLFlags=0x%X DataLength=0x%X\n",
2639 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->DevHandle),
2640 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->Function),
2641 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->IoFlags),
2642 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->SGLFlags),
2643 ddi_get32(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->DataLength) ));
2644
2645 for(i=0; i < 32; i++)
2646 con_log(CL_ANN1, (CE_CONT, "CDB[%d]=0x%x ",i,
2647 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->CDB.CDB32[i]) ));
2648
2649 con_log(CL_ANN1, (CE_CONT, "RAID-CONTEXT\n"));
2650 con_log(CL_ANN1, (CE_CONT, "status=0x%X extStatus=0x%X ldTargetId=0x%X timeoutValue=0x%X"
2651 "regLockFlags=0x%X RAIDFlags=0x%X regLockRowLBA=0x%" PRIx64 " regLockLength=0x%X spanArm=0x%X\n",
2652 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.status),
2653 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.extStatus),
2654 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.ldTargetId),
2655 ddi_get16(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.timeoutValue),
2656 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockFlags),
2657 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.RAIDFlags),
2658 ddi_get64(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockRowLBA),
2659 ddi_get32(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.regLockLength),
2660 ddi_get8(instance->mpi2_frame_pool_dma_obj.acc_handle, &scsi_io->RaidContext.spanArm) ));
2661
2662
2663 }
2664
2665 if (detail == 0xDD) {
2666 debug_level_g = saved_level;
2667 }
2668
2669 return;
2670 }
2671
|