Annotation of 43BSDTahoe/man/man4/vax/uda.4, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980, 1987 Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"    @(#)uda.4       6.5 (Berkeley) 6/13/88
                      6: .\"
                      7: .TH UDA 4 "June 13, 1988"
                      8: .UC 4
                      9: .SH NAME
                     10: uda \- UDA50 disk controller interface
                     11: .SH SYNOPSIS
                     12: .B "controller uda0 at uba0 csr 0172150 vector udintr"
                     13: .br
                     14: .B "disk ra0 at uda0 drive 0"
                     15: .br
                     16: .B "options MSCP_PARANOIA"
                     17: .SH DESCRIPTION
                     18: This is a driver for the DEC UDA50 disk controller and other
                     19: compatible controllers.  The UDA50 communicates with the host through
                     20: a packet protocol known as the Mass Storage Control Protocol (MSCP).
                     21: Consult the file
                     22: .RI < vax/mscp.h >
                     23: for a detailed description of this protocol.
                     24: .PP
                     25: Files with minor device numbers 0 through 7 refer to various portions
                     26: of drive 0; minor devices 8 through 15 refer to drive 1, etc.  The
                     27: standard device names begin with `ra' followed by the drive number
                     28: and then a letter a-h for partitions 0-7 respectively.
                     29: The character ? stands here for a drive number in the range 0-7.
                     30: .PP
                     31: The block files access the disk via the system's normal buffering
                     32: mechanism mechanism and may be read and written without regard to
                     33: physical disk records.  There is also a `raw' interface which provides
                     34: for direct transmission between the disk and the user's read or write
                     35: buffer.  A single read or write call results in exactly one I/O
                     36: operation and therefore raw I/O is considerably more efficient when
                     37: many words are transmitted.  The names of the raw files conventionally
                     38: begin with an extra `r'.
                     39: .PP
                     40: In raw I/O counts should be a multiple of 512 bytes (a disk sector).
                     41: Likewise
                     42: .I seek
                     43: calls should specify a multiple of 512 bytes.
                     44: .PP
                     45: The
                     46: .B MSCP_PARANOIA
                     47: option enables runtime checking on all transfer completion responses
                     48: from the controller.  This increases disk I/O overhead and may
                     49: be undesirable on slow machines, but is otherwise recommended.
                     50: .PP
                     51: The first sector of each disk contains both a first-stage bootstrap program
                     52: and a disk label containing geometry information and partition layouts (see
                     53: .IR disklabel (5).
                     54: This sector is normally write-protected, and disk-to-disk copies should
                     55: avoid copying this sector.
                     56: The label may be updated with
                     57: .IR disklabel (8),
                     58: which can also be used to write-enable and write-disable the sector.
                     59: The next 15 sectors contain a second-stage bootstrap program.
                     60: .SH "DISK SUPPORT"
                     61: During autoconfiguration,
                     62: as well as when a drive is opened after all partitions are closed,
                     63: the first sector of the drive is examined for a disk label.
                     64: If a label is found, the geometry of the drive and the partition tables
                     65: are taken from it.
                     66: If no label is found,
                     67: the driver configures the type of each drive when it is first
                     68: encountered.  A default partition table in the driver is used for each type
                     69: of disk when a pack is not labelled.  The origin and size
                     70: (in sectors) of the default pseudo-disks on each
                     71: drive are shown below.  Not all partitions begin on cylinder
                     72: boundaries, as on other drives, because previous drivers used one
                     73: partition table for all drive types.  Variants of the partition tables
                     74: are common; check the driver and the file
                     75: .IR /etc/disktab ( disktab (5))
                     76: for other possibilities.
                     77: .PP
                     78: .nf
                     79: .ta .5i +\w'000000    'u +\w'000000    'u +\w'000000    'u +\w'000000    'u
                     80: .PP
                     81: RA60 partitions
                     82:        disk    start   length
                     83:        ra?a    0       15884
                     84:        ra?b    15884   33440
                     85:        ra?c    0       400176
                     86:        ra?d    49324   82080   same as 4.2BSD ra?g
                     87:        ra?e    131404  268772  same as 4.2BSD ra?h
                     88:        ra?f    49324   350852
                     89:        ra?g    242606  157570
                     90:        ra?h    49324   193282
                     91: .PP
                     92: RA70 partitions
                     93:        disk    start   length
                     94:        ra?a    0       15884
                     95:        ra?b    15972   33440
                     96:        ra?c    0       547041
                     97:        ra?d    34122   15884
                     98:        ra?e    357192  55936
                     99:        ra?f    413457  133584
                    100:        ra?g    341220  205821
                    101:        ra?h    49731   29136
                    102: .PP
                    103: RA80 partitions
                    104:        disk    start   length
                    105:        ra?a    0       15884
                    106:        ra?b    15884   33440
                    107:        ra?c    0       242606
                    108:        ra?e    49324   193282  same as old Berkeley ra?g
                    109:        ra?f    49324   82080   same as 4.2BSD ra?g
                    110:        ra?g    49910   192696
                    111:        ra?h    131404  111202  same as 4.2BSD
                    112: .PP
                    113: RA81 partitions
                    114:        disk    start   length
                    115:        ra?a    0       15884
                    116:        ra?b    16422   66880
                    117:        ra?c    0       891072
                    118:        ra?d    375564  15884
                    119:        ra?e    391986  307200
                    120:        ra?f    699720  191352
                    121:        ra?g    375564  515508
                    122:        ra?h    83538   291346
                    123: .PP
                    124: RA81 partitions with 4.2BSD-compatible partitions
                    125:        disk    start   length
                    126:        ra?a    0       15884
                    127:        ra?b    16422   66880
                    128:        ra?c    0       891072
                    129:        ra?d    49324   82080   same as 4.2BSD ra?g
                    130:        ra?e    131404  759668  same as 4.2BSD ra?h
                    131:        ra?f    412490  478582  same as 4.2BSD ra?f
                    132:        ra?g    375564  515508
                    133:        ra?h    83538   291346
                    134: .PP
                    135: RA82 partitions
                    136:        disk    start   length
                    137:        ra?a    0       15884
                    138:        ra?b    16245   66880
                    139:        ra?c    0       1135554
                    140:        ra?d    375345  15884
                    141:        ra?e    391590  307200
                    142:        ra?f    669390  466164
                    143:        ra?g    375345  760209
                    144:        ra?h    83790   291346
                    145: .DT
                    146: .fi
                    147: .PP
                    148: The ra?a partition is normally used for the root file system, the ra?b
                    149: partition as a paging area, and the ra?c partition for pack-pack
                    150: copying (it maps the entire disk).
                    151: .SH FILES
                    152: /dev/ra[0-9][a-f]
                    153: .br
                    154: /dev/rra[0-9][a-f]
                    155: .SH SEE ALSO
                    156: disklabel(5), disklabel(8)
                    157: .SH DIAGNOSTICS
                    158: .TP
                    159: panic: udaslave
                    160: No command packets were available while the driver was looking
                    161: for disk drives.  The controller is not extending enough credits
                    162: to use the drives.
                    163: .TP
                    164: uda%d: no response to Get Unit Status request
                    165: A disk drive was found, but did not respond to a status request.
                    166: This is either a hardware problem or someone pulling unit number
                    167: plugs very fast.
                    168: .TP
                    169: uda%d: unit %d off line
                    170: While searching for drives, the controller found one that
                    171: seems to be manually disabled.  It is ignored.
                    172: .TP
                    173: uda%d: unable to get unit status
                    174: Something went wrong while trying to determine the status of
                    175: a disk drive.  This is followed by an error detail.
                    176: .TP
                    177: uda%d: unit %d, next %d
                    178: This probably never happens, but I wanted to know if it did.  I
                    179: have no idea what one should do about it.
                    180: .TP
                    181: uda%d: cannot handle unit number %d (max is %d)
                    182: The controller found a drive whose unit number is too large.
                    183: Valid unit numbers are those in the range [0..7].
                    184: .TP
                    185: ra%d: don't have a partition table for %s; using (s,t,c)=(%d,%d,%d)
                    186: The controller found a drive whose media identifier (e.g. `RA 25')
                    187: does not have a default partition table.  A temporary partition
                    188: table containing only an `a' partition has been created covering
                    189: the entire disk, which has the indicated numbers of sectors per
                    190: track (s), tracks per cylinder (t), and total cylinders (c).
                    191: Give the pack a label with the
                    192: .I disklabel
                    193: utility.
                    194: .TP
                    195: uda%d: uballoc map failed
                    196: Unibus resource map allocation failed during initialisation.  This
                    197: can only happen if you have 496 devices on a Unibus.
                    198: .TP
                    199: uda%d: timeout during init
                    200: The controller did not initialise within ten seconds.  A hardware
                    201: problem, but it sometimes goes away if you try again.
                    202: .TP
                    203: uda%d: init failed, sa=%b
                    204: The controller refused to initalise.
                    205: .TP
                    206: uda%d: controller hung
                    207: The controller never finished initialisation.  Retrying may sometimes
                    208: fix it.
                    209: .TP
                    210: ra%d: drive will not come on line
                    211: The drive will not come on line, probably because it is spun down.
                    212: This should be preceded by a message giving details as to why the
                    213: drive stayed off line.
                    214: .TP
                    215: uda%d: still hung
                    216: When the controller hangs, the driver occasionally tries to reinitialise
                    217: it.  This means it just tried, without success.
                    218: .TP
                    219: panic: udastart: bp==NULL
                    220: A bug in the driver has put an empty drive queue on a controller queue.
                    221: .TP
                    222: uda%d: command ring too small
                    223: If you increase NCMDL2, you may see a performance improvement.
                    224: (See /sys/vaxuba/uda.c.)
                    225: .TP
                    226: panic: udastart
                    227: A drive was found marked for status or on-line functions while performing
                    228: status or on-line functions.  This indicates a bug in the driver.
                    229: .TP
                    230: uda%d: controller error, sa=0%o (%s)
                    231: The controller reported an error.  The error code is printed in
                    232: octal, along with a short description if the code is known (see the
                    233: .IR "UDA50 Maintenance Guide" ,
                    234: DEC part number AA-M185B-TC, pp. 18-22).
                    235: If this occurs during normal
                    236: operation, the driver will reset it and retry pending I/O.  If
                    237: it occurs during configuration, the controller may be ignored.
                    238: .TP
                    239: uda%d: stray intr
                    240: The controller interrupted when it should have stayed quiet.  The
                    241: interrupt has been ignored.
                    242: .TP
                    243: uda%d: init step %d failed, sa=%b
                    244: The controller reported an error during the named initialisation step.
                    245: The driver will retry initialisation later.
                    246: .TP
                    247: uda%d: version %d model %d
                    248: An informational message giving the revision level of the controller.
                    249: .TP
                    250: uda%d: DMA burst size set to %d
                    251: An informational message showing the DMA burst size, in words.
                    252: .TP
                    253: panic: udaintr
                    254: Indicates a bug in the generic MSCP code.
                    255: .TP
                    256: uda%d: driver bug, state %d
                    257: The driver has a bogus value for the controller state.  Something
                    258: is quite wrong.  This is immediately followed by a `panic: udastate'.
                    259: .TP
                    260: uda%d: purge bdp %d
                    261: A benign message tracing BDP purges.  I have been trying to figure
                    262: out what BDP purges are for.  You might want to comment out this
                    263: call to log() in /sys/vaxuba/uda.c.
                    264: .TP
                    265: .RI "uda%d: SETCTLRC failed: " detail
                    266: The Set Controller Characteristics command (the last part of the
                    267: controller initialisation sequence) failed.  The
                    268: .I detail
                    269: message tells why.
                    270: .TP
                    271: .RI "uda%d: attempt to bring ra%d on line failed: " detail
                    272: The drive could not be brought on line.  The
                    273: .I detail
                    274: message tells why.
                    275: .TP
                    276: uda%d: ra%d: unknown type %d
                    277: The type index of the named drive is not known to the driver, so the
                    278: drive will be ignored.
                    279: .TP
                    280: ra%d: changed types! was %d now %d
                    281: A drive somehow changed from one kind to another, e.g., from an RA80
                    282: to an RA60.  The numbers printed are the encoded media identifiers (see
                    283: .RI < vax/mscp.h >
                    284: for the encoding).
                    285: The driver believes the new type.
                    286: .TP
                    287: ra%d: uda%d, unit %d, size = %d sectors
                    288: The named drive is on the indicated controller as the given unit,
                    289: and has that many sectors of user-file area.  This is printed
                    290: during configuration.
                    291: .TP
                    292: .RI "uda%d: attempt to get status for ra%d failed: " detail
                    293: A status request failed.  The
                    294: .I detail
                    295: message should tell why.
                    296: .TP
                    297: ra%d: bad block report: %d
                    298: The drive has reported the given block as bad.  If there are multiple
                    299: bad blocks, the drive will report only the first; in this case this
                    300: message will be followed by `+ others'.  Get DEC to forward the
                    301: block with EVRLK.
                    302: .TP
                    303: ra%d: serious exception reported
                    304: I have no idea what this really means.
                    305: .TP
                    306: panic: udareplace
                    307: The controller reported completion of a REPLACE operation.  The
                    308: driver never issues any REPLACEs, so something is wrong.
                    309: .TP
                    310: panic: udabb
                    311: The controller reported completion of bad block related I/O.  The
                    312: driver never issues any such, so something is wrong.
                    313: .TP
                    314: uda%d: lost interrupt
                    315: The controller has gone out to lunch, and is being reset to try to bring
                    316: it back.
                    317: .TP
                    318: panic: mscp_go: AEB_MAX_BP too small
                    319: You defined AVOID_EMULEX_BUG and increased NCMDL2 and Emulex has
                    320: new firmware.  Raise AEB_MAX_BP or turn off AVOID_EMULEX_BUG.
                    321: .TP
                    322: uda%d: unit %d: unknown message type 0x%x ignored
                    323: The controller responded with a mysterious message type. See
                    324: /sys/vax/mscp.h for a list of known message types.  This is probably
                    325: a controller hardware problem.
                    326: .TP
                    327: uda%d: unit %d out of range
                    328: The disk drive unit number (the unit plug) is higher than the
                    329: maximum number the driver allows (currently 7).
                    330: .TP
                    331: uda%d: unit %d not configured, \fImessage\fP ignored
                    332: The named disk drive has announced its presence to the controller,
                    333: but was not, or cannot now be, configured into the running system.
                    334: .I Message
                    335: is one of `available attention' (an `I am here' message) or
                    336: `stray response op 0x%x status 0x%x' (anything else).
                    337: .TP
                    338: ra%d: bad lbn (%d)?
                    339: The drive has reported an invalid command error, probably due to an
                    340: invalid block number.  If the lbn value is very much greater than the
                    341: size reported by the drive, this is the problem.  It is probably due to
                    342: an improperly configured partition table.  Other invalid commands
                    343: indicate a bug in the driver, or hardware trouble.
                    344: .TP
                    345: ra%d: duplicate ONLINE ignored
                    346: The drive has come on-line while already on-line.  This condition
                    347: can probably be ignored (and has been).
                    348: .TP
                    349: ra%d: io done, but no buffer?
                    350: Hardware trouble, or a bug; the drive has finished an I/O request,
                    351: but the response has an invalid (zero) command reference number.
                    352: .TP
                    353: Emulex SC41/MS screwup: uda%d, got %d correct, then
                    354: .br
                    355: .ti -5
                    356: changed 0x%x to 0x%x
                    357: .br
                    358: You turned on AVOID_EMULEX_BUG, and the driver successfully
                    359: avoided the bug.  The number of correctly-handled requests is
                    360: reported, along with the expected and actual values relating to
                    361: the bug being avoided.
                    362: .TP
                    363: panic: unrecoverable Emulex screwup
                    364: You turned on AVOID_EMULEX_BUG, but Emulex was too clever and
                    365: avoided the avoidance.  Try turning on MSCP_PARANOIA instead.
                    366: .TP
                    367: uda%d: bad response packet ignored
                    368: You turned on MSCP_PARANOIA, and the driver caught the controller in
                    369: a lie.  The lie has been ignored, and the controller will soon be
                    370: reset (after a `lost' interrupt).  This is followed by a hex dump of
                    371: the offending packet.
                    372: .TP
                    373: ra%d: bogus REPLACE end
                    374: The drive has reported finishing a bad sector replacement, but the
                    375: driver never issues bad sector replacement commands.  The report
                    376: is ignored.  This is likely a hardware problem.
                    377: .TP
                    378: ra%d: unknown opcode 0x%x status 0x%x ignored
                    379: The drive has reported something that the driver cannot understand.
                    380: Perhaps DEC has been inventive, or perhaps your hardware is ill.
                    381: This is followed by a hex dump of the offending packet.
                    382: .TP
                    383: \fBra%d%c: hard error %sing fsbn %d [of %d-%d] (ra%d bn %d cn %d tn %d sn %d)\fP.
                    384: An unrecoverable error occurred during transfer of the specified
                    385: filesystem block number(s),
                    386: which are logical block numbers on the indicated partition.
                    387: If the transfer involved multiple blocks, the block range is printed as well.
                    388: The parenthesized fields list the actual disk sector number
                    389: relative to the beginning of the drive,
                    390: as well as the cylinder, track and sector number of the block.
                    391: .TP
                    392: uda%d: %s error datagram
                    393: The controller has reported some kind of error, either `hard'
                    394: (unrecoverable) or `soft' (recoverable).  If the controller is going on
                    395: (attempting to fix the problem), this message includes the remark
                    396: `(continuing)'.  Emulex controllers wrongly claim that all soft errors
                    397: are hard errors.  This message may be followed by
                    398: one of the following 5 messages, depending on its type, and will always
                    399: be followed by a failure detail message (also listed below).
                    400: .RS
                    401: .TP
                    402: memory addr 0x%x
                    403: A host memory access error; this is the address that could not be
                    404: read.
                    405: .TP
                    406: unit %d: level %d retry %d, %s %d
                    407: A typical disk error; the retry count and error recovery levels are
                    408: printed, along with the block type (`lbn', or logical block; or `rbn',
                    409: or replacement block) and number.  If the string is something else, DEC
                    410: has been clever, or your hardware has gone to Australia for vacation
                    411: (unless you live there; then it might be in New Zealand, or Brazil).
                    412: .TP
                    413: unit %d: %s %d
                    414: Also a disk error, but an `SDI' error, whatever that is.  (I doubt
                    415: it has anything to do with Ronald Reagan.)  This lists the block
                    416: type (`lbn' or `rbn') and number.  This is followed by a second
                    417: message indicating a microprocessor error code and a front panel
                    418: code.  These latter codes are drive-specific, and are intended to
                    419: be used by field service as an aid in locating failing hardware.
                    420: The codes for RA81s can be found in the
                    421: .IR "RA81 Maintenance Guide" ,
                    422: DEC order number AA-M879A-TC, in appendices E and F.
                    423: .TP
                    424: unit %d: small disk error, cyl %d
                    425: Yet another kind of disk error, but for small disks.  (`That's what
                    426: it says, guv'nor.  Dunnask me what it means.')
                    427: .TP
                    428: unit %d: unknown error, format 0x%x
                    429: A mysterious error: the given format code is not known.
                    430: .RE
                    431: .PP
                    432: The detail messages are as follows:
                    433: .RS
                    434: .TP
                    435: success (%s) (code 0, subcode %d)
                    436: Everything worked, but the controller thought it would let you know
                    437: that something went wrong.  No matter what subcode, this can probably
                    438: be ignored.
                    439: .TP
                    440: invalid command (%s) (code 1, subcode %d)
                    441: This probably cannot occur unless the hardware is out; %s should be
                    442: `invalid msg length', meaning some command was too short or too long.
                    443: .TP
                    444: command aborted (unknown subcode) (code 2, subcode %d)
                    445: This should never occur, as the driver never aborts commands.
                    446: .TP
                    447: unit offline (%s) (code 3, subcode %d)
                    448: The drive is offline, either because it is not around (`unknown
                    449: drive'), stopped (`not mounted'), out of order (`inoperative'), has the
                    450: same unit number as some other drive (`duplicate'), or has been
                    451: disabled for diagnostics (`in diagnosis').
                    452: .TP
                    453: unit available (unknown subcode) (code 4, subcode %d)
                    454: The controller has decided to report a perfectly normal event as
                    455: an error.  (Why?)
                    456: .TP
                    457: media format error (%s) (code 5, subcode %d)
                    458: The drive cannot be used without reformatting.  The Format Control
                    459: Table cannot be read (`fct unread - edc'), there is a bad sector
                    460: header (`invalid sector header'), the drive is not set for 512-byte
                    461: sectors (`not 512 sectors'), the drive is not formatted (`not formatted'),
                    462: or the FCT has an uncorrectable ECC error (`fct ecc').
                    463: .TP
                    464: write protected (%s) (code 6, subcode %d)
                    465: The drive is write protected, either by the front panel switch
                    466: (`hardware') or via the driver (`software').  The driver never
                    467: sets software write protect.
                    468: .TP
                    469: compare error (unknown subcode) (code 7, subcode %d)
                    470: A compare operation showed some sort of difference.  The driver
                    471: never uses compare operations.
                    472: .TP
                    473: data error (%s) (code 7, subcode %d)
                    474: Something went wrong reading or writing a data sector.  A `forced
                    475: error' is a software-asserted error used to mark a sector that contains
                    476: suspect data.  Rewriting the sector will clear the forced error.  This
                    477: is normally set only during bad block replacment, and the driver does
                    478: no bad block replacement, so these should not occur.  A `header
                    479: compare' error probably means the block is shot.  A `sync timeout'
                    480: presumably has something to do with sector synchronisation.
                    481: An `uncorrectable ecc' error is an ordinary data error that cannot
                    482: be fixed via ECC logic.  A `%d symbol ecc' error is a data error
                    483: that can be (and presumably has been) corrected by the ECC logic.
                    484: It might indicate a sector that is imperfect but usable, or that
                    485: is starting to go bad.  If any of these errors recur, the sector
                    486: may need to be replaced.
                    487: .TP
                    488: host buffer access error (%s) (code %d, subcode %d)
                    489: Something went wrong while trying to copy data to or from the host
                    490: (Vax).  The subcode is one of `odd xfer addr', `odd xfer count',
                    491: `non-exist. memory', or `memory parity'.  The first two could be a
                    492: software glitch; the last two indicate hardware problems.
                    493: .TP
                    494: controller error (%s) (code %d, subcode %d)
                    495: The controller has detected a hardware error in itself.  A
                    496: `serdes overrun' is a serialiser / deserialiser overrun; `edc'
                    497: probably stands for `error detection code'; and `inconsistent
                    498: internal data struct' is obvious.
                    499: .TP
                    500: drive error (%s) (code %d, subcode %d)
                    501: Either the controller or the drive has detected a hardware error
                    502: in the drive.  I am not sure what an `sdi command timeout' is, but
                    503: these seem to occur benignly on occasion.  A `ctlr detected protocol'
                    504: error means that the controller and drive do not agree on a protocol;
                    505: this could be a cabling problem, or a version mismatch.  A `positioner'
                    506: error means the drive seek hardware is ailing; `lost rd/wr ready'
                    507: means the drive read/write logic is sick; and `drive clock dropout'
                    508: means that the drive clock logic is bad, or the media is hopelessly
                    509: scrambled.  I have no idea what `lost recvr ready' means.  A `drive 
                    510: detected error' is a catch-all for drive hardware trouble; `ctlr
                    511: detected pulse or parity' errors are often caused by cabling problems.
                    512: .RE

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.