Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ dkip(7) — sysv — mips UMIPS RISC/os 4.52

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dvhtool(1M)

prtvtoc(1M)

badspots(1M)

format(1M)

sash(1Mspp)

swap(1M)

dvh(4)

dkio(7)



DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



NAME
     dkip - Interphase SMD disk controller interface

SYNOPSIS
     VECTOR: module=dkip vector=0x80 ipl=1 unit=0 base=0xBD008600
     VECTOR: module=dkip intr=dkipscintr vector=0x81 ipl=1 unit=0
     base=0xBD008600
     VECTOR: module=dkip vector=0x82 ipl=1 unit=1 base=0xBD008800
     VECTOR: module=dkip intr=dkipscintr vector=0x83 ipl=1 unit=1
     base=0xBD008800
     VECTOR: module=dkip vector=0x84 ipl=1 unit=2 base=0xBD008A00
     VECTOR: module=dkip intr=dkipscintr vector=0x85 ipl=1 unit=2
     base=0xBD008A00
     VECTOR: module=dkip vector=0x86 ipl=1 unit=3 base=0xBD008C00
     VECTOR: module=dkip intr=dkipscintr vector=0x87 ipl=1 unit=3
     base=0xBD008C00
     VECTOR: module=dkip vector=0x88 ipl=1 unit=4 base=0xBD007600
     VECTOR: module=dkip intr=dkipscintr vector=0x89 ipl=1 unit=4
     base=0xBD007600
     VECTOR: module=dkip vector=0x8a ipl=1 unit=5 base=0xBD007800
     VECTOR: module=dkip intr=dkipscintr vector=0x8b ipl=1 unit=5
     base=0xBD007800
     VECTOR: module=dkip vector=0x8c ipl=1 unit=6 base=0xBD007A00
     VECTOR: module=dkip intr=dkipscintr vector=0x8d ipl=1 unit=6
     base=0xBD007A00
     VECTOR: module=dkip vector=0x8e ipl=1 unit=7 base=0xBD007C00
     VECTOR: module=dkip intr=dkipscintr vector=0x8f ipl=1 unit=7
     base=0xBD007C00

DESCRIPTION
     This is a driver for all of the  Interphase  SMD  disk  con-
     trollers.   The  3200  controller  is  supported only on the
     M/1000, while the 4200 and 4400 controllers are supported on
     all the other VMEbus based machines.

     The standard device names begin with ``ip''  followed  by  a
     ``c''  and  the controller number (corresponding to the unit
     number specified in the VECTOR field), a ``d'' and the drive
     number  on  that  controller, an ``s'' and the slice (parti-
     tion) number to which that device name corresponds.   Parti-
     tion 6 on drive 0 of controller 4 would be represented as:

          /dev/dsk/ipc4d0s6

     Each device name has a unique  major/minor  number  combina-
     tion.   Since  only 256 minor numbers are supported for each
     major number, only 16 drives with 16 partitions on each  can
     exist.   Since  up  to  eight controllers are supported, and
     with the 4400 disk controllers there can  be  4  drives  per
     controller,  32  drives can be addressed.  This requires two
     major numbers.  Controllers  0-3  are  accessed  with  major
     number 4, and controllers 4-7 are accessed with major number



                         Printed 1/28/91                   Page 1





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     9.  To make the minor number consistent among the three con-
     troller  types  (3200,  4200 and 4400), the scheme for minor
     numbering assumes that there are 4  drives  per  controller.
     When  using  3200  or  4200  controllers,  an  error will be
     returned when trying to access drives 2 and 3.

     Block files access the disk via the system's normal  buffer-
     ing  mechanism and may be read and written without regard to
     physical disk records.  There is also a "raw" interface that
     provides  for  direct  transmission between the disk and the
     user's read or write buffer.  The names  of  the  raw  files
     conventionally  are  prepended  with an `r' before the `dsk'
     component of the name.

     In raw I/O, buffers should be page aligned and the  transfer
     size  should  be  a  page multiple for best performance.  If
     they aren't, the driver assumes that the data transfer could
     cross  a physical page, and since direct memory access (dma)
     can't occur over page boundaries, the  driver  will  use  an
     intermediate  buffer  that is guaranteed not to cross a page
     boundary.  This is obviously  less  efficient.   I/O  counts
     should be a multiple of 512 bytes (a disk sector).  Likewise
     seek calls must specify a multiple of 512 bytes.  The driver
     allows  transfers  of  less than 512 bytes (not recommended,
     but  necessary  for  backwards   compatibility),   but   all
     transfers must start on a sector boundary.

     In general, I/O through the block device is  more  efficient
     if the amount of data to transfer is 8k or less.  Of course,
     all I/O that requires asynchronous transfers  must  be  done
     with raw i/o, since the system's buffering mechanism doesn't
     write to the disk immediately.

     Disk volumes on MIPS  computers  systems  contain  a  volume
     header  that  describes the contents of the disk and parame-
     ters of the physical disk drive.  The  volume  header  is  a
     block  located  at the beginning of all disk media.  It con-
     tains information about physical device parameters and logi-
     cal  partition  information.  Refer to dvh(4) for details on
     the disk volume header format.  Volume headers  are  created
     by  formatters and may be manipulated by dvhtool(1M) via the
     drive's  volume  header  partition,  specified   by   either
     /dev/dsk/ipc?d?vh or /dev/rdsk/ipc?d?vh.

DISK SUPPORT
     The first drive on the first controller usually contains the
     root  partition.   There  is a standard way these drives are
     partitioned.  ``ipc0d0s8'' contains the volume  header,  the
     defect  map,  and  sash (see sash(1Mspp).  ``ipc0d0s9'' con-
     tains all of the mapped tracks that are used when tracks  on
     other  parts  of the disk are bad.  Accessing this partition
     directly may result in ``sector  not  found''  errors  being



 Page 2                  Printed 1/28/91





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     reported,  since  the  sectors  have already been re-mapped.
     These two partitions together make up  ``ipc0d0vh''.  Physi-
     cally next on the drive is ``ipc0d0s0'', the root (/) parti-
     tion, followed by ``ipc0d0s6'' the /usr partition.  The next
     partition, ``ipc0d0s7'', isn't assigned to anything, and can
     be added as another swap partition. Refer  to  swap(1M)  for
     details   on   how   to   do  this.   The  final  partition,
     ``ipc0d0s1'', is the main swap partition.

     For subsequent drives, the volume header partition  can  not
     be  used.  The largest accessible partition is ``ipc?d?s2''.
     Running the command prtvtoc(1M) will show the layouts of the
     filesystems.   When determining which filesystems to create,
     the output of this command should be  referenced  to  insure
     that no two filesystems don't overlap.

FILES
     /dev/dsk/ipc[0-7]d[0-3]s[0-15]
     /dev/rdsk/ipc[0-7]d[0-3]s[0-15]
     /dev/dsk/ipc[0-7]d[0-3]vh
     /dev/rdsk/ipc[0-7]d[0-3]vh

DIAGNOSTICS
     If the ``showconfig'' option has  been  specified  when  the
     kernel  was  booted,  some  diagnostic  information  will be
     displayed as the kernel goes through initialization.

     ipc%d: controller not present
          The driver did not find this controller in the machine.
          If  that  controller is actually installed, it could be
          that the switch  settings  are  incorrect,  the  VMEbus
          jumpers  are  installed incorrectly, or the board isn't
          seated properly.

     ipc%d: reset failed
          The reset command failed.  This command is sent to each
          controller  as  the  system  initializes.  This usually
          indicates a faulty board.

     ipc%d: can't get controller info
          During initialization, a command is sent to  each  con-
          troller  to  determine  the  type of controller and the
          revision level of the proms.  This message  is  printed
          if that command fails.  This usually indicates a faulty
          board.

     ipc%dd%d: volume header contains bad parameters
          During system initialization, the volume header is read
          in  using  a  set  of default parameters.  Once a valid
          volume header is read in, the drive is  then  reconfig-
          ured  with  the  parameters  specified  in  the  volume
          header. This message indicates that an  error  occurred



                         Printed 1/28/91                   Page 3





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



          when reconfiguring the drive.

     ipc%d: spurious interrupt
          This indicates that somehow the controller received  an
          interrupt  before it was initialized.  These interrupts
          are ignored.

     ipc%dd%d: cyl/head/sec, X:1 interleave
          Once the drive  had  been  reconfigured,  this  message
          prints out the drive configuration that was used.

     CONTROLLER: [ctype] ipc%d:prom id [rlvl] [prdata] [cenable]
          This is printed out for each controller that  has  been
          configured during initialization.
          ctype - Controller type.  This will be one of:
             Interphase V/SMD 3200
             Interphase Cheetah 4200
             Interphase Phoenix 4400

          rlvl - Controller firmware revision level.
          prdata - The date that the firmware was released.

          cenable - The functionality enabled or disabled on this
          controller.
             no scatter gather -  The  firmware  doesn't  support
             scatter  gather operations.  This feature is used in
             many instances to combine operations and to  support
             transfer   over   page   boundaries.   Upgrading  to
             firmware  that  supports  scatter/gather  operations
             will increase performance.

             no cache - The controller  doesn't  contain  any  on
             board  cache.  This cache also increases performance
             when it is in use.
             MACSI - This is an interface to  certain  4200  con-
             trollers  (rlvl  at 040 or later), and all 4400 con-
             trollers.  Its main benefit is that it allows multi-
             ple  commands  to  be  active at the same time.  The
             feature also increases performance.

             overlapped seeks - This feature makes it possible to
             seek  to  the  correct  cylinder on one drive, while
             doing the data transfer on another.
             sorting - Since controllers with the  MACSI  feature
             have multiple commands active, it has the capability
             to sort those commands.  MIPS  doesn't  enable  this
             feature, since the sorting algorithm doesn't have an
             consideration for  fairness  built  into  it.   This
             sometimes allows for the current process to throttle
             the  controller,  and  other  processes  to   become
             starved.

             auto restore - When  a  driver  fault  occurs,  this



 Page 4                  Printed 1/28/91




DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



             feature  automatically performs a drive restore.  If
             the  restore  command  doesn't  complete  within   3
             seconds, an error message will be printed.

             Four-Unit mode - This controller supports  up  to  4
             drives.   This  usually means that is it a 4400 con-
             troller.  However, all controllers  with  the  MACSI
             feature  enabled  must  be  in  Four-Unit  mode. The
             driver will check if it is a  4200  controller,  and
             even  if  is  set  to  be in Four-Unit mode, it will
             still disallow requests of drives two and  three  on
             that controller.
             Two-Unit mode - This controller  supports  up  to  2
             drives.

ERROR MESSAGES
     The controller reports both exceptions and  errors.   Excep-
     tions  are  errors  from  which  the  controller was able to
     recover.  There are three types of exceptions

was applied. chs=%d/%d/%d
     ipc%dd%ds%d : Command completed successully after ECC  correction
          The  data  read  from  the  disk was bad, but was fixed
          using ECC correction.

& recal.  chs=% d/%d/%d
     ipc%dd%ds%d : Command completed successfully after drive  restore
          If  restoring  and  recalibrating  the  drive corrected
          whatever problem was found, this  message  is  printed.
          This usually occurs when the disk returns a seek error.
          These messages should be investigated, since  restoring
          and  recalibrating a drive can take up to 3 seconds and
          thus greatly affect performance.

pleted successfully. chs=%d/%d/%d
     ipc%dd%ds%d : %d controller retries attempted before command com-
          In addition to the driver retrying each command 3 times
          before returning an error to a program, the  controller
          will  retry  each  command  up  to  three  times before
          returning an error to the driver.   If  any  controller
          retries were necessary before the command could be com-
          pleted successfully, this message is displayed.

     Whenever the controller reports an error, a  brief  descrip-
     tion  is  printed, along with the first cylinder/head/sector
     of the request.   For some error types, like DMA errors, the
     memory  address  of  the buffer is also printed.  These mes-
     sages are printed in different  forms  depending  upon  when
     they occur.

chs=%d/%d/%d
     ipc%dd%ds%d : Error during system initialization -



                         Printed 1/28/91                   Page 5





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



            [error  type]
          While the system is booting, it will probe to find  out
          which controllers and how many disks are installed, and
          if each disk has a valid volume header.   This  message
          will  print  if  any errors occur during that time.  If
          the drive isn't connected, the message will be:
          ipc%dd%ds%d : Error during system initialization - unit
          not selected chs=0/0/0.
          All other  messages  should  be  investigated,  and  so
          should  this  if it's printed for a drive that actually
          is installed.

     ipc%dd%ds%d : Retrying... [error type] chs=%d/%d/%d.
          The driver will retry each command up to 3 times before
          returning  an  error  to a program.  If an error occurs
          before  the  maximum  number  of   retries   has   been
          exhausted, this message will be printed.

chs=%d/%d/%d.
     ipc%dd%ds%d  :  Hard  error  after  3  retries  -
            [error   type]
          After 3 retries, the driver will return an error to the
          calling  program.  These hard errors should be investi-
          gate.  Refer to the following section  on  ERROR  TYPES
          for possible causes and solutions for each error type.

     Please note that the cyl/hd/sec is the first sector  of  the
     request.   Most requests through the file system are done 8K
     at a time.  This is 16-512  byte  sectors.   The  controller
     doesn't report the exact sector that contained the error; it
     just  reports  that  during  the  last  transfer,  an  error
     occurred.   To  be  sure  that the defect is mapped out, run
     badspots(1M) in manual mode and scan  that  portion  of  the
     disk.

ERROR TYPES
   disk not ready
     This occurs when there is an  attempt  to  access  the  disk
     before  it  has  come ready.  This shouldn't happen once the
     system is booted, unless there is a problem  with  the  disk
     itself.

   seek error
     If the controller cannot find the requested sector  of  data
     within  two revolutions, it will try to verify that the head
     is on the right track by reading several  sectors.   If  the
     cylinder  number in the sector is incorrect, this error type
     is printed.  These errors are usually cleared by  a  restore
     and  recalibrate  command, so they often appear as a command
     retry.  These errors cannot be cleared by  mapping  out  the
     sector reported in the error message.




 Page 6                  Printed 1/28/91





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



   ECC error in data field
     This error should only occur when ECC correction  is  turned
     off  via the DIONOECC ioctl function call.  It occurs if the
     computed ECC of the data did not agree with the ECC appended
     to  the  data field on the disk.  This may also be caused by
     the Gap 2 field, used when formatting the  disk,  not  being
     properly  set.   Mapping out this sector or reformatting the
     track in which it's contain should prohibit this error  from
     occuring.

   invalid command code
     The command code sent to the controller was valid.  This  is
     an internal driver error.

   illegal fetch and execute
     This error indicates that a Fetch and Execute  IOPB  command
     was  encountered  in  a place other than in the controller's
     memory.  Since the driver doesn't use Fetch and Execute IOPB
     commands, this shouldn't occur.

   invalid sector in command
     The sector number was greater than the capacity of the drive
     that  was  specified  while  formatting the disk.  Check the
     volume header for a valid sectors per track parameter.

   illegal memory type
     The memory type specified in the command block was  invalid.
     This is an internal driver error.

   bus timeout
     This error indicates that bus acquisition was not  completed
     with 100 milliseconds of a request.  This error is typically
     caused by either a non-existant address or incorrect command
     set up by the driver.

   header checksum error
     This indicates that there was an error in the  header  field
     on the disk.  The data on the disk has been corrupted.  This
     can likely be fixed by mapping out this sector on the  disk,
     but  may  require  reformatting the track in which it's con-
     tained.

   disk write protected
     This error occurs when attempts are made to write to a  disk
     that has the write protect switch turned on.

   unit not selected
     This error occurs when the controller sends a signal to  the
     drive,  and the drive fails to respond.  This usually occurs
     upon system initialization when a drive  is  not  connected,
     but  can  also occur if the unit switch setting on the drive
     is incorrect, the drive is not powered  up,  or  the  cables



                         Printed 1/28/91                   Page 7





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     aren't properly connected.

   seek error timeout
     This occurs when a Restore and Recalibrate command failed to
     correct  a  seek  error from the drive within 3 seconds.  If
     this error messages is printed, check to make sure that  tha
     B-cable is connected correctly.

   fault timeout
     This error occurs when a Clear  Drive  Fault  command  or  a
     Restore  and  Recalibrate  command failed to correct a drive
     fault condition from the drive within 3  seconds.   If  this
     error  messages  is  printed, check to make sure that tha B-
     cable is connected correctly.

   drive faulted
     This indicates that a fault condition exists on the selected
     drive.   This  error occurs when the drive tries to access a
     nonexistent head or cylinder.  Check to make sure  that  the
     drive has been formatted with the correct parameters.

   ready timeout
     This occurs when a Restore and Recalibrate command failed to
     bring  the  unit ready within 3 seconds.  If this error mes-
     sage is printed, check to make sure that tha B-cable is con-
     nected correctly.

   end of medium
     This indicates that multi-sector transfer exceeded  the  end
     of media.

   translation fault
     This fault indicates that the drive was initialized as  hav-
     ing  zero  heads.  Check to make sure that the volume header
     contains the correct information.

   invalid header pad
     This error indicates that the drive was  formatted  with  an
     improper  Gap  2.   The  value  for  Gap  2  will need to be
     changed, and the drive must be reformatted.

   uncorrectable error
     When this error is posted, error correction was attempted on
     the user-data field and the error was found to be uncorrect-
     able.  This sector should be mapped out, or the entire track
     should be reformatted.

   cylinder translation error
     This indicates that the  translation  of  a  logical  sector
     resulted in a bad cylinder number.  If the drive was format-
     ted correctly, then this indicates an internal driver error.




 Page 8                  Printed 1/28/91





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



   head translation error
     This indicates that the  translation  of  a  logical  sector
     resulted  in  a bad head number.  If the drive was formatted
     correctly, then this indicates an internal driver error.

   sector translation error
     This indicates that the  translation  of  a  logical  sector
     resulted  in  a bad head sector.  If the drive was formatted
     correctly, then this indicates an internal driver error.

   data overrun
     This indicates a data timeout error.  It is generally caused
     by  a missing signal on the B-cable, so make sure that it is
     connected correctly.

   no index pulse on format
     During a format operation,  the  controller  looks  for  the
     index  pulse  from the disk drive.  If it's not found within
     65 milliseconds, this error is posted.

   sector not found
     If the target sector cannot be found during a read or  write
     operation, this error type is printed.  This typically means
     that one of the following:  there is a  bad  sector  on  the
     disk;  a track is improperly formatted; or Gap 1 was not set
     correctly.

   id field error - wrong head
     This error occurs if the head number read  from  the  disk's
     header field was wrong.  This sector should either be mapped
     out, or the track must be reformatted.

   invalid sync in data field
     This indicates that the first word read after Gap 2 was  not
     a  valid  sync field.  This occurs when either the track was
     improperly formatted, or there's a bad sector on the disk.

   no valid header found
     This indicates that during the Read Header command, no valid
     header  was  found.   After checking every sector, including
     the runt sector and short sector, every header was  invalid.
     This  error  is  usually  posted when a attempting to read a
     disk that has not been formatted for use with the Interphase
     controller.

   seek timeout error
     If issued, this error indicates that a seek was made and the
     drive  did not return an "on-cylinder" indication within 600
     milliseconds.

   busy timeout
     This error occurs when using a  dual-ported  drive  and  the



                         Printed 1/28/91                   Page 9





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     BUSY  signal  from  the A-cable was active for more than 600
     milliseconds.  This error indicates that  one  of  the  con-
     troller has held the drive for too long.  Dual-ported drives
     are not yet supported, so this error should never occur.

   not on cylinder
     This error messages is printed  if  the  drive  is  not  on-
     cylinder within three seconds after being selected.

   rtz timeout
     This error occurs when a Restore and Recalibrate command was
     executed  but  a normal completion did not occur withing the
     specified timeout period.

   invalid sync in header
     This error occurs if the controller  encounters  an  invalid
     sync  character  in  a  sector's  header field.  This sector
     should be mapped out or the track should be reformatted.

   incorrect UIB skew factor
     This error occurs if the spiral skew factor  specified  when
     formatting  the disk exceeds the sectors per track parameter
     (plus any spares).  Check that the spiral skew field in  the
     volume header is correct.

   unit not initialized
     This error indicates that a  write  or  format  command  was
     attempted  on a unit that has not been initialized.  This is
     an internal driver error.

   gap spec error
     This error occurs when the size of either Gap 1 or Gap 2  is
     less  than 6 or greater than 32.  Check these entries in the
     device parameter entries in the volume header.

   drive seek error
     The disk drive has reported  a  seek  error.   This  usually
     indicates  a  problem  with  the disk, and can't be fixed by
     mapping out the block number specified in the error message.

   sectors per track spec error
     This indicates that the sectors per track  parameter  speci-
     fied  when  formatting  the disk is either 0 or greater than
     160.

   bytes per sector spec error
     This indicates that the bytes per sector parameter specified
     when  formatting the disk is either less than 256 or greater
     than 4096.

   interleave spec error
     If this error occurs,  the  interleave  parameter  specified



 Page 10                 Printed 1/28/91





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     when  formatting  the  disk  os either 0 or greater than the
     sectors per track parameter.

   invalid head address
     The head number exceeded the capacity of the  drive.   Check
     the  volume  header  to  make  sure  that  it  was formatted
     correctly.

   invalid cylinder address
     The cylinder number exceeded  the  capacity  of  the  drive.
     Check  the  volume header to make sure that it was formatted
     correctly.

   zero sector count
     The number of sectors to either read or write was  specified
     as zero. This is an internal driver error.

   invalid dma transfer count
     The specified DMA transfer count caused  the  controller  to
     attempt  to  transfer  an  odd  number  of  bytes.  All data
     transfers must be either  word  or  longword.   This  is  an
     internal driver error.

   iopb failed
     A VMEbus error occurred during a  transfer  initiated  by  a
     linked  IOPB.   The block number specified in the error mes-
     sage idicates the starting address on which  the  bus  error
     occurred.   Since linked IOPBs are not supported, this error
     should not occur.

   dma failed
     The error indicates that a VMEbus error occurred during  the
     DMA  transfer of data to or from the buffer in memory or the
     bus.  The buffer address printed in the error message points
     to  the start of the sector block in system memory where the
     error occurred.  The block number printed points to the disk
     location  where  the  disk  transfers  were  when  the error
     occurred.  This indicates a software  programming  error  of
     some kind.

   illegal vme address
     For 16-bit transfers, the buffer address must fall on a word
     boundary  (even  address,  multiple  of  two).   For  32-bit
     transfers, the buffer address must fall on a longword  boun-
     dary.

   unrecognized header field
     During a read or  verify  operation,  one  or  more  of  the
     requested  headers  were not found.  This error differs from
     the Sector not found error in that one or more headers  were
     ignored  because  of  invalid sync, checksum, or post-header
     pad fields.  Possible causes  include  unformatted  sectors,



                         Printed 1/28/91                  Page 11





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     Gap   1   being   too  small  or  the  drive  was  formatted
     incorrectly.

   mapped header error
     This indicates that the first byte of the  header  indicates
     that  it's  a  mapped  sector  or track, but the rest of the
     header is unrecognizable.  This could be  due  to  the  same
     reasons as the previous error type.

   mapped sector number
     This error indicates that the sector number to be mapped  is
     beyond  the  end  of  the track.  This sector number must be
     less than the number of sectors per track specified at  for-
     mat  time.   Make  sure  that the volume header contains the
     correct information.

   no spare sector enabled
     A Map Sector command was issued and the UIB did not  specify
     the  spare  sector  mapping.   Since format(1M) supports the
     Slip Sector command instead of the Map Sector command,  this
     error should never occur.

   command aborted
     This indicates that the controller received and serviced the
     Abort  bit.  This is never used in the driver, so this error
     should never occur.

   acfail detected
     This indicates that the controller detected an active VMEbus
     ACFAIL*  control  signal.  This error requires that the con-
     troller be reset before normal operation can continue.

   S/G list too large
     The scatter/gather list cannot be  larger  than  the  sector
     size  specified  in the bytes per sector field of the volume
     header.  If this value in the volume header is correct, then
     this indicates an internal driver error.

   Illegal element byte count
     For scatter/gather commands, the byte count for  each  entry
     in the list must be a multiple of the bytes per sector field
     in the volume header.  This  is  an  internal  driver  error
     indicating  that  one of the entries in the list contains an
     invalid count.

   Bad element address
     This is an internal error indicating that the driver  issued
     a scatter/gather command containing a scatter/gather element
     whose address is not on a word boundary.

   Illegal entry count
     The number  of  entries  for  the  scatter/gather  list  was



 Page 12                 Printed 1/28/91





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     illegally specified as zero by the driver.

   Illegal element size
     The driver must specify that all scatter/gather elements  as
     an  even  number  of  bytes.  The controller cannot transfer
     less than a word; therefore, if an element contains  an  odd
     number of bytes, this error will occur.

   Illegal list byte count
     The total bytes  count  specified  by  the  driver  for  the
     scatter/gather list must be an integer multiple of the bytes
     per sector parameter specified in the  volume  header.   The
     controller  will  not complete a scatter or a gather command
     with partial sectors, and this error will be returned.

   Illegal IOPB sector count
     The Sector Count parameter specified by the  driver  in  the
     IOPB  does  not  agree with the total bytes specified in the
     scatter/gather list.

   Illegal element count
     The Entry Count field cannot be zero for the  scatter/gather
     commands

   Both bits set
     This error type will be printed if  both  the  Spare  Sector
     enable bit, and the Multiple Spare Enable bit are set in the
     device parameters portion of the volume header.  This is  an
     internal driver error.

   MSE without Initialize Long
     This error type is printed if the Multiple Spare Enable  bit
     is  set and the unit was not initialized with the Initialize
     Long command.  Since Multiple Spare Enable is not supported,
     this error should never occur.

   Write Delay
     The controller supports the option of  delaying  writing  to
     the  drive  for a specified number of sectors during a zero-
     latency operation.  If  this  number  is  greater  than  the
     number  of sectors per track specified in the volume header,
     then this error is printed.  This feature  isn't  supported,
     so this error should never occur.

   Already in MACSI mode
     The GO TO MACSI MODE command was issued when the  controller
     was  already  in  MACSI  mode.   This  indicates an internal
     driver error.

   Bad CIB offset
     The address specified by the driver in the  Controller  Ini-
     tialization  Block  is  invalid.   This  address  cannot  be



                         Printed 1/28/91                  Page 13





DKIP(7-SysV)        RISC/os Reference Manual         DKIP(7-SysV)



     0x00000000.

   Illegal number of CQEs
     The number of Command Queue Entries must be greater  than  0
     and less than 9.  This is an internal driver error.

   MACSI mode required
     The command specified in the driver can only be run in MACSI
     mode.

   MACSI IOPB size invalid
     The IOPB length must be greater than  0  and  less  than  9.
     This is an internal driver error.

   Illegal number of Work Queue entries
     The number of Work Queue entries must be greater than 0  and
     less than 65.

   Mapped Header encountered
     A mapped bad header was encountered on  the  current  track.
     If this error occurs, the controller must be reset.

   No Write List
     No list was available to start a gather operation.  This  is
     an internal driver error.  If it occurs, the controller must
     be reset.

   No Write Buffers
     No write buffers were  available  for  a  gather  operation.
     This  is  an  internal driver error.  If it occurs, the con-
     troller must be reset.

   Out of Buffers
     All of the buffers were full before gathered data  could  be
     transferred.   This  is  an  internal  driver  error.  If it
     occurs, the controller must be reset.

   Command not implemented
     The command issued will be supported  in  a  later  release.
     This  is  an  internal driver error.  If it occurs, the con-
     troller must be reset.

BUGS
     The block number reported in error is the first block of the
     transfer, and not necessarily the exact block in error.

SEE ALSO
     dvhtool(1M),    prtvtoc(1M),    badspots(1M),    format(1M),
     sash(1Mspp), swap(1M).
     dvh(4), dkio(7) in the Programmer's Reference Manual.





 Page 14                 Printed 1/28/91



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026