Files
Arquivotheca.SunOS-4.1.4/sys/boot/lib/stand/xderr.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

264 lines
11 KiB
C

/* @(#)xderr.h 1.1 94/10/31 SMI */
/*
* Copyright (c) 1987 by Sun Microsystems, Inc.
*/
/*
* Declarations of the error structures for the Xylogics 7053 driver.
* They are separated to allow user programs access to the information.
*/
/*
* List of actions to be taken for each class of error.
* NOTE: the levels are symbolicly defined below, so
* this ordering is required. NOTE: the controller spec suggests not
* attempting to recover from fatal errors, but we're paranoid and
* give it a try anyway.
*/
struct xderract {
u_char retry; /* number of retries */
u_char restore; /* number of drive resets */
u_char reset; /* number of controller resets */
} xderracts[] = {
0, 0, 0, /* level 0 = XD_ERCOR */
2, 0, 0, /* level 1 = XD_ERTRY */
5, 0, 0, /* level 2 = XD_ERBSY */
0, 2, 0, /* level 3 = XD_ERFLT */
0, 0, 1, /* level 4 = XD_ERHNG */
1, 1, 0, /* level 5 = XD_ERFTL */
};
/*
* The classes of errors.
*/
#define XD_ERCOR 0x00 /* corrected error */
#define XD_ERTRY 0x01 /* retryable error */
#define XD_ERBSY 0x02 /* drive busy error */
#define XD_ERFLT 0x03 /* drive faulted error */
#define XD_ERHNG 0x04 /* controller hung error */
#define XD_ERFTL 0x05 /* fatal error */
/*
* Error codes
*/
#define XDE_OK 0x00 /* successful completion */
#define XDE_SFMF 0x01 /* set format fields 5 and 5A only */
#define XDE_CADR 0x10 /* illegal cylinder address */
#define XDE_HADR 0x11 /* illegal head address */
#define XDE_SADR 0x12 /* illegal sector address */
#define XDE_0CNT 0x13 /* count zero */
#define XDE_ILLC 0x14 /* unimplemented command */
#define XDE_IFL1 0x15 /* illegal field length 1 */
#define XDE_IFL2 0x16 /* illegal field length 2 */
#define XDE_IFL3 0x17 /* illegal field length 3 */
#define XDE_IFL4 0x18 /* illegal field length 4 */
#define XDE_IFL5 0x19 /* illegal field length 5 */
#define XDE_IFL6 0x1a /* illegal field length 6 */
#define XDE_IFL7 0x1b /* illegal field length 7 */
#define XDE_ISGL 0x1c /* illegal scatter/gather length */
#define XDE_NSEC 0x1d /* not enough sectors/track */
#define XDE_ALGN 0x1e /* next iopb alignment error */
#define XDE_SGAA 0x1f /* scatter/gather addr alignment */
#define XDE_SGAE 0x20 /* scatter/gather with auto ecc */
#define XDE_HOLE 0x21 /* illegal black hole address */
#define XDE_FECC 0x30 /* soft ecc corrected */
#define XDE_ECCI 0x31 /* ecc ignored */
#define XDE_SRTY 0x32 /* auto seek retry recovered */
#define XDE_SFTR 0x33 /* soft retry recovered */
#define XDE_HECC 0x40 /* hard data ecc */
#define XDE_HDNF 0x41 /* header not found */
#define XDE_NRDY 0x42 /* drive not ready */
#define XDE_OPTO 0x43 /* operation timeout */
#define XDE_DMAT 0x44 /* vmedma timeout */
#define XDE_DSEQ 0x45 /* disk sequencer error */
#define XDE_BPER 0x46 /* fifo parity error */
#define XDE_DPBY 0x47 /* dual port busy timeout */
#define XDE_HDEC 0x48 /* header ecc error */
#define XDE_RVER 0x49 /* read verify */
#define XDE_FDMA 0x4a /* fatal vmedma error */
#define XDE_VMEB 0x4b /* vmebus error */
#define XDE_LINT 0x50 /* lost interrupt */
#define XDE_FERR 0x51 /* fatal error */
#define XDE_DFLT 0x60 /* drive faulted */
#define XDE_CHER 0x61 /* header error/cylinder */
#define XDE_HHER 0x62 /* header error/head */
#define XDE_OFCL 0x63 /* drive not on-cylinder */
#define XDE_SEEK 0x64 /* seek error */
#define XDE_SSIZ 0x70 /* illegal sector size */
#define XDE_FIRM 0x71 /* firmware failure */
#define XDE_SECC 0x80 /* soft ecc */
#define XDE_IRAM 0x81 /* iram checksum failure */
#define XDE_PROT 0x90 /* write protect error */
#define XDE_FIST 0xe1 /* IRAM self test failure */
#define XDE_FMT3 0xe3 /* MTest 3 Fail (dskcel ram) */
#define XDE_FMT4 0xe4 /* MTest 4 Fail (header shift reg) */
#define XDE_FMT5 0xe5 /* MTest 5 Fail (vmedma reg) */
#define XDE_FMT6 0xe6 /* MTest 6 Fail (regcel chip) */
#define XDE_FMT7 0xe7 /* MTest 7 Fail (buffer parity) */
#define XDE_FMT8 0xe8 /* MTest 8 Fail (disk fifo) */
#define XDE_FCKS 0xf0 /* iopb checksum miscompare */
#define XDE_FIDF 0xf1 /* iopb dma fatal */
#define XDE_FALN 0xf2 /* iopb address alignment error */
#define XDE_FFWR 0xf3 /* firmware error */
#define XDE_FIMT 0xf5 /* illegal maintenance mode test */
#define XDE_FACF 0xf6 /* acfail asserted */
#define XDE_UNKN 0xff /* unknown error */
/*
* List of each recognizable error.
* The list is sorted from most likely to least likely error, using
* the best guess algorithm.
* NOTE : the entries for success and unknown error MUST remain first and
* last respectively on the list due to the algorithm for finding errors.
*/
struct xderror {
u_char errno; /* error number */
u_char errlevel; /* error level (corrected, fatal, etc) */
u_char errtype; /* error type (media vs nonmedia) */
char *errmsg; /* error message */
} xderrors[] = {
#ifndef BOOTBLOCK
XDE_OK, XD_ERCOR, DK_NONMEDIA, "spurious err",
XDE_NRDY, XD_ERBSY, DK_NONMEDIA, "drive not ready",
XDE_FECC, XD_ERCOR, DK_ISMEDIA, "soft ecc corrected",
XDE_SRTY, XD_ERCOR, DK_NONMEDIA, "seek retry",
XDE_SFTR, XD_ERCOR, DK_NONMEDIA, "soft retry",
XDE_HECC, XD_ERTRY, DK_ISMEDIA, "hard data ecc",
XDE_HDNF, XD_ERTRY, DK_ISMEDIA, "header not found",
XDE_OPTO, XD_ERTRY, DK_NONMEDIA, "operation timeout",
XDE_DMAT, XD_ERTRY, DK_NONMEDIA, "vmedma timeout",
XDE_DSEQ, XD_ERFLT, DK_NONMEDIA, "disk sequencer err",
XDE_BPER, XD_ERTRY, DK_NONMEDIA, "fifo parity err",
XDE_HDEC, XD_ERTRY, DK_ISMEDIA, "header ecc err",
XDE_RVER, XD_ERTRY, DK_ISMEDIA, "read verify err",
XDE_FDMA, XD_ERTRY, DK_NONMEDIA, "fatal vmedma err",
XDE_VMEB, XD_ERTRY, DK_NONMEDIA, "vmebus err",
XDE_DPBY, XD_ERBSY, DK_NONMEDIA, "dual port busy",
XDE_DFLT, XD_ERFLT, DK_NONMEDIA, "drive faulted",
XDE_CHER, XD_ERFLT, DK_ISMEDIA, "cyl header err",
XDE_HHER, XD_ERFLT, DK_ISMEDIA, "head header err",
XDE_OFCL, XD_ERFLT, DK_NONMEDIA, "drive not on cyl",
XDE_SEEK, XD_ERFLT, DK_NONMEDIA, "drive seek err",
XDE_LINT, XD_ERHNG, DK_NONMEDIA, "lost interrupt",
XDE_FERR, XD_ERFLT, DK_NONMEDIA, "fatal err",
XDE_FIST, XD_ERFLT, DK_NONMEDIA, "fatal err: iram self test",
XDE_FMT3, XD_ERFLT, DK_NONMEDIA, "fatal err: test 3",
XDE_FMT4, XD_ERFLT, DK_NONMEDIA, "fatal err: test 4",
XDE_FMT5, XD_ERFLT, DK_NONMEDIA, "fatal err: test 5",
XDE_FMT6, XD_ERFLT, DK_NONMEDIA, "fatal err: test 6",
XDE_FMT7, XD_ERFLT, DK_NONMEDIA, "fatal err: test 7",
XDE_FMT8, XD_ERFLT, DK_NONMEDIA, "fatal err: test 8",
XDE_FCKS, XD_ERFLT, DK_NONMEDIA, "fatal err: iopb checksum",
XDE_FIDF, XD_ERFLT, DK_NONMEDIA, "fatal err: iopb dma",
XDE_FALN, XD_ERFLT, DK_NONMEDIA, "fatal err: iopb addr align",
XDE_FFWR, XD_ERFLT, DK_NONMEDIA, "fatal err: firmware err",
XDE_FIMT, XD_ERFLT, DK_NONMEDIA, "fatal err: ill test",
XDE_FACF, XD_ERFLT, DK_NONMEDIA, "fatal err: acfail asserted",
XDE_PROT, XD_ERFTL, DK_NONMEDIA, "write protect err",
XDE_ILLC, XD_ERFTL, DK_NONMEDIA, "unimp cmd",
XDE_0CNT, XD_ERFTL, DK_NONMEDIA, "zero sec count",
XDE_SSIZ, XD_ERFTL, DK_NONMEDIA, "ill sec size",
XDE_FIRM, XD_ERFTL, DK_NONMEDIA, "firmware failure",
XDE_CADR, XD_ERFTL, DK_NONMEDIA, "cyl addr err",
XDE_HADR, XD_ERFTL, DK_NONMEDIA, "head addr err",
XDE_SADR, XD_ERFTL, DK_NONMEDIA, "sec addr err",
XDE_IFL1, XD_ERFTL, DK_NONMEDIA, "illfld len 1",
XDE_IFL2, XD_ERFTL, DK_NONMEDIA, "illfld len 2",
XDE_IFL3, XD_ERFTL, DK_NONMEDIA, "illfld len 3",
XDE_IFL4, XD_ERFTL, DK_NONMEDIA, "illfld len 4",
XDE_IFL5, XD_ERFTL, DK_NONMEDIA, "illfld len 5",
XDE_IFL6, XD_ERFTL, DK_NONMEDIA, "illfld len 6",
XDE_IFL7, XD_ERFTL, DK_NONMEDIA, "illfld len 7",
XDE_ISGL, XD_ERFTL, DK_NONMEDIA, "illfld/gather len",
XDE_NSEC, XD_ERFTL, DK_NONMEDIA, "not enough sec/track",
XDE_ALGN, XD_ERFTL, DK_NONMEDIA, "iopb alignment err",
XDE_SECC, XD_ERFTL, DK_ISMEDIA, "soft ecc err",
XDE_IRAM, XD_ERFTL, DK_NONMEDIA, "iram checksum err",
XDE_ECCI, XD_ERFTL, DK_ISMEDIA, "ecc err ignored",
XDE_SFMF, XD_ERCOR, DK_NONMEDIA, "set format field 5, 5A",
XDE_SGAA, XD_ERFTL, DK_NONMEDIA, "scatter/gather addr alignment",
XDE_SGAE, XD_ERFTL, DK_NONMEDIA, "scatter/gather with auto ecc",
XDE_HOLE, XD_ERFTL, DK_NONMEDIA, "ill black hole address",
XDE_UNKN, XD_ERFTL, DK_NONMEDIA, "unknown err",
#else BOOTBLOCK
XDE_OK, XD_ERCOR, DK_NONMEDIA, "err 0",
XDE_NRDY, XD_ERBSY, DK_NONMEDIA, "err 1",
XDE_FECC, XD_ERCOR, DK_ISMEDIA, "err 2",
XDE_SRTY, XD_ERCOR, DK_NONMEDIA, "err 3",
XDE_SFTR, XD_ERCOR, DK_NONMEDIA, "err 4",
XDE_HECC, XD_ERTRY, DK_ISMEDIA, "err 5",
XDE_HDNF, XD_ERTRY, DK_ISMEDIA, "err 6",
XDE_OPTO, XD_ERTRY, DK_NONMEDIA, "err 7",
XDE_DMAT, XD_ERTRY, DK_NONMEDIA, "err 8",
XDE_DSEQ, XD_ERFLT, DK_NONMEDIA, "err 9",
XDE_BPER, XD_ERTRY, DK_NONMEDIA, "err 10",
XDE_HDEC, XD_ERTRY, DK_ISMEDIA, "err 11",
XDE_RVER, XD_ERTRY, DK_ISMEDIA, "err 12",
XDE_FDMA, XD_ERTRY, DK_NONMEDIA, "err 13",
XDE_VMEB, XD_ERTRY, DK_NONMEDIA, "err 14",
XDE_DPBY, XD_ERBSY, DK_NONMEDIA, "err 15",
XDE_DFLT, XD_ERFLT, DK_NONMEDIA, "err 16",
XDE_CHER, XD_ERFLT, DK_ISMEDIA, "err 17",
XDE_HHER, XD_ERFLT, DK_ISMEDIA, "err 18",
XDE_OFCL, XD_ERFLT, DK_NONMEDIA, "err 19",
XDE_SEEK, XD_ERFLT, DK_NONMEDIA, "err 20",
XDE_LINT, XD_ERHNG, DK_NONMEDIA, "err 21",
XDE_FERR, XD_ERFLT, DK_NONMEDIA, "err 22",
XDE_FIST, XD_ERFLT, DK_NONMEDIA, "err 23",
XDE_FMT3, XD_ERFLT, DK_NONMEDIA, "err 24",
XDE_FMT4, XD_ERFLT, DK_NONMEDIA, "err 25",
XDE_FMT5, XD_ERFLT, DK_NONMEDIA, "err 26",
XDE_FMT6, XD_ERFLT, DK_NONMEDIA, "err 27",
XDE_FMT7, XD_ERFLT, DK_NONMEDIA, "err 28",
XDE_FMT8, XD_ERFLT, DK_NONMEDIA, "err 29",
XDE_FCKS, XD_ERFLT, DK_NONMEDIA, "err 30",
XDE_FIDF, XD_ERFLT, DK_NONMEDIA, "err 31",
XDE_FALN, XD_ERFLT, DK_NONMEDIA, "err 32",
XDE_FFWR, XD_ERFLT, DK_NONMEDIA, "err 33",
XDE_FIMT, XD_ERFLT, DK_NONMEDIA, "err 34",
XDE_FACF, XD_ERFLT, DK_NONMEDIA, "err 35",
XDE_PROT, XD_ERFTL, DK_NONMEDIA, "err 36",
XDE_ILLC, XD_ERFTL, DK_NONMEDIA, "err 37",
XDE_0CNT, XD_ERFTL, DK_NONMEDIA, "err 38",
XDE_SSIZ, XD_ERFTL, DK_NONMEDIA, "err 39",
XDE_FIRM, XD_ERFTL, DK_NONMEDIA, "err 40",
XDE_CADR, XD_ERFTL, DK_NONMEDIA, "err 41",
XDE_HADR, XD_ERFTL, DK_NONMEDIA, "err 42",
XDE_SADR, XD_ERFTL, DK_NONMEDIA, "err 43",
XDE_IFL1, XD_ERFTL, DK_NONMEDIA, "err 44",
XDE_IFL2, XD_ERFTL, DK_NONMEDIA, "err 45",
XDE_IFL3, XD_ERFTL, DK_NONMEDIA, "err 46",
XDE_IFL4, XD_ERFTL, DK_NONMEDIA, "err 47",
XDE_IFL5, XD_ERFTL, DK_NONMEDIA, "err 48",
XDE_IFL6, XD_ERFTL, DK_NONMEDIA, "err 49",
XDE_IFL7, XD_ERFTL, DK_NONMEDIA, "err 50",
XDE_ISGL, XD_ERFTL, DK_NONMEDIA, "err 51",
XDE_NSEC, XD_ERFTL, DK_NONMEDIA, "err 52",
XDE_ALGN, XD_ERFTL, DK_NONMEDIA, "err 53",
XDE_SECC, XD_ERFTL, DK_ISMEDIA, "err 54",
XDE_IRAM, XD_ERFTL, DK_NONMEDIA, "err 55",
XDE_ECCI, XD_ERFTL, DK_ISMEDIA, "err 56",
XDE_SFMF, XD_ERCOR, DK_NONMEDIA, "err 57",
XDE_SGAA, XD_ERFTL, DK_NONMEDIA, "err 58",
XDE_SGAE, XD_ERFTL, DK_NONMEDIA, "err 59",
XDE_HOLE, XD_ERFTL, DK_NONMEDIA, "err 60",
XDE_UNKN, XD_ERFTL, DK_NONMEDIA, "err 61",
#endif BOOTBLOCK
};