Prakash, Sathya wrote:
> This patch contains changes in mptscsih.c to support logging in MPT fusion
> drivers.
> 
> The changes are majorly in debug printks, the existing debugprintk are
> modified accroding to new debug macros defined in the file mptbdebug.h
> 
> A new sysfs attribute is added to retrieve and modify the debug level.
> 
> signed-off-by: Sathya Prakash <[EMAIL PROTECTED]>
> ---
> 
> 
> diff -Naurp b/drivers/message/fusion/mptscsih.c 
> a/drivers/message/fusion/mptscsih.c
> --- b/drivers/message/fusion/mptscsih.c       2007-07-23 14:24:35.000000000 
> +0530
> +++ a/drivers/message/fusion/mptscsih.c       2007-07-23 18:06:42.000000000 
> +0530
> @@ -191,7 +191,7 @@ mptscsih_getFreeChainBuffer(MPT_ADAPTER 
>       int rc;
>       int chain_idx;
>  
> -     dsgprintk((MYIOC_s_INFO_FMT "getFreeChainBuffer called\n",
> +     dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT "getFreeChainBuffer called\n",
>                       ioc->name));
>       spin_lock_irqsave(&ioc->FreeQlock, flags);
>       if (!list_empty(&ioc->FreeChainQ)) {
> @@ -203,12 +203,12 @@ mptscsih_getFreeChainBuffer(MPT_ADAPTER 
>               offset = (u8 *)chainBuf - (u8 *)ioc->ChainBuffer;
>               chain_idx = offset / ioc->req_sz;
>               rc = SUCCESS;
> -             dsgprintk((MYIOC_s_ERR_FMT "getFreeChainBuffer chainBuf=%p 
> ChainBuffer=%p offset=%d chain_idx=%d\n",
> +             dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT "getFreeChainBuffer 
> chainBuf=%p ChainBuffer=%p offset=%d chain_idx=%d\n",
>                       ioc->name, chainBuf, ioc->ChainBuffer, offset, 
> chain_idx));
>       } else {
>               rc = FAILED;
>               chain_idx = MPT_HOST_NO_CHAIN;
> -             dfailprintk((MYIOC_s_INFO_FMT "getFreeChainBuffer failed\n",
> +             dfailprintk(ioc, printk(MYIOC_s_DEBUG_FMT "getFreeChainBuffer 
> failed\n",
>                       ioc->name));
>       }
>       spin_unlock_irqrestore(&ioc->FreeQlock, flags);
> @@ -337,7 +337,7 @@ nextSGEset:
>                        */
>                       pReq->ChainOffset = 0;
>                       RequestNB = (((sgeOffset - 1) >> ioc->NBShiftFactor)  + 
> 1) & 0x03;
> -                     dsgprintk((MYIOC_s_INFO_FMT
> +                     dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT
>                           "Single Buffer RequestNB=%x, sgeOffset=%d\n", 
> ioc->name, RequestNB, sgeOffset));
>                       ioc->RequestNB[req_idx] = RequestNB;
>               }
> @@ -353,7 +353,7 @@ nextSGEset:
>                * Loop until done.
>                */
>  
> -             dsgprintk((MYIOC_s_INFO_FMT "SG: Chain Required! sg done %d\n",
> +             dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT "SG: Chain Required! sg 
> done %d\n",
>                               ioc->name, sg_done));
>  
>               /* Set LAST_ELEMENT flag for last non-chain element
> @@ -386,7 +386,7 @@ nextSGEset:
>                        */
>                       pReq->ChainOffset = (u8) (sgeOffset >> 2);
>                       RequestNB = (((sgeOffset - 1) >> ioc->NBShiftFactor)  + 
> 1) & 0x03;
> -                     dsgprintk((MYIOC_s_ERR_FMT "Chain Buffer Needed, 
> RequestNB=%x sgeOffset=%d\n", ioc->name, RequestNB, sgeOffset));
> +                     dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Chain Buffer 
> Needed, RequestNB=%x sgeOffset=%d\n", ioc->name, RequestNB, sgeOffset));
>                       ioc->RequestNB[req_idx] = RequestNB;
>               }
>  
> @@ -397,7 +397,7 @@ nextSGEset:
>                * in current buffer. Get a chain buffer.
>                */
>               if ((mptscsih_getFreeChainBuffer(ioc, &newIndex)) == FAILED) {
> -                     dfailprintk((MYIOC_s_INFO_FMT
> +                     dfailprintk(ioc, printk(MYIOC_s_DEBUG_FMT
>                           "getFreeChainBuffer FAILED SCSI cmd=%02x (%p)\n",
>                           ioc->name, pReq->CDB[0], SCpnt));
>                       return FAILED;
> @@ -419,7 +419,7 @@ nextSGEset:
>                *   out the Address and Flags fields.
>                */
>               chainSge = (char *) psge;
> -             dsgprintk((KERN_INFO "  Current buff @ %p (index 0x%x)",
> +             dsgprintk(ioc, printk(KERN_DEBUG "  Current buff @ %p (index 
> 0x%x)",
>                               psge, req_idx));
>  
>               /* Start the SGE for the next buffer
> @@ -428,7 +428,7 @@ nextSGEset:
>               sgeOffset = 0;
>               sg_done = 0;
>  
> -             dsgprintk((KERN_INFO "  Chain buff @ %p (index 0x%x)\n",
> +             dsgprintk(ioc, printk(KERN_DEBUG "  Chain buff @ %p (index 
> 0x%x)\n",
>                               psge, chain_idx));
>  
>               /* Start the SGE for the next buffer
> @@ -456,7 +456,7 @@ mptscsih_issue_sep_command(MPT_ADAPTER *
>               return;
>  
>       if ((mf = mpt_get_msg_frame(ioc->InternalCtx, ioc)) == NULL) {
> -             dfailprintk((MYIOC_s_WARN_FMT "%s: no msg frames!!\n",
> +             dfailprintk(ioc, printk(MYIOC_s_WARN_FMT "%s: no msg 
> frames!!\n",
>                   ioc->name,__FUNCTION__));
>               return;
>       }
> @@ -467,93 +467,158 @@ mptscsih_issue_sep_command(MPT_ADAPTER *
>       SEPMsg->TargetID = vtarget->id;
>       SEPMsg->Action = MPI_SEP_REQ_ACTION_WRITE_STATUS;
>       SEPMsg->SlotStatus = SlotStatus;
> -     devtverboseprintk((MYIOC_s_WARN_FMT
> +     devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT
>           "Sending SEP cmd=%x channel=%d id=%d\n",
>           ioc->name, SlotStatus, SEPMsg->Bus, SEPMsg->TargetID));
>       mpt_put_msg_frame(ioc->DoneCtx, ioc, mf);
>  }
>  
> -#ifdef MPT_DEBUG_REPLY
> +#ifdef CONFIG_FUSION_LOGGING
>  /**
> - *   mptscsih_iocstatus_info_scsiio - IOCSTATUS information for SCSIIO
> + *   mptscsih_info_scsiio - debug print info on reply frame
>   *   @ioc: Pointer to MPT_ADAPTER structure
> - *   @ioc_status: U32 IOCStatus word from IOC
> - *   @scsi_status: U8 sam status from target
> - *   @scsi_state: U8 scsi state
>   *   @sc: original scsi cmnd pointer
> - *   @mf: Pointer to MPT request frame
> + *   @pScsiReply: Pointer to MPT reply frame
> + *
> + *   MPT_DEBUG_REPLY needs to be enabled to obtain this info
>   *
>   *   Refer to lsi/mpi.h.
>   **/
>  static void
> -mptscsih_iocstatus_info_scsiio(MPT_ADAPTER *ioc, u32 ioc_status,
> -    u8 scsi_status, u8 scsi_state, struct scsi_cmnd *sc)
> +mptscsih_info_scsiio(MPT_ADAPTER *ioc, struct scsi_cmnd *sc, SCSIIOReply_t * 
> pScsiReply)
>  {
> -     char extend_desc[EVENT_DESCR_STR_SZ];
> -     char *desc = NULL;
> +     char    *desc = NULL;
> +     char    *desc1 = NULL;
> +     u16     ioc_status;
> +     u8      skey, asc, ascq;
> +
> +     ioc_status = le16_to_cpu(pScsiReply->IOCStatus) & MPI_IOCSTATUS_MASK;
>  
>       switch (ioc_status) {
>  
> -     case MPI_IOCSTATUS_SCSI_INVALID_BUS: /* 0x0041 */
> -             desc = "SCSI Invalid Bus";
> +     case MPI_IOCSTATUS_SUCCESS:
> +             desc = "success";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_INVALID_TARGETID: /* 0x0042 */
> -             desc = "SCSI Invalid TargetID";
> +     case MPI_IOCSTATUS_SCSI_INVALID_BUS:
> +             desc = "invalid bus";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE: /* 0x0043 */
> -             /*
> -              * Inquiry is issued for device scanning
> -              */
> -             if (sc->cmnd[0] != 0x12)
> -                     desc = "SCSI Device Not There";
> +     case MPI_IOCSTATUS_SCSI_INVALID_TARGETID:
> +             desc = "invalid target_id";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_DATA_OVERRUN: /* 0x0044 */
> -             desc = "SCSI Data Overrun";
> +     case MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE:
> +             desc = "device not there";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_IO_DATA_ERROR: /* 0x0046 */
> -             desc = "SCSI I/O Data Error";
> +     case MPI_IOCSTATUS_SCSI_DATA_OVERRUN:
> +             desc = "data overrun";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR: /* 0x0047 */
> -             desc = "SCSI Protocol Error";
> +     case MPI_IOCSTATUS_SCSI_DATA_UNDERRUN:
> +             desc = "data underrun";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_TASK_TERMINATED: /* 0x0048 */
> -             desc = "SCSI Task Terminated";
> +     case MPI_IOCSTATUS_SCSI_IO_DATA_ERROR:
> +             desc = "I/O data error";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
> -             desc = "SCSI Residual Mismatch";
> +     case MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR:
> +             desc = "protocol error";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED: /* 0x004A */
> -             desc = "SCSI Task Management Failed";
> +     case MPI_IOCSTATUS_SCSI_TASK_TERMINATED:
> +             desc = "task terminated";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_IOC_TERMINATED: /* 0x004B */
> -             desc = "SCSI IOC Terminated";
> +     case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH:
> +             desc = "residual mismatch";
>               break;
> -
> -     case MPI_IOCSTATUS_SCSI_EXT_TERMINATED: /* 0x004C */
> -             desc = "SCSI Ext Terminated";
> +     case MPI_IOCSTATUS_SCSI_TASK_MGMT_FAILED:
> +             desc = "task management failed";
> +             break;
> +     case MPI_IOCSTATUS_SCSI_IOC_TERMINATED:
> +             desc = "IOC terminated";
> +             break;
> +     case MPI_IOCSTATUS_SCSI_EXT_TERMINATED:
> +             desc = "ext terminated";
> +             break;
> +     default:
> +             desc = "";
>               break;
>       }
>  
> -     if (!desc)
> -             return;
> +     switch (pScsiReply->SCSIStatus)
> +     {
>  
> -     snprintf(extend_desc, EVENT_DESCR_STR_SZ,
> -         "[%d:%d:%d:%d] cmd=%02Xh, sam_status=%02Xh state=%02Xh",
> -             sc->device->host->host_no,
> -             sc->device->channel, sc->device->id, sc->device->lun,
> -             sc->cmnd[0], scsi_status, scsi_state);
> +     case MPI_SCSI_STATUS_SUCCESS:
> +             desc1 = "success";
> +             break;
> +     case MPI_SCSI_STATUS_CHECK_CONDITION:
> +             desc1 = "check condition";
> +             break;
> +     case MPI_SCSI_STATUS_CONDITION_MET:
> +             desc1 = "condition met";
> +             break;
> +     case MPI_SCSI_STATUS_BUSY:
> +             desc1 = "busy";
> +             break;
> +     case MPI_SCSI_STATUS_INTERMEDIATE:
> +             desc1 = "intermediate";
> +             break;
> +     case MPI_SCSI_STATUS_INTERMEDIATE_CONDMET:
> +             desc1 = "intermediate condmet";
> +             break;
> +     case MPI_SCSI_STATUS_RESERVATION_CONFLICT:
> +             desc1 = "reservation conflict";
> +             break;
> +     case MPI_SCSI_STATUS_COMMAND_TERMINATED:
> +             desc1 = "command terminated";
> +             break;
> +     case MPI_SCSI_STATUS_TASK_SET_FULL:
> +             desc1 = "task set full";
> +             break;
> +     case MPI_SCSI_STATUS_ACA_ACTIVE:
> +             desc1 = "aca active";
> +             break;
> +     case MPI_SCSI_STATUS_FCPEXT_DEVICE_LOGGED_OUT:
> +             desc1 = "fcpext device logged out";
> +             break;
> +     case MPI_SCSI_STATUS_FCPEXT_NO_LINK:
> +             desc1 = "fcpext no link";
> +             break;
> +     case MPI_SCSI_STATUS_FCPEXT_UNASSIGNED:
> +             desc1 = "fcpext unassigned";
> +             break;
> +     default:
> +             desc1 = "";
> +             break;
> +     }
> +
> +     scsi_print_command(sc);
> +     printk(KERN_DEBUG "\tfw_channel = %d, fw_id = %d\n",
> +         pScsiReply->Bus, pScsiReply->TargetID);
> +     printk(KERN_DEBUG "\trequest_len = %d, underflow = %d, resid = %d\n",
> +         sc->request_bufflen, sc->underflow, sc->resid);

+       printk(KERN_DEBUG "\trequest_len = %d, underflow = %d, resid = %d\n",
+           scsi_bufflen(sc), sc->underflow, scsi_get_resid(sc));

> +     printk(KERN_DEBUG "\ttag = %d, transfer_count = %d, sc->result = 
> %08X\n",
> +         le16_to_cpu(pScsiReply->TaskTag),
> +         le32_to_cpu(pScsiReply->TransferCount), sc->result);
> +
> +     printk(KERN_DEBUG "\tiocstatus = %s (0x%04x), "
> +         "scsi_status = %s (0x%02x), scsi_state = (0x%02x)\n",
> +         desc, ioc_status,
> +         desc1, pScsiReply->SCSIStatus,
> +         pScsiReply->SCSIState);
> +
> +     if (pScsiReply->SCSIState & MPI_SCSI_STATE_AUTOSENSE_VALID) {
> +             skey = sc->sense_buffer[2] & 0x0F;
> +             asc = sc->sense_buffer[12];
> +             ascq = sc->sense_buffer[13];
> +
> +             printk(KERN_DEBUG "\t[sense_key,asc,ascq]: "
> +                 "[0x%02x,0x%02x,0x%02x]\n",
> +                 skey, asc, ascq);
> +     }
>  
> -     printk(MYIOC_s_INFO_FMT "IOCStatus(0x%04X): %s: %s\n",
> -         ioc->name, ioc_status, desc, extend_desc);
> +     /*
> +      *  Look for + dump FCP ResponseInfo[]!
> +      */
> +     if (pScsiReply->SCSIState & MPI_SCSI_STATE_RESPONSE_INFO_VALID &&
> +         pScsiReply->ResponseInfo)
> +             printk(KERN_DEBUG "response_info = %08xh\n",
> +                 le32_to_cpu(pScsiReply->ResponseInfo));
>  }
>  #endif
>  
> @@ -627,11 +692,11 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F
>       pScsiReply = (SCSIIOReply_t *) mr;
>  
>       if((ioc->facts.MsgVersion >= MPI_VERSION_01_05) && pScsiReply){
> -             dmfprintk((MYIOC_s_INFO_FMT
> +             dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT
>                       "ScsiDone (mf=%p,mr=%p,sc=%p,idx=%d,task-tag=%d)\n",
>                       ioc->name, mf, mr, sc, req_idx, pScsiReply->TaskTag));
>       }else{
> -             dmfprintk((MYIOC_s_INFO_FMT
> +             dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT
>                       "ScsiDone (mf=%p,mr=%p,sc=%p,idx=%d)\n",
>                       ioc->name, mf, mr, sc, req_idx));
>       }
> @@ -759,7 +824,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F
>                               sc->result=DID_SOFT_ERROR << 16;
>                       else /* Sufficient data transfer occurred */
>                               sc->result = (DID_OK << 16) | scsi_status;
> -                     dreplyprintk((KERN_NOTICE
> +                     dreplyprintk(ioc, printk(KERN_DEBUG
>                           "RESIDUAL_MISMATCH: result=%x on channel=%d 
> id=%d\n",
>                           sc->result, sc->device->channel, sc->device->id));
>                       break;
> @@ -792,9 +857,11 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F
>                               }
>                       }
>  
> -                     dreplyprintk((KERN_NOTICE "  sc->underflow={report ERR 
> if < %02xh bytes xfer'd}\n",
> +
> +                     dreplyprintk(ioc, printk(KERN_DEBUG "  
> sc->underflow={report ERR if < %02xh bytes xfer'd}\n",
>                                       sc->underflow));
> -                     dreplyprintk((KERN_NOTICE "  ActBytesXferd=%02xh\n", 
> xfer_cnt));
> +                     dreplyprintk(ioc, printk(KERN_DEBUG "  
> ActBytesXferd=%02xh\n", xfer_cnt));
> +
>                       /* Report Queue Full
>                        */
>                       if (scsi_status == MPI_SCSI_STATUS_TASK_SET_FULL)
> @@ -871,27 +938,9 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F
>  
>               }       /* switch(status) */
>  
> -#ifdef MPT_DEBUG_REPLY
> -             if (sc->result) {
> -
> -                     mptscsih_iocstatus_info_scsiio(ioc, status,
> -                         scsi_status, scsi_state, sc);
> -
> -                     dreplyprintk(("%s: [%d:%d:%d:%d] cmd=0x%02x "
> -                         "result=0x%08x\n\tiocstatus=0x%04X "
> -                         "scsi_state=0x%02X scsi_status=0x%02X "
> -                         "loginfo=0x%08X\n", __FUNCTION__,
> -                         sc->device->host->host_no, sc->device->channel, 
> sc->device->id,
> -                         sc->device->lun, sc->cmnd[0], sc->result, status,
> -                         scsi_state, scsi_status, log_info));
> -
> -                     dreplyprintk(("%s: [%d:%d:%d:%d] resid=%d "
> -                                   "bufflen=%d xfer_cnt=%d\n", __FUNCTION__,
> -                                   sc->device->host->host_no,
> -                                   sc->device->channel, sc->device->id,
> -                                   sc->device->lun, scsi_get_resid(sc),
> -                                   scsi_bufflen(sc), xfer_cnt));
> -             }
> +#ifdef CONFIG_FUSION_LOGGING
> +             if (sc->result && (ioc->debug_level & MPT_DEBUG_REPLY))
> +                     mptscsih_info_scsiio(ioc, sc, pScsiReply);
>  #endif
>  
>       } /* end of address reply case */
> @@ -925,7 +974,7 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOS
>       int              ii;
>       int              max = ioc->req_depth;
>  
> -     dprintk((KERN_INFO MYNAM ": flush_ScsiLookup called\n"));
> +     dprintk(ioc, printk(KERN_DEBUG MYNAM ": flush_ScsiLookup called\n"));
>       for (ii= 0; ii < max; ii++) {
>               if ((SCpnt = hd->ScsiLookup[ii]) != NULL) {
>  
> @@ -937,7 +986,7 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOS
>                       hd->ScsiLookup[ii] = NULL;
>  
>                       mf = MPT_INDEX_2_MFPTR(ioc, ii);
> -                     dmfprintk(( "flush: ScsiDone (mf=%p,sc=%p)\n",
> +                     dmfprintk(ioc, printk(KERN_DEBUG MYNAM ": flush: 
> ScsiDone (mf=%p,sc=%p)\n",
>                                       mf, SCpnt));
>  
>                       /* Free Chain buffers */
> @@ -987,7 +1036,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HO
>       struct scsi_cmnd *sc;
>       struct scsi_lun  lun;
>  
> -     dsprintk((KERN_INFO MYNAM ": search_running channel %d id %d lun %d max 
> %d\n",
> +     dsprintk(hd->ioc, printk(KERN_DEBUG MYNAM ": search_running channel %d 
> id %d lun %d max %d\n",
>           vdevice->vtarget->channel, vdevice->vtarget->id, vdevice->lun, 
> max));
>  
>       for (ii=0; ii < max; ii++) {
> @@ -1020,9 +1069,9 @@ mptscsih_search_running_cmds(MPT_SCSI_HO
>                       scsi_dma_unmap(sc);
>                       sc->host_scribble = NULL;
>                       sc->result = DID_NO_CONNECT << 16;
> -                     dsprintk(( "search_running: found (sc=%p, mf = %p) "
> -                         "channel %d id %d, lun %d \n", sc, mf,
> -                         vdevice->vtarget->channel, vdevice->vtarget->id, 
> vdevice->lun));
> +                     sdev_printk(KERN_INFO, sc->device, "completing cmds: 
> fw_channel %d,"
> +                        "fw_id %d, sc=%p, mf = %p, idx=%x\n", 
> vdevice->vtarget->channel,
> +                        vdevice->vtarget->id, sc, mf, ii);
>                       sc->scsi_done(sc);
>               }
>       }
> @@ -1057,7 +1106,7 @@ mptscsih_report_queue_full(struct scsi_c
>               return;
>  
>       if (time - hd->last_queue_full > 10 * HZ) {
> -             dprintk((MYIOC_s_WARN_FMT "Device (%d:%d:%d) reported 
> QUEUE_FULL!\n",
> +             dprintk(hd->ioc, printk(MYIOC_s_WARN_FMT "Device (%d:%d:%d) 
> reported QUEUE_FULL!\n",
>                               hd->ioc->name, 0, sc->device->id, 
> sc->device->lun));
>               hd->last_queue_full = time;
>       }
> @@ -1098,7 +1147,7 @@ mptscsih_remove(struct pci_dev *pdev)
>               hd->ScsiLookup = NULL;
>       }
>  
> -     dprintk((MYIOC_s_INFO_FMT
> +     dprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>           "Free'd ScsiLookup (%d) memory\n",
>           hd->ioc->name, sz1));
>  
> @@ -1317,17 +1366,19 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, v
>       u32      cmd_len;
>       int      my_idx;
>       int      ii;
> +     MPT_ADAPTER *ioc;
>  
>       hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata;
> +     ioc = hd->ioc;
>       lun = SCpnt->device->lun;
>       SCpnt->scsi_done = done;
>  
> -     dmfprintk((MYIOC_s_INFO_FMT "qcmd: SCpnt=%p, done()=%p\n",
> -                     (hd && hd->ioc) ? hd->ioc->name : "ioc?", SCpnt, done));
> +     dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "qcmd: SCpnt=%p, done()=%p\n",
> +             ioc->name, SCpnt, done));
>  
>       if (hd->resetPending) {
> -             dtmprintk((MYIOC_s_WARN_FMT "qcmd: SCpnt=%p timeout + 60HZ\n",
> -                     (hd && hd->ioc) ? hd->ioc->name : "ioc?", SCpnt));
> +             dtmprintk(ioc, printk(MYIOC_s_WARN_FMT "qcmd: SCpnt=%p timeout 
> + 60HZ\n",
> +                     ioc->name, SCpnt));
>               return SCSI_MLQUEUE_HOST_BUSY;
>       }
>  
> @@ -1335,8 +1386,8 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, v
>        *  Put together a MPT SCSI request...
>        */
>       if ((mf = mpt_get_msg_frame(hd->ioc->DoneCtx, hd->ioc)) == NULL) {
> -             dprintk((MYIOC_s_WARN_FMT "QueueCmd, no msg frames!!\n",
> -                             hd->ioc->name));
> +             dprintk(ioc, printk(MYIOC_s_WARN_FMT "QueueCmd, no msg 
> frames!!\n",
> +                             ioc->name));
>               return SCSI_MLQUEUE_HOST_BUSY;
>       }
>  
> @@ -1422,9 +1473,9 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, v
>       hd->ScsiLookup[my_idx] = SCpnt;
>  
>       mpt_put_msg_frame(hd->ioc->DoneCtx, hd->ioc, mf);
> -     dmfprintk((MYIOC_s_INFO_FMT "Issued SCSI cmd (%p) mf=%p idx=%d\n",
> -                     hd->ioc->name, SCpnt, mf, my_idx));
> -     DBG_DUMP_REQUEST_FRAME(mf)
> +     dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Issued SCSI cmd (%p) mf=%p 
> idx=%d\n",
> +                     ioc->name, SCpnt, mf, my_idx));
> +     DBG_DUMP_REQUEST_FRAME(ioc, (u32 *)mf)
>       return 0;
>  
>   fail:
> @@ -1475,7 +1526,7 @@ mptscsih_freeChainBuffers(MPT_ADAPTER *i
>               list_add_tail(&chain->u.frame.linkage.list, &ioc->FreeChainQ);
>               spin_unlock_irqrestore(&ioc->FreeQlock, flags);
>  
> -             dmfprintk((MYIOC_s_INFO_FMT "FreeChainBuffers (index %d)\n",
> +             dmfprintk(ioc, printk(MYIOC_s_DEBUG_FMT "FreeChainBuffers 
> (index %d)\n",
>                               ioc->name, chain_idx));
>  
>               /* handle next */
> @@ -1519,7 +1570,7 @@ mptscsih_TMHandler(MPT_SCSI_HOST *hd, u8
>       unsigned long    flags;
>  
>       ioc = hd->ioc;
> -     dtmprintk((MYIOC_s_INFO_FMT "TMHandler Entered!\n", ioc->name));
> +     dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "TMHandler Entered!\n", 
> ioc->name));
>  
>       // SJR - CHECKME - Can we avoid this here?
>       // (mpt_HardResetHandler has this check...)
> @@ -1539,20 +1590,20 @@ mptscsih_TMHandler(MPT_SCSI_HOST *hd, u8
>        */
>       if (mptscsih_tm_pending_wait(hd) == FAILED) {
>               if (type == MPI_SCSITASKMGMT_TASKTYPE_ABORT_TASK) {
> -                     dtmprintk((KERN_INFO MYNAM ": %s: TMHandler abort: "
> +                     dtmprintk(ioc, printk(KERN_DEBUG MYNAM ": %s: TMHandler 
> abort: "
>                          "Timed out waiting for last TM (%d) to complete! \n",
> -                        hd->ioc->name, hd->tmPending));
> +                        ioc->name, hd->tmPending));
>                       return FAILED;
>               } else if (type == MPI_SCSITASKMGMT_TASKTYPE_TARGET_RESET) {
> -                     dtmprintk((KERN_INFO MYNAM ": %s: TMHandler target "
> +                     dtmprintk(ioc, printk(KERN_DEBUG MYNAM ": %s: TMHandler 
> target "
>                               "reset: Timed out waiting for last TM (%d) "
> -                             "to complete! \n", hd->ioc->name,
> +                             "to complete! \n", ioc->name,
>                               hd->tmPending));
>                       return FAILED;
>               } else if (type == MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS) {
> -                     dtmprintk((KERN_INFO MYNAM ": %s: TMHandler bus reset: "
> +                     dtmprintk(ioc, printk(KERN_DEBUG MYNAM ": %s: TMHandler 
> bus reset: "
>                          "Timed out waiting for last TM (%d) to complete! \n",
> -                        hd->ioc->name, hd->tmPending));
> +                       ioc->name, hd->tmPending));
>                       return FAILED;
>               }
>       } else {
> @@ -1591,12 +1642,13 @@ mptscsih_TMHandler(MPT_SCSI_HOST *hd, u8
>           ctx2abort, timeout);
>       if (rc)
>               printk(MYIOC_s_INFO_FMT "Issue of TaskMgmt failed!\n",
> -                    hd->ioc->name);
> +                    ioc->name);
>       else
> -             dtmprintk((MYIOC_s_INFO_FMT "Issue of TaskMgmt Successful!\n",
> -                        hd->ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Issue of TaskMgmt 
> Successful!\n",
> +                        ioc->name));
>  
> -     dtmprintk((MYIOC_s_INFO_FMT "TMHandler rc = %d!\n", hd->ioc->name, rc));
> +     dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT
> +                     "TMHandler rc = %d!\n", ioc->name, rc));
>  
>       return rc;
>  }
> @@ -1632,11 +1684,11 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd
>       /* Return Fail to calling function if no message frames available.
>        */
>       if ((mf = mpt_get_msg_frame(hd->ioc->TaskCtx, hd->ioc)) == NULL) {
> -             dfailprintk((MYIOC_s_ERR_FMT "IssueTaskMgmt, no msg frames!!\n",
> +             dfailprintk(hd->ioc, printk(MYIOC_s_ERR_FMT "IssueTaskMgmt, no 
> msg frames!!\n",
>                               hd->ioc->name));
>               return FAILED;
>       }
> -     dtmprintk((MYIOC_s_INFO_FMT "IssueTaskMgmt request @ %p\n",
> +     dtmprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "IssueTaskMgmt request @ 
> %p\n",
>                       hd->ioc->name, mf));
>  
>       /* Format the Request
> @@ -1660,27 +1712,27 @@ mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd
>  
>       pScsiTm->TaskMsgContext = ctx2abort;
>  
> -     dtmprintk((MYIOC_s_INFO_FMT "IssueTaskMgmt: ctx2abort (0x%08x) "
> +     dtmprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "IssueTaskMgmt: ctx2abort 
> (0x%08x) "
>               "type=%d\n", hd->ioc->name, ctx2abort, type));
>  
> -     DBG_DUMP_TM_REQUEST_FRAME((u32 *)pScsiTm);
> +     DBG_DUMP_TM_REQUEST_FRAME(ioc, (u32 *)pScsiTm);
>  
>       if ((retval = mpt_send_handshake_request(hd->ioc->TaskCtx, hd->ioc,
>               sizeof(SCSITaskMgmt_t), (u32*)pScsiTm, CAN_SLEEP)) != 0) {
> -             dfailprintk((MYIOC_s_ERR_FMT "send_handshake FAILED!"
> +             dfailprintk(hd->ioc, printk(MYIOC_s_ERR_FMT "send_handshake 
> FAILED!"
>                       " (hd %p, ioc %p, mf %p, rc=%d) \n", hd->ioc->name, hd,
>                       hd->ioc, mf, retval));
>               goto fail_out;
>       }
>  
>       if(mptscsih_tm_wait_for_completion(hd, timeout) == FAILED) {
> -             dfailprintk((MYIOC_s_ERR_FMT "task management request TIMED 
> OUT!"
> +             dfailprintk(hd->ioc, printk(MYIOC_s_ERR_FMT "task management 
> request TIMED OUT!"
>                       " (hd %p, ioc %p, mf %p) \n", hd->ioc->name, hd,
>                       hd->ioc, mf));
> -             dtmprintk((MYIOC_s_INFO_FMT "Calling HardReset! \n",
> +             dtmprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Calling HardReset! 
> \n",
>                        hd->ioc->name));
>               retval = mpt_HardResetHandler(hd->ioc, CAN_SLEEP);
> -             dtmprintk((MYIOC_s_INFO_FMT "rc=%d \n",
> +             dtmprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "rc=%d \n",
>                        hd->ioc->name, retval));
>               goto fail_out;
>       }
> @@ -1748,8 +1800,8 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
>       if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL) {
>               SCpnt->result = DID_RESET << 16;
>               SCpnt->scsi_done(SCpnt);
> -             dfailprintk((KERN_INFO MYNAM ": mptscsih_abort: Can't locate "
> -                 "host! (sc=%p)\n", SCpnt));
> +             printk(KERN_DEBUG MYNAM ": mptscsih_abort: Can't locate "
> +                 "host! (sc=%p)\n", SCpnt);
>               return FAILED;
>       }
>  
> @@ -1760,7 +1812,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
>  
>       vdevice = SCpnt->device->hostdata;
>       if (!vdevice || !vdevice->vtarget) {
> -             dtmprintk((MYIOC_s_DEBUG_FMT "task abort: device has been "
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "task abort: device has 
> been "
>                   "deleted (sc=%p)\n", ioc->name, SCpnt));
>               SCpnt->result = DID_NO_CONNECT << 16;
>               SCpnt->scsi_done(SCpnt);
> @@ -1771,7 +1823,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
>       /* Task aborts are not supported for hidden raid components.
>        */
>       if (vdevice->vtarget->tflags & MPT_TARGET_FLAGS_RAID_COMPONENT) {
> -             dtmprintk((MYIOC_s_DEBUG_FMT "task abort: hidden raid "
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "task abort: hidden 
> raid "
>                   "component (sc=%p)\n", ioc->name, SCpnt));
>               SCpnt->result = DID_RESET << 16;
>               retval = FAILED;
> @@ -1785,7 +1837,7 @@ mptscsih_abort(struct scsi_cmnd * SCpnt)
>                * Do OS callback.
>                */
>               SCpnt->result = DID_RESET << 16;
> -             dtmprintk((KERN_INFO MYNAM ": %s: mptscsih_abort: "
> +             dtmprintk(ioc, printk(KERN_DEBUG MYNAM ": %s: mptscsih_abort: "
>                  "Command not in the active list! (sc=%p)\n", ioc->name,
>                  SCpnt));
>               retval = 0;
> @@ -1850,8 +1902,8 @@ mptscsih_dev_reset(struct scsi_cmnd * SC
>       /* If we can't locate our host adapter structure, return FAILED status.
>        */
>       if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
> -             dtmprintk((KERN_INFO MYNAM ": mptscsih_dev_reset: Can't "
> -                 "locate host! (sc=%p)\n", SCpnt));
> +             printk(KERN_DEBUG MYNAM ": mptscsih_dev_reset: Can't "
> +                 "locate host! (sc=%p)\n", SCpnt);
>               return FAILED;
>       }
>  
> @@ -1913,8 +1965,8 @@ mptscsih_bus_reset(struct scsi_cmnd * SC
>       /* If we can't locate our host adapter structure, return FAILED status.
>        */
>       if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
> -             dtmprintk((KERN_INFO MYNAM ": mptscsih_bus_reset: Can't "
> -                 "locate host! (sc=%p)\n", SCpnt ));
> +             printk(KERN_DEBUG MYNAM ": mptscsih_bus_reset: Can't "
> +                 "locate host! (sc=%p)\n", SCpnt );
>               return FAILED;
>       }
>  
> @@ -1957,8 +2009,8 @@ mptscsih_host_reset(struct scsi_cmnd *SC
>  
>       /*  If we can't locate the host to reset, then we failed. */
>       if ((hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata) == NULL){
> -             dtmprintk( ( KERN_INFO MYNAM ": mptscsih_host_reset: Can't "
> -                 "locate host! (sc=%p)\n", SCpnt));
> +             printk( KERN_DEBUG MYNAM ": mptscsih_host_reset: Can't "
> +                 "locate host! (sc=%p)\n", SCpnt);
>               return FAILED;
>       }
>  
> @@ -2106,16 +2158,16 @@ mptscsih_taskmgmt_complete(MPT_ADAPTER *
>       u8                       tmType;
>       u32                      termination_count;
>  
> -     dtmprintk((MYIOC_s_WARN_FMT "TaskMgmt completed (mf=%p,mr=%p)\n",
> +     dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "TaskMgmt completed 
> (mf=%p,mr=%p)\n",
>           ioc->name, mf, mr));
>       if (!ioc->sh) {
> -             dtmprintk((MYIOC_s_WARN_FMT
> +             dtmprintk(ioc, printk(MYIOC_s_WARN_FMT
>                   "TaskMgmt Complete: NULL Scsi Host Ptr\n", ioc->name));
>               return 1;
>       }
>  
>       if (mr == NULL) {
> -             dtmprintk((MYIOC_s_WARN_FMT
> +             dtmprintk(ioc, printk(MYIOC_s_WARN_FMT
>                   "ERROR! TaskMgmt Reply: NULL Request %p\n", ioc->name, mf));
>               return 1;
>       }
> @@ -2131,19 +2183,21 @@ mptscsih_taskmgmt_complete(MPT_ADAPTER *
>           pScsiTmReply->ResponseCode)
>               mptscsih_taskmgmt_response_code(ioc,
>                   pScsiTmReply->ResponseCode);
> -     DBG_DUMP_TM_REPLY_FRAME((u32 *)pScsiTmReply);
> +     DBG_DUMP_TM_REPLY_FRAME(ioc, (u32 *)pScsiTmReply);
>  
> -#if defined(MPT_DEBUG_REPLY) || defined(MPT_DEBUG_TM)
> -     printk("%s: ha=%d [%d:%d:0] task_type=0x%02X "
> -         "iocstatus=0x%04X\n\tloginfo=0x%08X response_code=0x%02X "
> -         "term_cmnds=%d\n", __FUNCTION__, ioc->id, pScsiTmReply->Bus,
> -         pScsiTmReply->TargetID, pScsiTmReq->TaskType,
> -         le16_to_cpu(pScsiTmReply->IOCStatus),
> -         le32_to_cpu(pScsiTmReply->IOCLogInfo),pScsiTmReply->ResponseCode,
> -         le32_to_cpu(pScsiTmReply->TerminationCount));
> +#ifdef CONFIG_FUSION_LOGGING
> +     if ((ioc->debug_level & MPT_DEBUG_REPLY) || 
> +                             (ioc->debug_level & MPT_DEBUG_TM ))
> +             printk("%s: ha=%d [%d:%d:0] task_type=0x%02X "
> +                     "iocstatus=0x%04X\n\tloginfo=0x%08X 
> response_code=0x%02X "
> +                     "term_cmnds=%d\n", __FUNCTION__, ioc->id, 
> pScsiTmReply->Bus,
> +                      pScsiTmReply->TargetID, pScsiTmReq->TaskType,
> +                     le16_to_cpu(pScsiTmReply->IOCStatus),
> +                     
> le32_to_cpu(pScsiTmReply->IOCLogInfo),pScsiTmReply->ResponseCode,
> +                     le32_to_cpu(pScsiTmReply->TerminationCount));
>  #endif
>       if (!iocstatus) {
> -             dtmprintk((MYIOC_s_WARN_FMT " TaskMgmt SUCCESS\n", ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT " TaskMgmt SUCCESS\n", 
> ioc->name));
>                       hd->abortSCpnt = NULL;
>               goto out;
>       }
> @@ -2224,10 +2278,6 @@ mptscsih_bios_param(struct scsi_device *
>       geom[1] = sectors;
>       geom[2] = cylinders;
>  
> -     dprintk((KERN_NOTICE
> -             ": bios_param: Id=%i Lun=%i Channel=%i CHS=%i/%i/%i\n",
> -             sdev->id, sdev->lun, sdev->channel, (int)cylinders, heads, 
> sectors));
> -
>       return 0;
>  }
>  
> @@ -2393,11 +2443,11 @@ mptscsih_slave_configure(struct scsi_dev
>       vtarget = starget->hostdata;
>       vdevice = sdev->hostdata;
>  
> -     dsprintk((MYIOC_s_INFO_FMT
> +     dsprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>               "device @ %p, channel=%d, id=%d, lun=%d\n",
>               hd->ioc->name, sdev, sdev->channel, sdev->id, sdev->lun));
>       if (hd->ioc->bus_type == SPI)
> -             dsprintk((MYIOC_s_INFO_FMT
> +             dsprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>                   "sdtr %d wdtr %d ppr %d inq length=%d\n",
>                   hd->ioc->name, sdev->sdtr, sdev->wdtr,
>                   sdev->ppr, sdev->inquiry_len));
> @@ -2411,19 +2461,19 @@ mptscsih_slave_configure(struct scsi_dev
>       vdevice->configured_lun = 1;
>       mptscsih_change_queue_depth(sdev, MPT_SCSI_CMD_PER_DEV_HIGH);
>  
> -     dsprintk((MYIOC_s_INFO_FMT
> +     dsprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>               "Queue depth=%d, tflags=%x\n",
>               hd->ioc->name, sdev->queue_depth, vtarget->tflags));
>  
>       if (hd->ioc->bus_type == SPI)
> -             dsprintk((MYIOC_s_INFO_FMT
> +             dsprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>                   "negoFlags=%x, maxOffset=%x, SyncFactor=%x\n",
>                   hd->ioc->name, vtarget->negoFlags, vtarget->maxOffset,
>                   vtarget->minSyncFactor));
>  
>  slave_configure_exit:
>  
> -     dsprintk((MYIOC_s_INFO_FMT
> +     dsprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT
>               "tagged %d, simple %d, ordered %d\n",
>               hd->ioc->name,sdev->tagged_supported, sdev->simple_tags,
>               sdev->ordered_tags));
> @@ -2490,7 +2540,7 @@ mptscsih_copy_sense_data(struct scsi_cmn
>                       }
>               }
>       } else {
> -             dprintk((MYIOC_s_INFO_FMT "Hmmm... SenseData len=0! (?)\n",
> +             dprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Hmmm... SenseData 
> len=0! (?)\n",
>                               hd->ioc->name));
>       }
>  }
> @@ -2520,7 +2570,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int
>       unsigned long    flags;
>       int             ii;
>  
> -     dtmprintk((KERN_WARNING MYNAM
> +     dtmprintk(ioc, printk(KERN_DEBUG MYNAM
>                       ": IOC %s_reset routed to SCSI host driver!\n",
>                       reset_phase==MPT_IOC_SETUP_RESET ? "setup" : (
>                       reset_phase==MPT_IOC_PRE_RESET ? "pre" : "post")));
> @@ -2535,7 +2585,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int
>               hd = (MPT_SCSI_HOST *) ioc->sh->hostdata;
>  
>       if (reset_phase == MPT_IOC_SETUP_RESET) {
> -             dtmprintk((MYIOC_s_WARN_FMT "Setup-Diag Reset\n", ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Setup-Diag Reset\n", 
> ioc->name));
>  
>               /* Clean Up:
>                * 1. Set Hard Reset Pending Flag
> @@ -2544,7 +2594,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int
>               hd->resetPending = 1;
>  
>       } else if (reset_phase == MPT_IOC_PRE_RESET) {
> -             dtmprintk((MYIOC_s_WARN_FMT "Pre-Diag Reset\n", ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Pre-Diag Reset\n", 
> ioc->name));
>  
>               /* 2. Flush running commands
>                *      Clean ScsiLookup (and associated memory)
> @@ -2564,10 +2614,10 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int
>                       mpt_free_msg_frame(ioc, hd->cmdPtr);
>               }
>  
> -             dtmprintk((MYIOC_s_WARN_FMT "Pre-Reset complete.\n", 
> ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Pre-Reset 
> complete.\n", ioc->name));
>  
>       } else {
> -             dtmprintk((MYIOC_s_WARN_FMT "Post-Diag Reset\n", ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Post-Diag Reset\n", 
> ioc->name));
>  
>               /* Once a FW reload begins, all new OS commands are
>                * redirected to the doneQ w/ a reset status.
> @@ -2607,7 +2657,7 @@ mptscsih_ioc_reset(MPT_ADAPTER *ioc, int
>                       hd->cmdPtr = NULL;
>               }
>  
> -             dtmprintk((MYIOC_s_WARN_FMT "Post-Reset complete.\n", 
> ioc->name));
> +             dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT "Post-Reset 
> complete.\n", ioc->name));
>  
>       }
>  
> @@ -2621,7 +2671,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc,
>       MPT_SCSI_HOST *hd;
>       u8 event = le32_to_cpu(pEvReply->Event) & 0xFF;
>  
> -     devtverboseprintk((MYIOC_s_INFO_FMT "MPT event (=%02Xh) routed to SCSI 
> host driver!\n",
> +     devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT "MPT event (=%02Xh) 
> routed to SCSI host driver!\n",
>                       ioc->name, event));
>  
>       if (ioc->sh == NULL ||
> @@ -2663,7 +2713,7 @@ mptscsih_event_process(MPT_ADAPTER *ioc,
>       case MPI_EVENT_STATE_CHANGE:                    /* 02 */
>       case MPI_EVENT_EVENT_CHANGE:                    /* 0A */
>       default:
> -             dprintk((KERN_INFO "  Ignoring event (=%02Xh)\n", event));
> +             dprintk(ioc, printk(KERN_DEBUG MYNAM ": Ignoring event 
> (=%02Xh)\n", event));
>               break;
>       }
>  
> @@ -2724,7 +2774,7 @@ mptscsih_scandv_complete(MPT_ADAPTER *io
>       }
>       hd->cmdPtr = NULL;
>  
> -     ddvprintk((MYIOC_s_INFO_FMT "ScanDvComplete (mf=%p,mr=%p,idx=%d)\n",
> +     ddvprintk(ioc, printk(MYIOC_s_DEBUG_FMT "ScanDvComplete 
> (mf=%p,mr=%p,idx=%d)\n",
>                       hd->ioc->name, mf, mr, req_idx));
>  
>       hd->pLocal = &hd->localReply;
> @@ -2744,9 +2794,6 @@ mptscsih_scandv_complete(MPT_ADAPTER *io
>               status = le16_to_cpu(pReply->IOCStatus) & MPI_IOCSTATUS_MASK;
>               scsi_status = pReply->SCSIStatus;
>  
> -             ddvtprintk((KERN_NOTICE "  IOCStatus=%04xh, SCSIState=%02xh, 
> SCSIStatus=%02xh, IOCLogInfo=%08xh\n",
> -                          status, pReply->SCSIState, scsi_status,
> -                          le32_to_cpu(pReply->IOCLogInfo)));
>  
>               switch(status) {
>  
> @@ -2799,7 +2846,7 @@ mptscsih_scandv_complete(MPT_ADAPTER *io
>                                                       SCSI_STD_SENSE_BYTES);
>                               memcpy(hd->pLocal->sense, sense_data, sz);
>  
> -                             ddvprintk((KERN_NOTICE "  Check Condition, 
> sense ptr %p\n",
> +                             ddvprintk(ioc, printk(KERN_DEBUG "  Check 
> Condition, sense ptr %p\n",
>                                               sense_data));
>                       } else if (pReply->SCSIState & 
> MPI_SCSI_STATE_AUTOSENSE_FAILED) {
>                               if (pReq->CDB[0] == INQUIRY)
> @@ -2830,8 +2877,6 @@ mptscsih_scandv_complete(MPT_ADAPTER *io
>  
>               }       /* switch(status) */
>  
> -             ddvtprintk((KERN_NOTICE "  completionCode set to %08xh\n",
> -                             completionCode));
>       } /* end of address reply case */
>  
>       hd->pLocal->completion = completionCode;
> @@ -2862,7 +2907,7 @@ mptscsih_timer_expired(unsigned long dat
>  {
>       MPT_SCSI_HOST *hd = (MPT_SCSI_HOST *) data;
>  
> -     ddvprintk((MYIOC_s_WARN_FMT "Timer Expired! Cmd %p\n", hd->ioc->name, 
> hd->cmdPtr));
> +     ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Timer Expired! Cmd %p\n", 
> hd->ioc->name, hd->cmdPtr));
>  
>       if (hd->cmdPtr) {
>               MPIHeader_t *cmd = (MPIHeader_t *)hd->cmdPtr;
> @@ -2874,7 +2919,6 @@ mptscsih_timer_expired(unsigned long dat
>                        * If new eh code, do nothing. Wait for OS cmd timeout
>                        *      for bus reset.
>                        */
> -                     ddvtprintk((MYIOC_s_NOTE_FMT "DV Cmd Timeout: NoOp\n", 
> hd->ioc->name));
>               } else {
>                       /* Perform a FW reload */
>                       if (mpt_HardResetHandler(hd->ioc, NO_SLEEP) < 0) {
> @@ -2891,7 +2935,7 @@ mptscsih_timer_expired(unsigned long dat
>        * The FW will reply to all outstanding commands, callback will finish 
> cleanup.
>        * Hard reset clean-up will free all resources.
>        */
> -     ddvprintk((MYIOC_s_WARN_FMT "Timer Expired Complete!\n", 
> hd->ioc->name));
> +     ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Timer Expired 
> Complete!\n", hd->ioc->name));
>  
>       return;
>  }
> @@ -2932,7 +2976,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTER
>  
>       in_isr = in_interrupt();
>       if (in_isr) {
> -             dprintk((MYIOC_s_WARN_FMT "Internal SCSI IO request not allowed 
> in ISR context!\n",
> +             dprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Internal SCSI IO 
> request not allowed in ISR context!\n",
>                                       hd->ioc->name));
>               return -EPERM;
>       }
> @@ -3035,7 +3079,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTER
>       /* Get and Populate a free Frame
>        */
>       if ((mf = mpt_get_msg_frame(hd->ioc->InternalCtx, hd->ioc)) == NULL) {
> -             ddvprintk((MYIOC_s_WARN_FMT "No msg frames!\n",
> +             ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "No msg frames!\n",
>                                       hd->ioc->name));
>               return -EBUSY;
>       }
> @@ -3075,7 +3119,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTER
>  
>       if (cmd == REQUEST_SENSE) {
>               pScsiReq->Control = cpu_to_le32(dir | 
> MPI_SCSIIO_CONTROL_UNTAGGED);
> -             ddvprintk((MYIOC_s_INFO_FMT "Untagged! 0x%2x\n",
> +             ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Untagged! 0x%2x\n",
>                       hd->ioc->name, cmd));
>       }
>  
> @@ -3086,7 +3130,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTER
>       pScsiReq->SenseBufferLowAddr = cpu_to_le32(hd->ioc->sense_buf_low_dma
>                                          + (my_idx * MPT_SENSE_BUFFER_ALLOC));
>  
> -     ddvprintk((MYIOC_s_INFO_FMT "Sending Command 0x%x for (%d:%d:%d)\n",
> +     ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "Sending Command 0x%x for 
> (%d:%d:%d)\n",
>                       hd->ioc->name, cmd, io->channel, io->id, io->lun));
>  
>       if (dir == MPI_SCSIIO_CONTROL_READ) {
> @@ -3138,7 +3182,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTER
>       } else {
>               rc = -EFAULT;
>               /* This should never happen. */
> -             ddvprintk((MYIOC_s_INFO_FMT "_do_cmd: Null pLocal!!!\n",
> +             ddvprintk(hd->ioc, printk(MYIOC_s_DEBUG_FMT "_do_cmd: Null 
> pLocal!!!\n",
>                               hd->ioc->name));
>       }
>  
> @@ -3324,6 +3368,35 @@ mptscsih_device_delay_show(struct class_
>  static CLASS_DEVICE_ATTR(device_delay, S_IRUGO,
>      mptscsih_device_delay_show, NULL);
>  
> +static ssize_t
> +mptscsih_debug_level_show(struct class_device *cdev, char *buf)
> +{
> +     struct Scsi_Host *host = class_to_shost(cdev);
> +     MPT_SCSI_HOST   *hd = (MPT_SCSI_HOST *)host->hostdata;
> +     MPT_ADAPTER *ioc = hd->ioc;
> +
> +     return snprintf(buf, PAGE_SIZE, "%08xh\n", ioc->debug_level);
> +}
> +static ssize_t
> +mptscsih_debug_level_store(struct class_device *cdev, const char *buf,
> +                                                             size_t count)
> +{
> +     struct Scsi_Host *host = class_to_shost(cdev);
> +     MPT_SCSI_HOST   *hd = (MPT_SCSI_HOST *)host->hostdata;
> +     MPT_ADAPTER *ioc = hd->ioc;
> +     int val = 0;
> +
> +     if (sscanf(buf, "%x", &val) != 1)
> +             return -EINVAL;
> +
> +     ioc->debug_level = val;
> +     printk(MYIOC_s_INFO_FMT "debug_level=%08xh\n",
> +                             ioc->name, ioc->debug_level);
> +     return strlen(buf);
> +}
> +static CLASS_DEVICE_ATTR(debug_level, S_IRUGO | S_IWUSR,
> +    mptscsih_debug_level_show, mptscsih_debug_level_store);
> +
>  struct class_device_attribute *mptscsih_host_attrs[] = {
>       &class_device_attr_version_fw,
>       &class_device_attr_version_bios,
> @@ -3336,6 +3409,7 @@ struct class_device_attribute *mptscsih_
>       &class_device_attr_board_tracer,
>       &class_device_attr_io_delay,
>       &class_device_attr_device_delay,
> +     &class_device_attr_debug_level,
>       NULL,
>  };
>  EXPORT_SYMBOL(mptscsih_host_attrs);
> -

NACK
This driver was already converted to accessors please
don't use old (going a way soon) scsi_cmnd members
directly

Boaz

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to