BSD 4_3_Net_2 release
[unix-history] / usr / src / share / man / man4 / man4.vax / uda.4
index 2377c72..141b740 100644 (file)
@@ -1,63 +1,94 @@
-.\" Copyright (c) 1980, 1987 Regents of the University of California.
-.\" All rights reserved.  The Berkeley software License Agreement
-.\" specifies the terms and conditions for redistribution.
+.\" Copyright (c) 1980, 1987, 1991 Regents of the University of California.
+.\" All rights reserved.
 .\"
 .\"
-.\"    @(#)uda.4       6.5 (Berkeley) 6/13/88
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"    This product includes software developed by the University of
+.\"    California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\"    may be used to endorse or promote products derived from this software
+.\"    without specific prior written permission.
 .\"
 .\"
-.TH UDA 4 "June 13, 1988"
-.UC 4
-.SH NAME
-uda \- UDA50 disk controller interface
-.SH SYNOPSIS
-.B "controller uda0 at uba0 csr 0172150 vector udaintr"
-.br
-.B "disk ra0 at uda0 drive 0"
-.br
-.B "options MSCP_PARANOIA"
-.SH DESCRIPTION
-This is a driver for the DEC UDA50 disk controller and other
-compatible controllers.  The UDA50 communicates with the host through
-a packet protocol known as the Mass Storage Control Protocol (MSCP).
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"     @(#)uda.4      6.6 (Berkeley) 3/27/91
+.\"
+.Dd March 27, 1991
+.Dt UDA 4 vax
+.Os BSD 4
+.Sh NAME
+.Nm uda
+.Nd
+.Tn UDA50
+disk controller interface
+.Sh SYNOPSIS
+.Cd "controller uda0 at uba0 csr 0172150 vector udaintr"
+.Cd "disk ra0 at uda0 drive 0"
+.Cd "options MSCP_PARANOIA"
+.Sh DESCRIPTION
+This is a driver for the
+.Tn DEC UDA50
+disk controller and other
+compatible controllers.  The
+.Tn UDA50
+communicates with the host through
+a packet protocol known as the Mass Storage Control Protocol
+.Pq Tn MSCP .
 Consult the file
 Consult the file
-.RI < vax/mscp.h >
+.Aq Pa vax/mscp.h
 for a detailed description of this protocol.
 for a detailed description of this protocol.
-.PP
-Files with minor device numbers 0 through 7 refer to various portions
-of drive 0; minor devices 8 through 15 refer to drive 1, etc.  The
-standard device names begin with `ra' followed by the drive number
-and then a letter a-h for partitions 0-7 respectively.
-The character ? stands here for a drive number in the range 0-7.
-.PP
-The block files access the disk via the system's normal buffering
-mechanism mechanism and may be read and written without regard to
-physical disk records.  There is also a `raw' interface which provides
-for direct transmission between the disk and the user's read or write
-buffer.  A single read or write call results in exactly one I/O
-operation and therefore raw I/O is considerably more efficient when
-many words are transmitted.  The names of the raw files conventionally
-begin with an extra `r'.
-.PP
-In raw I/O counts should be a multiple of 512 bytes (a disk sector).
-Likewise
-.I seek
-calls should specify a multiple of 512 bytes.
-.PP
+.Pp
+The
+.Nm uda
+driver
+is a typical block-device disk driver; see
+.Xr physio 4
+for a description of block
+.Tn I/O .
+The script
+.Xr MAKEDEV 8
+should be used to create the
+.Nm uda
+special files; should a special
+file need to be created by hand, consult
+.Xr mknod 8 .
+.Pp
 The
 The
-.B MSCP_PARANOIA
+.Dv MSCP_PARANOIA
 option enables runtime checking on all transfer completion responses
 option enables runtime checking on all transfer completion responses
-from the controller.  This increases disk I/O overhead and may
+from the controller.  This increases disk
+.Tn I/O
+overhead and may
 be undesirable on slow machines, but is otherwise recommended.
 be undesirable on slow machines, but is otherwise recommended.
-.PP
+.Pp
 The first sector of each disk contains both a first-stage bootstrap program
 and a disk label containing geometry information and partition layouts (see
 The first sector of each disk contains both a first-stage bootstrap program
 and a disk label containing geometry information and partition layouts (see
-.IR disklabel (5).
+.Xr disklabel 5 ) .
 This sector is normally write-protected, and disk-to-disk copies should
 avoid copying this sector.
 The label may be updated with
 This sector is normally write-protected, and disk-to-disk copies should
 avoid copying this sector.
 The label may be updated with
-.IR disklabel (8),
+.Xr disklabel 8 ,
 which can also be used to write-enable and write-disable the sector.
 The next 15 sectors contain a second-stage bootstrap program.
 which can also be used to write-enable and write-disable the sector.
 The next 15 sectors contain a second-stage bootstrap program.
-.SH "DISK SUPPORT"
+.Sh DISK SUPPORT
 During autoconfiguration,
 as well as when a drive is opened after all partitions are closed,
 the first sector of the drive is examined for a disk label.
 During autoconfiguration,
 as well as when a drive is opened after all partitions are closed,
 the first sector of the drive is examined for a disk label.
@@ -72,14 +103,33 @@ drive are shown below.  Not all partitions begin on cylinder
 boundaries, as on other drives, because previous drivers used one
 partition table for all drive types.  Variants of the partition tables
 are common; check the driver and the file
 boundaries, as on other drives, because previous drivers used one
 partition table for all drive types.  Variants of the partition tables
 are common; check the driver and the file
-.IR /etc/disktab ( disktab (5))
+.Pa /etc/disktab
+.Pq Xr disktab 5
 for other possibilities.
 for other possibilities.
-.PP
-.nf
-.ta .5i +\w'000000    'u +\w'000000    'u +\w'000000    'u +\w'000000    'u
-.PP
-RA60 partitions
-       disk    start   length
+.Pp
+Special file names begin with
+.Sq Li ra
+and
+.Sq Li rra
+for the block and character files respectively. The second
+component of the name, a drive unit number in the range of zero to
+seven, is represented by a
+.Sq Li ?
+in the disk layouts below. The last component of the name is the
+file system partition
+designated
+by a letter from
+.Sq Li a
+to
+.Sq Li h
+and which corresponds to a minor device number set: zero to seven,
+eight to 15, 16 to 23 and so forth for drive zero, drive two and drive
+three respectively, (see
+.Xr physio 4) .
+The location and size (in sectors) of the partitions:
+.Bl -column header diskx undefined length
+.Tn RA60 No partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    15884   33440
        ra?c    0       400176
        ra?a    0       15884
        ra?b    15884   33440
        ra?c    0       400176
@@ -88,9 +138,9 @@ RA60 partitions
        ra?f    49324   350852
        ra?g    242606  157570
        ra?h    49324   193282
        ra?f    49324   350852
        ra?g    242606  157570
        ra?h    49324   193282
-.PP
-RA70 partitions
-       disk    start   length
+
+.Tn RA70 No partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    15972   33440
        ra?c    0       547041
        ra?a    0       15884
        ra?b    15972   33440
        ra?c    0       547041
@@ -99,9 +149,9 @@ RA70 partitions
        ra?f    413457  133584
        ra?g    341220  205821
        ra?h    49731   29136
        ra?f    413457  133584
        ra?g    341220  205821
        ra?h    49731   29136
-.PP
-RA80 partitions
-       disk    start   length
+
+.Tn RA80 No partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    15884   33440
        ra?c    0       242606
        ra?a    0       15884
        ra?b    15884   33440
        ra?c    0       242606
@@ -109,9 +159,9 @@ RA80 partitions
        ra?f    49324   82080   same as 4.2BSD ra?g
        ra?g    49910   192696
        ra?h    131404  111202  same as 4.2BSD
        ra?f    49324   82080   same as 4.2BSD ra?g
        ra?g    49910   192696
        ra?h    131404  111202  same as 4.2BSD
-.PP
-RA81 partitions
-       disk    start   length
+
+.Tn RA81 No partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    16422   66880
        ra?c    0       891072
        ra?a    0       15884
        ra?b    16422   66880
        ra?c    0       891072
@@ -120,9 +170,9 @@ RA81 partitions
        ra?f    699720  191352
        ra?g    375564  515508
        ra?h    83538   291346
        ra?f    699720  191352
        ra?g    375564  515508
        ra?h    83538   291346
-.PP
-RA81 partitions with 4.2BSD-compatible partitions
-       disk    start   length
+
+.Tn RA81 No partitions with 4.2BSD-compatible partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    16422   66880
        ra?c    0       891072
        ra?a    0       15884
        ra?b    16422   66880
        ra?c    0       891072
@@ -131,9 +181,9 @@ RA81 partitions with 4.2BSD-compatible partitions
        ra?f    412490  478582  same as 4.2BSD ra?f
        ra?g    375564  515508
        ra?h    83538   291346
        ra?f    412490  478582  same as 4.2BSD ra?f
        ra?g    375564  515508
        ra?h    83538   291346
-.PP
-RA82 partitions
-       disk    start   length
+
+.Tn RA82 No partitions
+.Sy    disk    start   length
        ra?a    0       15884
        ra?b    16245   66880
        ra?c    0       1135554
        ra?a    0       15884
        ra?b    16245   66880
        ra?c    0       1135554
@@ -142,245 +192,283 @@ RA82 partitions
        ra?f    669390  466164
        ra?g    375345  760209
        ra?h    83790   291346
        ra?f    669390  466164
        ra?g    375345  760209
        ra?h    83790   291346
-.DT
-.fi
-.PP
+.El
+.Pp
 The ra?a partition is normally used for the root file system, the ra?b
 partition as a paging area, and the ra?c partition for pack-pack
 copying (it maps the entire disk).
 The ra?a partition is normally used for the root file system, the ra?b
 partition as a paging area, and the ra?c partition for pack-pack
 copying (it maps the entire disk).
-.SH FILES
-/dev/ra[0-9][a-f]
-.br
-/dev/rra[0-9][a-f]
-.SH SEE ALSO
-disklabel(5), disklabel(8)
-.SH DIAGNOSTICS
-.TP
-panic: udaslave
+.Sh FILES
+.Bl -tag -width /dev/rra[0-9][a-f] -compact
+.It Pa /dev/ra[0-9][a-f]
+.It Pa /dev/rra[0-9][a-f]
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "panic: udaslave"
 No command packets were available while the driver was looking
 for disk drives.  The controller is not extending enough credits
 to use the drives.
 No command packets were available while the driver was looking
 for disk drives.  The controller is not extending enough credits
 to use the drives.
-.TP
-uda%d: no response to Get Unit Status request
+.Pp
+.It "uda%d: no response to Get Unit Status request"
 A disk drive was found, but did not respond to a status request.
 This is either a hardware problem or someone pulling unit number
 plugs very fast.
 A disk drive was found, but did not respond to a status request.
 This is either a hardware problem or someone pulling unit number
 plugs very fast.
-.TP
-uda%d: unit %d off line
+.Pp
+.It "uda%d: unit %d off line"
 While searching for drives, the controller found one that
 seems to be manually disabled.  It is ignored.
 While searching for drives, the controller found one that
 seems to be manually disabled.  It is ignored.
-.TP
-uda%d: unable to get unit status
+.Pp
+.It "uda%d: unable to get unit status"
 Something went wrong while trying to determine the status of
 a disk drive.  This is followed by an error detail.
 Something went wrong while trying to determine the status of
 a disk drive.  This is followed by an error detail.
-.TP
-uda%d: unit %d, next %d
+.Pp
+.It uda%d: unit %d, next %d
 This probably never happens, but I wanted to know if it did.  I
 have no idea what one should do about it.
 This probably never happens, but I wanted to know if it did.  I
 have no idea what one should do about it.
-.TP
-uda%d: cannot handle unit number %d (max is %d)
+.Pp
+.It "uda%d: cannot handle unit number %d (max is %d)"
 The controller found a drive whose unit number is too large.
 Valid unit numbers are those in the range [0..7].
 The controller found a drive whose unit number is too large.
 Valid unit numbers are those in the range [0..7].
-.TP
-ra%d: don't have a partition table for %s; using (s,t,c)=(%d,%d,%d)
+.Pp
+.It "ra%d: don't have a partition table for %s; using (s,t,c)=(%d,%d,%d)"
 The controller found a drive whose media identifier (e.g. `RA 25')
 does not have a default partition table.  A temporary partition
 table containing only an `a' partition has been created covering
 the entire disk, which has the indicated numbers of sectors per
 track (s), tracks per cylinder (t), and total cylinders (c).
 Give the pack a label with the
 The controller found a drive whose media identifier (e.g. `RA 25')
 does not have a default partition table.  A temporary partition
 table containing only an `a' partition has been created covering
 the entire disk, which has the indicated numbers of sectors per
 track (s), tracks per cylinder (t), and total cylinders (c).
 Give the pack a label with the
-.I disklabel
+.Xr disklabel
 utility.
 utility.
-.TP
-uda%d: uballoc map failed
+.Pp
+.It "uda%d: uballoc map failed"
 Unibus resource map allocation failed during initialisation.  This
 can only happen if you have 496 devices on a Unibus.
 Unibus resource map allocation failed during initialisation.  This
 can only happen if you have 496 devices on a Unibus.
-.TP
-uda%d: timeout during init
+.Pp
+.It uda%d: timeout during init
 The controller did not initialise within ten seconds.  A hardware
 problem, but it sometimes goes away if you try again.
 The controller did not initialise within ten seconds.  A hardware
 problem, but it sometimes goes away if you try again.
-.TP
-uda%d: init failed, sa=%b
+.Pp
+.It uda%d: init failed, sa=%b
 The controller refused to initalise.
 The controller refused to initalise.
-.TP
-uda%d: controller hung
+.Pp
+.It uda%d: controller hung
 The controller never finished initialisation.  Retrying may sometimes
 fix it.
 The controller never finished initialisation.  Retrying may sometimes
 fix it.
-.TP
-ra%d: drive will not come on line
+.Pp
+.It ra%d: drive will not come on line
 The drive will not come on line, probably because it is spun down.
 This should be preceded by a message giving details as to why the
 drive stayed off line.
 The drive will not come on line, probably because it is spun down.
 This should be preceded by a message giving details as to why the
 drive stayed off line.
-.TP
-uda%d: still hung
+.Pp
+.It uda%d: still hung
 When the controller hangs, the driver occasionally tries to reinitialise
 it.  This means it just tried, without success.
 When the controller hangs, the driver occasionally tries to reinitialise
 it.  This means it just tried, without success.
-.TP
-panic: udastart: bp==NULL
+.Pp
+.It panic: udastart: bp==NULL
 A bug in the driver has put an empty drive queue on a controller queue.
 A bug in the driver has put an empty drive queue on a controller queue.
-.TP
-uda%d: command ring too small
-If you increase NCMDL2, you may see a performance improvement.
-(See /sys/vaxuba/uda.c.)
-.TP
-panic: udastart
+.Pp
+.It uda%d: command ring too small
+If you increase
+.Dv NCMDL2 ,
+you may see a performance improvement.
+(See
+.Pa /sys/vaxuba/uda.c . )
+.Pp
+.It panic: udastart
 A drive was found marked for status or on-line functions while performing
 status or on-line functions.  This indicates a bug in the driver.
 A drive was found marked for status or on-line functions while performing
 status or on-line functions.  This indicates a bug in the driver.
-.TP
-uda%d: controller error, sa=0%o (%s)
+.Pp
+.It "uda%d: controller error, sa=0%o (%s)"
 The controller reported an error.  The error code is printed in
 octal, along with a short description if the code is known (see the
 The controller reported an error.  The error code is printed in
 octal, along with a short description if the code is known (see the
-.IR "UDA50 Maintenance Guide" ,
-DEC part number AA-M185B-TC, pp. 18-22).
+.%T UDA50 Maintenance Guide ,
+.Tn DEC
+part number
+.Tn AA-M185B-TC ,
+pp. 18-22).
 If this occurs during normal
 If this occurs during normal
-operation, the driver will reset it and retry pending I/O.  If
+operation, the driver will reset it and retry pending
+.Tn I/O .
+If
 it occurs during configuration, the controller may be ignored.
 it occurs during configuration, the controller may be ignored.
-.TP
-uda%d: stray intr
+.Pp
+.It uda%d: stray intr
 The controller interrupted when it should have stayed quiet.  The
 interrupt has been ignored.
 The controller interrupted when it should have stayed quiet.  The
 interrupt has been ignored.
-.TP
-uda%d: init step %d failed, sa=%b
+.Pp
+.It "uda%d: init step %d failed, sa=%b"
 The controller reported an error during the named initialisation step.
 The driver will retry initialisation later.
 The controller reported an error during the named initialisation step.
 The driver will retry initialisation later.
-.TP
-uda%d: version %d model %d
+.Pp
+.It uda%d: version %d model %d
 An informational message giving the revision level of the controller.
 An informational message giving the revision level of the controller.
-.TP
-uda%d: DMA burst size set to %d
-An informational message showing the DMA burst size, in words.
-.TP
-panic: udaintr
-Indicates a bug in the generic MSCP code.
-.TP
-uda%d: driver bug, state %d
+.Pp
+.It uda%d: DMA burst size set to %d
+An informational message showing the
+.Tn DMA
+burst size, in words.
+.Pp
+.It panic: udaintr
+Indicates a bug in the generic
+.Tn MSCP
+code.
+.Pp
+.It uda%d: driver bug, state %d
 The driver has a bogus value for the controller state.  Something
 is quite wrong.  This is immediately followed by a `panic: udastate'.
 The driver has a bogus value for the controller state.  Something
 is quite wrong.  This is immediately followed by a `panic: udastate'.
-.TP
-uda%d: purge bdp %d
+.Pp
+.It uda%d: purge bdp %d
 A benign message tracing BDP purges.  I have been trying to figure
 out what BDP purges are for.  You might want to comment out this
 call to log() in /sys/vaxuba/uda.c.
 A benign message tracing BDP purges.  I have been trying to figure
 out what BDP purges are for.  You might want to comment out this
 call to log() in /sys/vaxuba/uda.c.
-.TP
-.RI "uda%d: SETCTLRC failed: " detail
+.Pp
+.It uda%d: SETCTLRC failed:  `detail'
 The Set Controller Characteristics command (the last part of the
 controller initialisation sequence) failed.  The
 The Set Controller Characteristics command (the last part of the
 controller initialisation sequence) failed.  The
-.I detail
+.Em detail
 message tells why.
 message tells why.
-.TP
-.RI "uda%d: attempt to bring ra%d on line failed: " detail
+.Pp
+.It "uda%d: attempt to bring ra%d on line failed:  `detail'"
 The drive could not be brought on line.  The
 The drive could not be brought on line.  The
-.I detail
+.Em detail
 message tells why.
 message tells why.
-.TP
-uda%d: ra%d: unknown type %d
+.Pp
+.It uda%d: ra%d: unknown type %d
 The type index of the named drive is not known to the driver, so the
 drive will be ignored.
 The type index of the named drive is not known to the driver, so the
 drive will be ignored.
-.TP
-ra%d: changed types! was %d now %d
-A drive somehow changed from one kind to another, e.g., from an RA80
-to an RA60.  The numbers printed are the encoded media identifiers (see
-.RI < vax/mscp.h >
+.Pp
+.It "ra%d: changed types! was %d now %d"
+A drive somehow changed from one kind to another, e.g., from an
+.Tn RA80
+to an
+.Tn RA60 .
+The numbers printed are the encoded media identifiers (see
+.Ao Pa vax/mscp.h Ac
 for the encoding).
 The driver believes the new type.
 for the encoding).
 The driver believes the new type.
-.TP
-ra%d: uda%d, unit %d, size = %d sectors
+.Pp
+.It "ra%d: uda%d, unit %d, size = %d sectors"
 The named drive is on the indicated controller as the given unit,
 and has that many sectors of user-file area.  This is printed
 during configuration.
 The named drive is on the indicated controller as the given unit,
 and has that many sectors of user-file area.  This is printed
 during configuration.
-.TP
-.RI "uda%d: attempt to get status for ra%d failed: " detail
+.Pp
+.It "uda%d: attempt to get status for ra%d failed:  `detail'"
 A status request failed.  The
 A status request failed.  The
-.I detail
+.Em detail
 message should tell why.
 message should tell why.
-.TP
-ra%d: bad block report: %d
+.Pp
+.It ra%d: bad block report: %d
 The drive has reported the given block as bad.  If there are multiple
 bad blocks, the drive will report only the first; in this case this
 The drive has reported the given block as bad.  If there are multiple
 bad blocks, the drive will report only the first; in this case this
-message will be followed by `+ others'.  Get DEC to forward the
-block with EVRLK.
-.TP
-ra%d: serious exception reported
+message will be followed by `+ others'.  Get
+.Tn DEC
+to forward the
+block with
+.Tn EVRLK .
+.Pp
+.It ra%d: serious exception reported
 I have no idea what this really means.
 I have no idea what this really means.
-.TP
-panic: udareplace
-The controller reported completion of a REPLACE operation.  The
-driver never issues any REPLACEs, so something is wrong.
-.TP
-panic: udabb
-The controller reported completion of bad block related I/O.  The
+.Pp
+.It panic: udareplace
+The controller reported completion of a
+.Tn REPLACE
+operation.  The
+driver never issues any
+.Tn REPLACE Ns s ,
+so something is wrong.
+.Pp
+.It panic: udabb
+The controller reported completion of bad block related
+.Tn I/O .
+The
 driver never issues any such, so something is wrong.
 driver never issues any such, so something is wrong.
-.TP
-uda%d: lost interrupt
+.Pp
+.It uda%d: lost interrupt
 The controller has gone out to lunch, and is being reset to try to bring
 it back.
 The controller has gone out to lunch, and is being reset to try to bring
 it back.
-.TP
-panic: mscp_go: AEB_MAX_BP too small
-You defined AVOID_EMULEX_BUG and increased NCMDL2 and Emulex has
-new firmware.  Raise AEB_MAX_BP or turn off AVOID_EMULEX_BUG.
-.TP
-uda%d: unit %d: unknown message type 0x%x ignored
+.Pp
+.It panic: mscp_go: AEB_MAX_BP too small
+You defined
+.Dv AVOID_EMULEX_BUG
+and increased
+.Dv NCMDL2
+and Emulex has
+new firmware.  Raise
+.Dv AEB_MAX_BP
+or turn off
+.Dv AVOID_EMULEX_BUG .
+.Pp
+.It "uda%d: unit %d: unknown message type 0x%x ignored"
 The controller responded with a mysterious message type. See
 The controller responded with a mysterious message type. See
-/sys/vax/mscp.h for a list of known message types.  This is probably
+.Pa /sys/vax/mscp.h
+for a list of known message types.  This is probably
 a controller hardware problem.
 a controller hardware problem.
-.TP
-uda%d: unit %d out of range
+.Pp
+.It "uda%d: unit %d out of range"
 The disk drive unit number (the unit plug) is higher than the
 maximum number the driver allows (currently 7).
 The disk drive unit number (the unit plug) is higher than the
 maximum number the driver allows (currently 7).
-.TP
-uda%d: unit %d not configured, \fImessage\fP ignored
+.Pp
+.It "uda%d: unit %d not configured, message ignored"
 The named disk drive has announced its presence to the controller,
 but was not, or cannot now be, configured into the running system.
 The named disk drive has announced its presence to the controller,
 but was not, or cannot now be, configured into the running system.
-.I Message
+.Em Message
 is one of `available attention' (an `I am here' message) or
 `stray response op 0x%x status 0x%x' (anything else).
 is one of `available attention' (an `I am here' message) or
 `stray response op 0x%x status 0x%x' (anything else).
-.TP
-ra%d: bad lbn (%d)?
+.Pp
+.It ra%d: bad lbn (%d)?
 The drive has reported an invalid command error, probably due to an
 invalid block number.  If the lbn value is very much greater than the
 size reported by the drive, this is the problem.  It is probably due to
 an improperly configured partition table.  Other invalid commands
 indicate a bug in the driver, or hardware trouble.
 The drive has reported an invalid command error, probably due to an
 invalid block number.  If the lbn value is very much greater than the
 size reported by the drive, this is the problem.  It is probably due to
 an improperly configured partition table.  Other invalid commands
 indicate a bug in the driver, or hardware trouble.
-.TP
-ra%d: duplicate ONLINE ignored
+.Pp
+.It ra%d: duplicate ONLINE ignored
 The drive has come on-line while already on-line.  This condition
 can probably be ignored (and has been).
 The drive has come on-line while already on-line.  This condition
 can probably be ignored (and has been).
-.TP
-ra%d: io done, but no buffer?
-Hardware trouble, or a bug; the drive has finished an I/O request,
+.Pp
+.It ra%d: io done, but no buffer?
+Hardware trouble, or a bug; the drive has finished an
+.Tn I/O
+request,
 but the response has an invalid (zero) command reference number.
 but the response has an invalid (zero) command reference number.
-.TP
-Emulex SC41/MS screwup: uda%d, got %d correct, then
-.br
-.ti -5
-changed 0x%x to 0x%x
-.br
-You turned on AVOID_EMULEX_BUG, and the driver successfully
+.Pp
+.It "Emulex SC41/MS screwup: uda%d, got %d correct, then changed 0x%x to 0x%x"
+You turned on
+.Dv AVOID_EMULEX_BUG ,
+and the driver successfully
 avoided the bug.  The number of correctly-handled requests is
 reported, along with the expected and actual values relating to
 the bug being avoided.
 avoided the bug.  The number of correctly-handled requests is
 reported, along with the expected and actual values relating to
 the bug being avoided.
-.TP
-panic: unrecoverable Emulex screwup
-You turned on AVOID_EMULEX_BUG, but Emulex was too clever and
-avoided the avoidance.  Try turning on MSCP_PARANOIA instead.
-.TP
-uda%d: bad response packet ignored
-You turned on MSCP_PARANOIA, and the driver caught the controller in
+.Pp
+.It panic: unrecoverable Emulex screwup
+You turned on
+.Dv AVOID_EMULEX_BUG ,
+but Emulex was too clever and
+avoided the avoidance.  Try turning on
+.Dv MSCP_PARANOIA
+instead.
+.Pp
+.It uda%d: bad response packet ignored
+You turned on
+.Dv MSCP_PARANOIA ,
+and the driver caught the controller in
 a lie.  The lie has been ignored, and the controller will soon be
 reset (after a `lost' interrupt).  This is followed by a hex dump of
 the offending packet.
 a lie.  The lie has been ignored, and the controller will soon be
 reset (after a `lost' interrupt).  This is followed by a hex dump of
 the offending packet.
-.TP
-ra%d: bogus REPLACE end
+.Pp
+.It ra%d: bogus REPLACE end
 The drive has reported finishing a bad sector replacement, but the
 driver never issues bad sector replacement commands.  The report
 is ignored.  This is likely a hardware problem.
 The drive has reported finishing a bad sector replacement, but the
 driver never issues bad sector replacement commands.  The report
 is ignored.  This is likely a hardware problem.
-.TP
-ra%d: unknown opcode 0x%x status 0x%x ignored
+.Pp
+.It "ra%d: unknown opcode 0x%x status 0x%x ignored"
 The drive has reported something that the driver cannot understand.
 The drive has reported something that the driver cannot understand.
-Perhaps DEC has been inventive, or perhaps your hardware is ill.
+Perhaps
+.Tn DEC
+has been inventive, or perhaps your hardware is ill.
 This is followed by a hex dump of the offending packet.
 This is followed by a hex dump of the offending packet.
-.TP
-\fBra%d%c: hard error %sing fsbn %d [of %d-%d] (ra%d bn %d cn %d tn %d sn %d)\fP.
+.Pp
+.It "ra%d%c: hard error %sing fsbn %d [of %d-%d] (ra%d bn %d cn %d tn %d sn %d)."
 An unrecoverable error occurred during transfer of the specified
 filesystem block number(s),
 which are logical block numbers on the indicated partition.
 An unrecoverable error occurred during transfer of the specified
 filesystem block number(s),
 which are logical block numbers on the indicated partition.
@@ -388,8 +476,8 @@ If the transfer involved multiple blocks, the block range is printed as well.
 The parenthesized fields list the actual disk sector number
 relative to the beginning of the drive,
 as well as the cylinder, track and sector number of the block.
 The parenthesized fields list the actual disk sector number
 relative to the beginning of the drive,
 as well as the cylinder, track and sector number of the block.
-.TP
-uda%d: %s error datagram
+.Pp
+.It uda%d: %s error datagram
 The controller has reported some kind of error, either `hard'
 (unrecoverable) or `soft' (recoverable).  If the controller is going on
 (attempting to fix the problem), this message includes the remark
 The controller has reported some kind of error, either `hard'
 (unrecoverable) or `soft' (recoverable).  If the controller is going on
 (attempting to fix the problem), this message includes the remark
@@ -397,20 +485,20 @@ The controller has reported some kind of error, either `hard'
 are hard errors.  This message may be followed by
 one of the following 5 messages, depending on its type, and will always
 be followed by a failure detail message (also listed below).
 are hard errors.  This message may be followed by
 one of the following 5 messages, depending on its type, and will always
 be followed by a failure detail message (also listed below).
-.RS
-.TP
-memory addr 0x%x
+.Bd -filled -offset indent
+.It memory addr 0x%x
 A host memory access error; this is the address that could not be
 read.
 A host memory access error; this is the address that could not be
 read.
-.TP
-unit %d: level %d retry %d, %s %d
+.Pp
+.It "unit %d: level %d retry %d, %s %d"
 A typical disk error; the retry count and error recovery levels are
 printed, along with the block type (`lbn', or logical block; or `rbn',
 A typical disk error; the retry count and error recovery levels are
 printed, along with the block type (`lbn', or logical block; or `rbn',
-or replacement block) and number.  If the string is something else, DEC
+or replacement block) and number.  If the string is something else,
+.Tn DEC
 has been clever, or your hardware has gone to Australia for vacation
 (unless you live there; then it might be in New Zealand, or Brazil).
 has been clever, or your hardware has gone to Australia for vacation
 (unless you live there; then it might be in New Zealand, or Brazil).
-.TP
-unit %d: %s %d
+.Pp
+.It unit %d: %s %d
 Also a disk error, but an `SDI' error, whatever that is.  (I doubt
 it has anything to do with Ronald Reagan.)  This lists the block
 type (`lbn' or `rbn') and number.  This is followed by a second
 Also a disk error, but an `SDI' error, whatever that is.  (I doubt
 it has anything to do with Ronald Reagan.)  This lists the block
 type (`lbn' or `rbn') and number.  This is followed by a second
@@ -418,59 +506,62 @@ message indicating a microprocessor error code and a front panel
 code.  These latter codes are drive-specific, and are intended to
 be used by field service as an aid in locating failing hardware.
 The codes for RA81s can be found in the
 code.  These latter codes are drive-specific, and are intended to
 be used by field service as an aid in locating failing hardware.
 The codes for RA81s can be found in the
-.IR "RA81 Maintenance Guide" ,
+.%T RA81 Maintenance Guide ,
 DEC order number AA-M879A-TC, in appendices E and F.
 DEC order number AA-M879A-TC, in appendices E and F.
-.TP
-unit %d: small disk error, cyl %d
+.Pp
+.It "unit %d: small disk error, cyl %d"
 Yet another kind of disk error, but for small disks.  (`That's what
 it says, guv'nor.  Dunnask me what it means.')
 Yet another kind of disk error, but for small disks.  (`That's what
 it says, guv'nor.  Dunnask me what it means.')
-.TP
-unit %d: unknown error, format 0x%x
+.Pp
+.It "unit %d: unknown error, format 0x%x"
 A mysterious error: the given format code is not known.
 A mysterious error: the given format code is not known.
-.RE
-.PP
+.Ed
+.Pp
 The detail messages are as follows:
 The detail messages are as follows:
-.RS
-.TP
-success (%s) (code 0, subcode %d)
+.Bd -filled -offset indent
+.It success (%s) (code 0, subcode %d)
 Everything worked, but the controller thought it would let you know
 that something went wrong.  No matter what subcode, this can probably
 be ignored.
 Everything worked, but the controller thought it would let you know
 that something went wrong.  No matter what subcode, this can probably
 be ignored.
-.TP
-invalid command (%s) (code 1, subcode %d)
+.Pp
+.It "invalid command (%s) (code 1, subcode %d)"
 This probably cannot occur unless the hardware is out; %s should be
 `invalid msg length', meaning some command was too short or too long.
 This probably cannot occur unless the hardware is out; %s should be
 `invalid msg length', meaning some command was too short or too long.
-.TP
-command aborted (unknown subcode) (code 2, subcode %d)
+.Pp
+.It "command aborted (unknown subcode) (code 2, subcode %d)"
 This should never occur, as the driver never aborts commands.
 This should never occur, as the driver never aborts commands.
-.TP
-unit offline (%s) (code 3, subcode %d)
+.Pp
+.It "unit offline (%s) (code 3, subcode %d)"
 The drive is offline, either because it is not around (`unknown
 drive'), stopped (`not mounted'), out of order (`inoperative'), has the
 same unit number as some other drive (`duplicate'), or has been
 disabled for diagnostics (`in diagnosis').
 The drive is offline, either because it is not around (`unknown
 drive'), stopped (`not mounted'), out of order (`inoperative'), has the
 same unit number as some other drive (`duplicate'), or has been
 disabled for diagnostics (`in diagnosis').
-.TP
-unit available (unknown subcode) (code 4, subcode %d)
+.Pp
+.It "unit available (unknown subcode) (code 4, subcode %d)"
 The controller has decided to report a perfectly normal event as
 an error.  (Why?)
 The controller has decided to report a perfectly normal event as
 an error.  (Why?)
-.TP
-media format error (%s) (code 5, subcode %d)
+.Pp
+.It "media format error (%s) (code 5, subcode %d)"
 The drive cannot be used without reformatting.  The Format Control
 Table cannot be read (`fct unread - edc'), there is a bad sector
 header (`invalid sector header'), the drive is not set for 512-byte
 sectors (`not 512 sectors'), the drive is not formatted (`not formatted'),
 The drive cannot be used without reformatting.  The Format Control
 Table cannot be read (`fct unread - edc'), there is a bad sector
 header (`invalid sector header'), the drive is not set for 512-byte
 sectors (`not 512 sectors'), the drive is not formatted (`not formatted'),
-or the FCT has an uncorrectable ECC error (`fct ecc').
-.TP
-write protected (%s) (code 6, subcode %d)
+or the
+.Tn FCT
+has an uncorrectable
+.Tn ECC
+error (`fct ecc').
+.Pp
+.It "write protected (%s) (code 6, subcode %d)"
 The drive is write protected, either by the front panel switch
 (`hardware') or via the driver (`software').  The driver never
 sets software write protect.
 The drive is write protected, either by the front panel switch
 (`hardware') or via the driver (`software').  The driver never
 sets software write protect.
-.TP
-compare error (unknown subcode) (code 7, subcode %d)
+.Pp
+.It "compare error (unknown subcode) (code 7, subcode %d)"
 A compare operation showed some sort of difference.  The driver
 never uses compare operations.
 A compare operation showed some sort of difference.  The driver
 never uses compare operations.
-.TP
-data error (%s) (code 7, subcode %d)
+.Pp
+.It "data error (%s) (code 7, subcode %d)"
 Something went wrong reading or writing a data sector.  A `forced
 error' is a software-asserted error used to mark a sector that contains
 suspect data.  Rewriting the sector will clear the forced error.  This
 Something went wrong reading or writing a data sector.  A `forced
 error' is a software-asserted error used to mark a sector that contains
 suspect data.  Rewriting the sector will clear the forced error.  This
@@ -479,25 +570,28 @@ no bad block replacement, so these should not occur.  A `header
 compare' error probably means the block is shot.  A `sync timeout'
 presumably has something to do with sector synchronisation.
 An `uncorrectable ecc' error is an ordinary data error that cannot
 compare' error probably means the block is shot.  A `sync timeout'
 presumably has something to do with sector synchronisation.
 An `uncorrectable ecc' error is an ordinary data error that cannot
-be fixed via ECC logic.  A `%d symbol ecc' error is a data error
-that can be (and presumably has been) corrected by the ECC logic.
+be fixed via
+.Tn ECC
+logic.  A `%d symbol ecc' error is a data error
+that can be (and presumably has been) corrected by the
+.Tn ECC
+logic.
 It might indicate a sector that is imperfect but usable, or that
 is starting to go bad.  If any of these errors recur, the sector
 may need to be replaced.
 It might indicate a sector that is imperfect but usable, or that
 is starting to go bad.  If any of these errors recur, the sector
 may need to be replaced.
-.TP
-host buffer access error (%s) (code %d, subcode %d)
+.Pp
+.It "host buffer access error (%s) (code %d, subcode %d)"
 Something went wrong while trying to copy data to or from the host
 (Vax).  The subcode is one of `odd xfer addr', `odd xfer count',
 `non-exist. memory', or `memory parity'.  The first two could be a
 software glitch; the last two indicate hardware problems.
 Something went wrong while trying to copy data to or from the host
 (Vax).  The subcode is one of `odd xfer addr', `odd xfer count',
 `non-exist. memory', or `memory parity'.  The first two could be a
 software glitch; the last two indicate hardware problems.
-.TP
-controller error (%s) (code %d, subcode %d)
+.It controller error (%s) (code %d, subcode %d)
 The controller has detected a hardware error in itself.  A
 `serdes overrun' is a serialiser / deserialiser overrun; `edc'
 probably stands for `error detection code'; and `inconsistent
 internal data struct' is obvious.
 The controller has detected a hardware error in itself.  A
 `serdes overrun' is a serialiser / deserialiser overrun; `edc'
 probably stands for `error detection code'; and `inconsistent
 internal data struct' is obvious.
-.TP
-drive error (%s) (code %d, subcode %d)
+.Pp
+.It "drive error (%s) (code %d, subcode %d)"
 Either the controller or the drive has detected a hardware error
 in the drive.  I am not sure what an `sdi command timeout' is, but
 these seem to occur benignly on occasion.  A `ctlr detected protocol'
 Either the controller or the drive has detected a hardware error
 in the drive.  I am not sure what an `sdi command timeout' is, but
 these seem to occur benignly on occasion.  A `ctlr detected protocol'
@@ -509,4 +603,13 @@ means that the drive clock logic is bad, or the media is hopelessly
 scrambled.  I have no idea what `lost recvr ready' means.  A `drive 
 detected error' is a catch-all for drive hardware trouble; `ctlr
 detected pulse or parity' errors are often caused by cabling problems.
 scrambled.  I have no idea what `lost recvr ready' means.  A `drive 
 detected error' is a catch-all for drive hardware trouble; `ctlr
 detected pulse or parity' errors are often caused by cabling problems.
-.RE
+.Ed
+.El
+.Sh SEE ALSO
+.Xr disklabel 5 ,
+.Xr disklabel 8
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Bx 4.2 .