from CCI
[unix-history] / usr / src / share / man / man4 / man4.tahoe / vd.4
.\" Copyright (c) 1986 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\"
.\" @(#)vd.4 6.1 (Berkeley) %G%
.\"
.TH VD 4 ""
.UC 7
.SH NAME
vd / (fsd, smd, xfd, fuj, xsd) \- versabus storage module controller/drives
.SH SYNOPSIS
.B "VD controller at vba addresses 0xf2[0-7]00"
.br
.B "160 Mb FSD "
.br
.B "300 Mb SMD "
.br
.B "340 Mb XFD "
.br
.B "360 Mb FUJ "
.br
.B "515 Mb XSD "
.SH DESCRIPTION
This is a generic VERSABUS storage module disk driver for CCI's VD
controller.
.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 `fsd, `smd', `fuj', `xfd',
or `xfd' 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 - 1f (hex).
.PP
The block files access the disk via the system's normal
buffering 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 1024 bytes (a disk block).
Likewise
.I seek
calls should specify a multiple of 1024 bytes.
.SH "DISK SUPPORT"
The driver tries to access the last track on each drive
to determine the type of drive attached. The driver recognizes
five different drives: CDC FSD (160 Mb), CDC 9766 (300 Mb),
CDC XFSD (340 Mb), CDC 515Mb, and Fujitsu 360 Mb.
The origin and size of the pseudo-disks on each drive are
as follows:
.PP
.nf
.ta .5i +\w'000000 'u +\w'000000 'u +\w'000000 'u
FSD 160Mb drive partitions:
disk start length cyl
fsd?a 0 9600 0 - 59
fsd?b 9600 12000 60 - 134
fsd?c 21600 109280 135 - 817
fsd?d 39840 91040 249 - 817
fsd?e 58080 72800 363 - 817
fsd?f 76320 54560 477 - 817
fsd?g 94560 36320 591 - 817
fsd?h 112800 18080 705 - 817
.PP
SMD (CDC 9766) 300Mb drive partitions:
disk start length cyl
smd?a 0 20064 0 - 65
smd?b 20064 13680 66 - 110
smd?c 33744 214928 111 - 817
smd?d 69616 179056 229 - 817
smd?e 105488 143184 347 - 817
smd?f 141360 107312 465 - 817
smd?g 177232 71440 583 - 817
smd?h 213104 35568 701 - 817
.PP
XFD 340Mb drive partitions:
disk start length cyl
xfd?a 0 20352 0 - 52
xfd?b 20352 20352 53 - 105
xfd?c 40704 230400 106 - 705
xfd?d 79104 192000 206 - 705
xfd?e 117504 153600 306 - 705
xfd?f 155904 115200 406 - 705
xfd?g 194304 76800 506 - 705
xfd?h 232704 38400 606 - 705
.PP
FUJ 360Mb drive partitions:
disk start length cyl
fuj?a 0 19200 0 - 59
fuj?b 19200 24000 60 - 134
fuj?c 43200 218560 135 - 817
fuj?d 79680 182080 249 - 817
fuj?e 116160 145600 363 - 817
fuj?f 152640 109120 477 - 817
fuj?g 189120 72640 591 - 817
fuj?h 225600 36160 705 - 817
.PP
XSD 515Mb drive partitions:
disk start length cyl
xsd?a 0 30528 0 - 52
xsd?b 30528 30528 53 - 105
xsd?c 61056 345600 106 - 705
xsd?d 118656 288000 206 - 705
xsd?e 176256 230400 306 - 705
xsd?f 233856 172800 406 - 705
xsd?g 291456 115200 506 - 705
xsd?h 349056 57600 606 - 705
.fi
.PP
It is unwise for all of these partitions to be present in one installation,
since there is overlap in addresses and protection becomes
a sticky matter.
The ?a partition is normally used for the root file system,
and the ?b partition as a paging area.
The ?c partition maps the rest of the pack,
except the last 5 cylinders which are reserved for bad sector forwarding,
and diagnostic use.
.SH FILES
/dev/fsd[0-7][a-f] fsd block files
.br
/dev/rfsd[0-7][a-f] fsd raw files
.br
/dev/smd[0-7][a-f] smd block files
.br
/dev/rsmd[0-7][a-f] smd raw files
.br
/dev/xfd[0-7][a-f] xfd block files
.br
/dev/rxfd[0-7][a-f] xfd raw files
.br
/dev/fuj[0-7][a-f] fuj block files
.br
/dev/rfuj[0-7][a-f] fuj raw files
.br
/dev/xsd[0-7][a-f] xsd block files
.br
/dev/rxsd[0-7][a-f] xsd raw files
.br
.SH SEE ALSO
disktab(5)
.SH DIAGNOSTICS
The driver prints out a number of error messages, indicating that
the error bit in the DCB'c op error status register was set.
The contents of the register are printed, as well as an indication
of the operation attempted and drive number.
The status word is displayed in hexadecimal, so
conversion to binary is up to the operator.
The meaning of the status word's bit fields are:
.sp 1
.in +3m
.nf
31 0
+--------------------------------+
||||||||||||||||||||||||||||||||||
+--------------------------------+
^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
||||| |||||||||||||||||||||||||+-- Header CRC error detected.
||||| ||||||||||||||||||||||||+--- Header compare error.
||||| |||||||||||||||||||||||+---- Disk write protected.
||||| ||||||||||||||||||||||+----- Controller fault.
||||| |||||||||||||||||||||+------ Disk seek error.
||||| ||||||||||||||||||||+------- Uncorrectable data error.
||||| |||||||||||||||||||+-------- Disk not on cylinder.
||||| ||||||||||||||||||+--------- Disk drive not ready.
||||| |||||||||||||||||+---------- Alternate track accessed.
||||| ||||||||||||||||+----------- Seek started.
||||| |||||||||||||||+------------ Invalid disk address issued.
||||| ||||||||||||||+------------- Non-existent memory error.
||||| |||||||||||||+-------------- Main memory parity error.
||||| ||||||||||||+--------------- Data compare error.
||||| |||||||||||+---------------- Drive is ready.
||||| ||||||||||+----------------- Operation aborted.
||||| |||||||||+------------------ Tried data strobe early.
||||| ||||||||+------------------- Tried data strobe late.
||||| |||||||+-------------------- Tried track offset plus.
||||| ||||||+--------------------- Tried track offset minus.
||||| |||||+---------------------- Controller performed data correction.
||||| ||||+----------------------- Uncorrected error happened (hard).
||||| |||+------------------------ Corrected error happened (soft).
||||| ||+------------------------- An error happened (hard or soft).
||||| |+-------------------------- Invalid command.
||||+-+--------------------------- unused.
|||+------------------------------ DCB aborted by system.
||+------------------------------- Unsuccessful completion.
|+-------------------------------- DCB completed.
+--------------------------------- DCB started.
.fi
.in -3m
.PP
In addition, if the controller is an SMD-E controller then an error code
will also be printed. The error codes are:
.sp 1
.in +3m
.nf
\fICode\fP \fIMeaning\fP
\fICommand related errors\fP:
01 Bad MDCB pointer
02 Bad DCB pointer
03 Invalid command
04 Invalid disk address
05 Invalid sector in command
06 Gap specification error
07 sector per track error
08 bytes per sector error
09 Interleave error
0A Invalid head address
0B Invalid DMA burst count
0C Invalid sector count
0D Drive number out of range
0E Too many total sectors
\fIHard errors\fP:
10 Disk not ready
11 Seek error
12 Disk write protected
13 Unit not selected (command sent to non-existent drive)
14 Seek error timeout
15 Fault timeout
16 Drive faulted
17 Ready timeout
18 Data Overrun
19 No index pulse on write format
1A Sector not found
1B Retry performed - Soft error
1C Invalid sync in data field
1D seek timeout error
1E Busy timeout
1F Not on cylinder
20 RTZ timeout
21 Unit not initialized
22 Seek error
23 Mapped header error
24 Header error - Sync word bad
25 Header error - Wrong cylinder address
26 Header error - Wrong head address
27 Header error - Pad word bad
28 Sector write protected
2A Header check sum error
2B Alternate track accessed
2C Read time-out error
2D On-cylinder timeout during offset adjust
2E Good header found on defective track
\fIDMA transfer errors\fP
30 DMA bus error
31 DMA parity error
32 DMA timeout
\fIMiscellaneous errors\fP:
40 Track offset minus
41 Track offset plus
42 Data strobe early
43 Data strobe late
44 Drive ready
45 Data compare error
47 Alternate track accessed
48 Header CRC error
49 Uncorrectable error
4A ECC code error - data field code
4B Abort
4C Out of buffer space
4D Controller performed data correction
4E Alternate track accessed
\fIPOC related errors\fP
50 - 53 Buffer RAM error (banks 0 - 3)
54 - 57 Buffer RAM clear error (banks 0 - 3)
58 - 5B Event RAM Error (banks 0 - 3)
5C - 5F Event RAM clear error (banks 0 - 3)
60 ROM CRC error
61 Timer short error
62 Shared RAM error
63 Shared RAM clear error
64 Illegal interupt or exception
65 Disk sequencer did not initialize
66 Restart FF did not initialize
67 Data parity error FF did not initialize
68 Versabus error FF did not initialize
69 Unit select panel did not clear
6A Versabus interupt pending FF did not clear
6B Restart interupt FF did not init
6C Timer long error
70 DMA gate array init started
71 ROM CRC test started
72 Local RAM test started
73 Buffer RAM test started
74 Event RAM test started
75 SERDES gate array init started
\fIIllegal interupts or exceptions\fP
80 Bus error
81 Address error
82 Illegal instruction
83 Divide by zero
84 CHK instruction
85 TRAPV instruction
86 Privileged instruction
87 Trace trap
88 Line 1010 emulator
89 Line 1111 emulator
8A - 8C Reserved (1 - 3)
8D Uninitialized interupt
8E Reserved 4
8F Spurious interupt
91 - 97 "Hot" interupts on lines 1 - 7
.fi
.in -3m
.SH BUGS
.I write
scribbles on the tail of incomplete blocks.