Print this page




 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