isp - ISP SCSI Host Bus Adapter Driver





     The ISP Host Bus Adapter is a SCSA  compliant  nexus  driver
     that  supports  the  Qlogic  ISP1000   SCSI and the ISP1040B
     SCSI chips. The ISP1000 chip works on SBus and  the ISP1040B
     chip  works  on PCI bus. The ISP is an intelligent SCSI Host
     Bus Adapter chip that reduces the  amount  of  CPU  overhead
     used in a SCSI transfer.

     The  isp driver supports the standard functions provided  by
     the  SCSA interface. The driver supports tagged and untagged
     queuing, fast and wide SCSI, and  auto  request  sense,  but
     does not support linked commands.  The PCI version  ISP Host
     bus adapter based on ISP1040B  also  supports  Fast-20  scsi


     The isp driver can be configured by defining  properties  in
     isp.conf  which override the global SCSI settings. Supported
     properties are scsi-options,  target<n>-scsi-options,  scsi-
     reset-delay,  scsi-watchdog-tick,  scsi-tag-age-limit, scsi-
     initiator-id, and scsi-selection-timeout.

     target<n>-scsi-options overrides the  scsi-options  property
     value for target<n>. <n> is a hex value that can vary from 0
     to f. Refer to scsi_hba_attach(9F) for details.

     Both the ISP1000 and  ISP1040B  support  only  certain  SCSI
     selection  timeout  values. The valid values are 25, 50, 75,
     100, 250, 500, 750 and 1000. These properties are  in  units
     of milliseconds.


     Example 1: SCSI Options

     Create a file  called   /kernel/drv/isp.conf  and  add  this


     This will disable tagged queuing, fast SCSI, and  Wide  mode
     for all  isp instances. The following will disable an option
     for one specific  ISP (refer to  driver.conf(4)):
     name="isp"  parent="/iommu@f,e0000000/sbus@f,e0001000"
            scsi-options=0x178 scsi-initiator-id=6;

     Note that the default initiator ID in OBP is 7 and that  the
     change  to ID 6 will occur at attach time. It may be prefer-
     able to change the initiator ID in OBP.

     The above would set  scsi-options for target 1 to  0x58  and
     for all other targets on this SCSI bus to  0x178.

     The physical pathname of the parent can be determined  using
     the  /devices tree or following the link of the logical dev-
     ice name:

     example# ls -l /dev/rdsk/c2t0d0s0
     lrwxrwxrwx   1 root   root  76 Aug 22 13:29 /dev/rdsk/c2t0d0s0 ->

     Determine the register property values using the  output  of
     prtconf(1M) with the -v option:

     QLGC,isp, instance #0
         Register Specifications:
             Bus Type=0x1, Address=0x10000, Size=450

     Example 2: ISP Properties

     The isp driver exports properties indicating per target  the
     negotiated  transfer  speed  (target<n>-sync-speed), whether
     tagged queuing has been enabled (target<n>-TQ), and  whether
     the wide data transfer has been negotiated (target<n>-wide).
     The sync-speed property value is the data transfer  rate  in
     KB/sec.  The  target-TQ  and  target-wide properties have no
     value. The  existence  of  these  properties  indicate  that
     tagged  queuing  or wide transfer has been enabled. Refer to
     prtconf(1M) (verbose option) for viewing the isp properties.

     QLGC,isp, instance #2
         Driver software properties:
              name <target0-TQ> length <0> -- <no value>.
              name <target0-wide> length <0> -- <no value>.
              name <target0-sync-speed> length <4>
                  value <0x000028f5>.
              name <scsi-options> length <4>
                  value <0x000003f8>.
              name <scsi-watchdog-tick> length <4>
                  value <0x0000000a>.
              name <scsi-tag-age-limit> length <4>
                  value <0x00000008>.
              name <scsi-reset-delay> length <4>
                  value <0x00000bb8>.

     Example 3: PCI Bus

     To achieve the same setting of SCSI-options as  in  instance
     #0   above   on   a   PCI  machine,  create  a  file  called
     /kernel/drv/isp.conf and add the following entries.

     name="isp" parent="/pci@1f,2000/pci@1"
       target3-scsi-options=0x58 scsi-initiator-id=6;

     The physical pathname of the parent can be determined  using
     the  /devices tree or following the link of the logical dev-
     ice name:

     To set scsi-options more specifically per device  type,  add
     the following line in the  /kernel/drv/isp.conf file:

     device-type-scsi-options-list =
         "SEAGATE ST32550W", "seagate-scsi-options" ;
     seagate-scsi-options = 0x58;

     All device which are of this specific disk  type  will  have
     scsi-options set to 0x58.

     scsi-options specified per target ID has  the  highest  pre-
     cedence,  followed  by  scsi-options per device type. Global
     (for all  isp instances) scsi-options per bus has the lowest

     The system needs to be rebooted before the  specified  scsi-
     options take effect.

     Example 4: Driver Capabilities

     The target driver needs to  set  capabilities  in  the   isp
     driver  in  order to enable some driver features. The target
     driver  can query and modify these  capabilities:   synchro-
     nous,  tagged-qing,  wide-xfer, auto-rqsense, qfull-retries,
     qfull-retry-interval. All other  capabilities  can  only  be

     By default, tagged-qing, auto-rqsense, and  wide-xfer  capa-
     bilities  are  disabled,  while disconnect, synchronous, and
     untagged-qing are enabled. These capabilities can only  have
     binary values (0 or 1). The default values for qfull-retries
     and qfull-retry-interval  are  both  10.  The  qfull-retries
     capability  is  a  uchar_t  (0  to  255)  while qfull-retry-
     interval is a ushort_t (0 to 65535).

     The target driver needs to enable  tagged-qing and wide-xfer
     explicitly.  The  untagged-qing capability is always enabled
     and its value cannot be modified,   because  isp  can  queue
     commands even when  tagged-qing is disabled.

     Whenever there is a conflict  between  the  value  of  scsi-
     options and a capability, the value set in scsi-options pre-
     vails. Only whom != 0 is supported in the  scsi_ifsetcap(9F)

     Refer  to  scsi_ifsetcap(9F)  and    scsi_ifgetcap(9F)   for


           ELF Kernel Module

           Configuration file


     See attributes(5) for descriptions of the  following  attri-

    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    | Architecture                | SPARC                       |


     prtconf(1M), driver.conf(4), attributes(5),  scsi_abort(9F),
     scsi_hba_attach(9F),    scsi_ifgetcap(9F),   scsi_reset(9F),
     scsi_transport(9F),                         scsi_device(9S),
     scsi_extended_sense(9S), scsi_inquiry(9S), scsi_pkt(9S)

     Writing Device Drivers

     ANSI Small Computer System Interface-2 (SCSI-2)

     QLogic Corporation, ISP1000 Firmware Interface Specification

     QLogic Corporation, ISP1020 Firmware Interface Specification

     QLogic Corporation, ISP1000 Technical Manual

     QLogic Corporation, ISP1020a/1040a Technical Manual

     QLogic Corporation, Differences between  the  ISP1020a/1040a
     and the ISP1020B/1040B - Application Note


     The messages described below may appear on the  system  con-
     sole as well as being logged.

     The first set of messages may be displayed  while  the   isp
     driver  is  first  trying  to attach.  All of these messages
     mean that the  isp driver was unable to attach.  These  mes-
     sages  are  preceded  by "isp<number>",  where "<number>" is
     the instance number of the  ISP Host Bus Adapter.

          Device in slave-only slot, unused
                The SBus device has been placed in  a  slave-only
                slot  and  will  not  be accessible; move to non-
                slave-only SBus slot.

          Device is using a hilevel intr, unused
                The device was configured with an interrupt level
                that  cannot  be used with this isp driver. Check
                the device.

          Failed to alloc soft state
                Driver was  unable  to  allocate  space  for  the
                internal  state  structure. Driver did not attach
                to device; SCSI devices will be inaccessible.

          Bad soft state
                Driver requested an invalid internal state struc-
                ture.  Driver did not attach to device; SCSI dev-
                ices will be inaccessible.

          Unable to map registers
                Driver was unable to map device registers;  check
                for  bad  hardware. Driver did not attach to dev-
                ice; SCSI devices will be inaccessible.

          Cannot add intr
                Driver was not able to add the interrupt  routine
                to  the  kernel. Driver did not attach to device;
                SCSI devices will be inaccessible.

          Unable to attach
                Driver was unable to attach to the  hardware  for
                some  reason  that may be printed. Driver did not
                attach to device; SCSI devices will be inaccessi-

     The next set of messages can be displayed at any time.  They
     will  be  printed  with the full device pathname followed by
     the shorter form described above.

          Firmware should be < 0x<number> bytes
                Firmware size exceeded allocated space  and  will
                not  download  firmware. This could mean that the
                firmware was corrupted  somehow.  Check  the  isp

          Firmware checksum incorrect
                Firmware has an invalid checksum and will not  be

          Chip reset timeout
                ISP chip failed to reset in the  time  allocated;
                may be bad hardware.

          Stop firmware failed
                Stopping  the  firmware  failed;   may   be   bad

          Load ram failed
                Unable to download  new  firmware  into  the  ISP

          DMA setup failed
                The DMA setup failed in the host  adapter  driver
                on a  scsi_pkt. This will return TRAN_BADPKT to a
                SCSA target driver.

          Bad request pkt
                The ISP Firmware rejected the packet as being set
                up  incorrectly.  This will cause the  isp driver
                to call the target completion  routine  with  the
                reason  of   CMD_TRAN_ERR  set  in the  scsi_pkt.
                Check the target driver for correctly setting  up
                the packet.

          Bad request pkt header
                The ISP Firmware rejected the packet as being set
                up  incorrectly.  This will cause the  isp driver
                to call the target completion  routine  with  the
                reason  of   CMD_TRAN_ERR  set  in the  scsi_pkt.
                Check the target driver for correctly setting  up
                the packet.

          Polled command timeout on <number>.<number>
                A polled command experienced a timeout. The  tar-
                get   device,   as   noted   by  the  target  lun
                (<number>.<number>)  information,  may   not   be
                responding   correctly to the command, or the ISP
                chip may be  hung.   This  will  cause  an  error
                recovery to be initiated in the  isp driver. This
                could mean a bad device or cabling.

          SCSI Cable/Connection problem

          Hardware/Firmware error
                The ISP chip encountered a firmware error of some
                kind.  The  problem  is  probably due to a faulty
                scsi cable or improper  cable  connection.   This
                error  will  cause  the   isp  driver to do error
                recovery by resetting the chip.

          Received unexpected SCSI Reset
                The ISP chip received an  unexpected  SCSI  Reset
                and   has   initiated   its  own  internal  error
                recovery, which will  return  all  the   scsi_pkt
                with reason set to  CMD_RESET.

          Fatal timeout on target <number>.<number>
                The  isp driver found a command that had not com-
                pleted  in  the correct amount of time; this will
                cause error recovery by the  isp driver. The dev-
                ice  that  experienced  the timeout was at target
                lun (<number>.<number>).

          Fatal error, resetting interface
                This is an indication that  the   isp  driver  is
                doing  error  recovery.  This will cause all out-
                standing commands that have been  transported  to
                the  isp driver to be completed via the  scsi_pkt
                completion routine in the target driver with rea-
                son  of   CMD_RESET and status of  STAT_BUS_RESET
                set in the  scsi_pkt.

Man(1) output converted with man2html