docs/develop: More reorganization.
* There is now a 'busses' folder, and the extant USB/SDHCI/Bluetooth/etc. docs now live in it, instead of various other places. * kernel/ports is now kernel/arch, like it is in src/system. SPARC documentation is now in there, too. * VM files (these are rather outdated) are now in kernel/vm. * SCSI ASC info removed, this is easily available online and it doesn't seem to be very relevant.
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
INSIDE THE USB STACK
|
||||
==============
|
||||
|
||||
For all of you who have been over my code and thought: "What is this guy doing?", I can firmly respond that I sometimes haven't a clue either. But when I'm actually reviewing my own code, I occassionally get the feeling that I do have a direction I'm persueing. In order to define this direction more, and share you in the fun, I have written this document. It's a rather superficial account (without actually quoting any code), but it should be enough to get you started.
|
||||
|
||||
First of all, it's always good to know that the USB stack is modularised. This means that there is a backend - a module - which connects to a whole range of modules that are in touch with the host controllers (the actual USB hardware). The combination of these modules is what we call the USB stack. The job of the backend (in CVS at /current/src/add-ons/kernel/bus_managers/usb) is to perform generic operations like managing device connects and disconnects, and pushing commands from drivers to the host-controller modules. The host controller modules are in direct contact with the hardware, meaning that they translate actual commands into something the host controller can work with and can transmit over the wires. Additionally, these host controller modules simulate the root hub: they provide a seamless interface for the backend module to communicate with the root hub.
|
||||
|
||||
In the first experiments of my USB stack, there was a special 'C' interface for the host controller modules. This interface was clumsy, because all the objects (the backend is in C++) were constantly harvesting data all over the place because they couldn't simply send references of themselves. The second attempt of the USB stack introduces a libusb.a (the kernel doesn't support shared libraries), which contains the basic structure of the stack, and which is linked in by both the backend and the host controller modules. Instead of having a host_controller_module struct with function pointers, the host controller modules now simply returned an extended 'class Busmanager'. The downside is that whenever the libusb.a is changed, all the host controller modules have to be relinked in order to avoid disasters. (This is also something which prevents me from providing a nice C++ interface for drivers). However, this limitation is much easier to work around than the separate C-interface.
|
||||
|
||||
The basic structure of the stack (and of libusb.a) can be found in the usb_p.h file in the CVS location of the backend. You'll notice a few objects which I'll quickly go over. First of all, there's stack, which is basically a container for the individual Bus managers. The Busmanager class encapsulates a bus manager. The Device class represents a connected device, and the Hub class (inherits Device), manages the communication with the hubs. For the area of communication there are a few classes that are interesting. The Pipe class represents a data pipe. A 'pipe' is more an interface than something that is actually interesting during USB communication. A pipe encapsulates the properties regarding what kind of data is transmitted to where. Each Pipe type (corresponding to the four types of transfer), will be a subclass of Pipe. The objects of Pipe will all be associated with a device. Finally there's the Transfer class. The objects of this class are created by the Pipes, and contain the actual data for the transfers (including references to the callbacks).
|
||||
|
||||
All these classes would be useless, if they weren't interacting with each other. The basic idea of the stack is the following. As soon as the USB bus_manager module is opened by a driver (for the first time), a Stack object is initialized. This object starts looking for host controller modules. Every host controller tries to find and initialize their cards, and if they succeed, they add a BusManager object to the stack. This bus manager object contains an object of the hub class, and the default pipes. The generic backend implementation starts a usb_explore thread, which will poll the status of the hubs and keep the internal administration up to date. As soon as a hub signals that a new device is connected, the Busmanager starts a procedure to connect the device. If it's a hub, a Hub is created, else a Device is created. This device object creates the default pipe, and contains all the data related to it.
|
||||
|
||||
New transfers are initialized by Pipes. The Transfer objects will be created by the Pipe subclasses only, and the ownership of the objects will go to the Busmanager that has to transmit them (that will take care of deletion). The SubmitTransfer function of the Busmanagers are the gate to the actual transfer. What happens is host controller dependent. The implementation of the host controller should take care of finishing a transfer.
|
||||
|
||||
As for closing, this design lacks some objects that correspond to USB objects. For example, there are no special Endpoint objects. At the moment, passing adresses is sufficient, but perhaps it should change in order to complete the design. Also, there is currently no idea how locking should work. Finally, the Stack class currently includes some memory management for usb, however, checking from the specs, only UHCI requires manual scheduling, OHCI and EHCI manage the scheduling and packaging itself. That should move. But at the moment, this design works.
|
||||
|
||||
Finally, this document gives an idea of how it should work. For details: check the USB specs, host controller specs and the code. If anything stays unclear, please comment on my weblog, or e-mail me.
|
||||
@@ -0,0 +1,48 @@
|
||||
Notes on long double support
|
||||
============================
|
||||
|
||||
The "long double" type is different on each architecture. Depending on the
|
||||
available hardware and ABI conventions, performance compromises, etc, there
|
||||
may be many implementations of it. Here is a summary for our convenience.
|
||||
|
||||
128-bit IEEE
|
||||
------------
|
||||
|
||||
Platforms: Sparc, ARM64, RISC-V
|
||||
|
||||
This is the standard long double type from IEEE754. It has 1 sign bit,
|
||||
15 exponent bit, and 112 fractional part bits. It is the natural extension
|
||||
of the 64bit double.
|
||||
|
||||
Sparc specifies this type in their ABI but no implementation actually has
|
||||
the instructions, they instead trigger a trap which would software emulate
|
||||
them. However, gcc short circuits this by default and calls C library
|
||||
support functions directly.
|
||||
|
||||
64-bit IEEE
|
||||
-----------
|
||||
|
||||
Platforms: ARM
|
||||
|
||||
This is the same representation as plain "double". ARM uses this for simplicity.
|
||||
|
||||
80-bit
|
||||
------
|
||||
|
||||
Platform: x86, x86\_64, m68k
|
||||
|
||||
This intermediate format is used by x86 CPUs internally. It may end up being
|
||||
faster than plain double there. It consists of a 64bit fractional part, 15
|
||||
exponent bits, and 1 sign bit. This is convenient because the fractional part
|
||||
is a relatively easy to handle 64bit number.
|
||||
|
||||
m68k uses a similar format, but padded to 96 bits (the extra 16 bits are unused).
|
||||
|
||||
double double
|
||||
-------------
|
||||
|
||||
Platforms: PowerPC?
|
||||
|
||||
This is also a 128bit type, but the representation is just two 64bit doubles.
|
||||
The value is the sum of the two halves. This format allows faster emulation
|
||||
than a "true" 128bit long double, and the precision is almost as good.
|
||||
@@ -0,0 +1,32 @@
|
||||
The SPARC architecture has 32 integer registers, divided as follows:
|
||||
|
||||
- global registers (g0-g7)
|
||||
- input (i0-i7)
|
||||
- local (l0-l7)
|
||||
- output (o0-o7)
|
||||
|
||||
Parameter passing and return is done using the output registers, which are
|
||||
generally considered scratch registers and can be corrupted by the callee. The
|
||||
caller must take care of preserving them.
|
||||
|
||||
The input and local registers are callee-saved, but we have hardware assistance
|
||||
in the form of a register window. There is an instruction to shift the registers
|
||||
so that:
|
||||
- o registers become i registers
|
||||
- local and output registers are replaced with fresh sets, for use by the
|
||||
current function
|
||||
- global registers are not affected
|
||||
|
||||
Note that as a side-effect, o7 is moved to i7, this is convenient because these
|
||||
are usually the stack and frame pointers, respectively. So basically this sets
|
||||
the frame pointer for free.
|
||||
|
||||
Simple enough functions may end up using just the o registers, in that case
|
||||
nothing special is necessary, of course.
|
||||
|
||||
When shifting the register window, the extra registers come from the register
|
||||
stack in the CPU. This is not infinite, however, most implementations of SPARC
|
||||
will only have 8 windows available. When the internal stack is full, an overflow
|
||||
trap is raised, and the handler must free up old windows by storing them on the
|
||||
stack, likewise, when the internal stack is empty, an underflow trap must fill
|
||||
it back from the stack-saved data.
|
||||
@@ -0,0 +1,37 @@
|
||||
The SPARC CPU is not designed to gracefully handle misaligned accesses.
|
||||
You can access a single byte at any address, but 16-bit access only at even
|
||||
addresses, 32bit access at multiple of 4 addresses, etc.
|
||||
|
||||
For example, on x86, such accesses are not a problem, it is allowed and handled
|
||||
directly by the instructions doing the access. So there is no performance cost.
|
||||
|
||||
On SPARC, however, such accesses will cause a SIGBUS. This means a trap handler
|
||||
has to catch the misaligned access and do it in software, byte by byte, then
|
||||
give back control to the application. This is, of course, very slow, so we
|
||||
should avoid it when possible.
|
||||
|
||||
Fortunately, gcc knows about this, and will normally do the right thing:
|
||||
- For usual variables and structures, it will make sure to lay them out so that
|
||||
they are aligned. It relies on stack alignment, as well as malloc returning
|
||||
sufficiently aligned memory (as required by the C standard).
|
||||
- On packed structure, gcc knows the data is misaligned, and will automatically
|
||||
use the appropriate way to access it (most likely, byte-by-byte).
|
||||
|
||||
This leaves us with two undesirable cases:
|
||||
- Pointer arithmetics and casting. When computing addresses manually, it's
|
||||
possible to generate a misaligned address and cast it to a type with a wider
|
||||
alignment requirement. In this case, gcc may access the pointer using a
|
||||
multi byte instruction and cause a SIGBUS. Solution: make sure the struct
|
||||
is aligned, or declare it as packed so unaligned access are used instead.
|
||||
- Access to hardware: it is a common pattern to declare a struct as packed,
|
||||
and map it to hardware registers. If the alignment isn't known, gcc will use
|
||||
byte by byte access. It seems volatile would cause gcc to use the proper way
|
||||
to access the struct, assuming that a volatile value is necessarily
|
||||
aligned as it should.
|
||||
|
||||
In the end, we just need to be careful about pointer math resulting in unalined
|
||||
access. -Wcast-align helps with that, but it also raises a lot of false positives
|
||||
(where the alignment is preserved even when casting to other types). So we
|
||||
enable it only as a warning for now. We will need to ceck the sigbus handler to
|
||||
identify places where we do a lot of misaligned accesses that trigger it, and
|
||||
rework the code as needed. But in general, except for these cases, we're fine.
|
||||
@@ -0,0 +1,12 @@
|
||||
The SPARC instruction set specifies instruction for handling long double
|
||||
values, however, no hardware implementation actually provides them. They
|
||||
generate a trap, which is expected to be handled by the softfloat library.
|
||||
|
||||
Since traps are slow, and gcc knows better, it will never generate those
|
||||
instructions. Instead it directly calls into the C library, to functions
|
||||
specified in the ABI and used to do long double math using softfloats.
|
||||
|
||||
The support code for this is, in our case, compiled into both the kernel and
|
||||
libroot. It lives in src/system/libroot/os/arch/sparc/softfloat.c (and other
|
||||
support files). This code was extracted from FreeBSD, rather than the glibc,
|
||||
because that made it much easier to get it building in the kernel.
|
||||
@@ -1,728 +0,0 @@
|
||||
File: ASC-NUM.TXT
|
||||
|
||||
SCSI ASC/ASCQ Assignments
|
||||
Numeric Sorted Listing
|
||||
as of 9/19/13
|
||||
|
||||
D - DIRECT ACCESS DEVICE (SBC-3) device column key
|
||||
.T - SEQUENTIAL ACCESS DEVICE (SSC-3) -------------------
|
||||
. L - PRINTER DEVICE (SSC) blank = reserved
|
||||
. P - PROCESSOR DEVICE (SPC-2) not blank = allowed
|
||||
. .W - WRITE ONCE READ MULTIPLE DEVICE (SBC)
|
||||
. . R - C/DVD DEVICE (MMC-6)
|
||||
. . O - OPTICAL MEMORY DEVICE (SBC)
|
||||
. . .M - MEDIA CHANGER DEVICE (SMC-3)
|
||||
. . . A - STORAGE ARRAY DEVICE (SCC-2)
|
||||
. . . E - ENCLOSURE SERVICES DEVICE (SES-2)
|
||||
. . . .B - SIMPLIFIED DIRECT-ACCESS DEVICE (RBC)
|
||||
. . . . K - OPTICAL CARD READER/WRITER DEVICE (OCRW)
|
||||
. . . . V - AUTOMATION/DRIVE INTERFACE (ADC-2)
|
||||
. . . . .F - OBJECT-BASED STORAGE (OSD-2)
|
||||
ASC/ASCQ DTLPWROMAEBKVF Description
|
||||
------- -------------- ----------------------------------------------------
|
||||
00h/00h DTLPWROMAEBKVF NO ADDITIONAL SENSE INFORMATION
|
||||
00h/01h T FILEMARK DETECTED
|
||||
00h/02h T END-OF-PARTITION/MEDIUM DETECTED
|
||||
00h/03h T SETMARK DETECTED
|
||||
00h/04h T BEGINNING-OF-PARTITION/MEDIUM DETECTED
|
||||
00h/05h TL END-OF-DATA DETECTED
|
||||
00h/06h DTLPWROMAEBKVF I/O PROCESS TERMINATED
|
||||
00h/07h T PROGRAMMABLE EARLY WARNING DETECTED
|
||||
00h/11h R AUDIO PLAY OPERATION IN PROGRESS
|
||||
00h/12h R AUDIO PLAY OPERATION PAUSED
|
||||
00h/13h R AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED
|
||||
00h/14h R AUDIO PLAY OPERATION STOPPED DUE TO ERROR
|
||||
00h/15h R NO CURRENT AUDIO STATUS TO RETURN
|
||||
00h/16h DTLPWROMAEBKVF OPERATION IN PROGRESS
|
||||
00h/17h DTL WROMAEBKVF CLEANING REQUESTED
|
||||
00h/18h T ERASE OPERATION IN PROGRESS
|
||||
00h/19h T LOCATE OPERATION IN PROGRESS
|
||||
00h/1Ah T REWIND OPERATION IN PROGRESS
|
||||
00h/1Bh T SET CAPACITY OPERATION IN PROGRESS
|
||||
00h/1Ch T VERIFY OPERATION IN PROGRESS
|
||||
00h/1Dh DT B ATA PASS THROUGH INFORMATION AVAILABLE
|
||||
00h/1Eh DT R MAEBKV CONFLICTING SA CREATION REQUEST
|
||||
00h/1Fh DT B LOGICAL UNIT TRANSITIONING TO ANOTHER POWER CONDITION
|
||||
00h/20h DT P B EXTENDED COPY INFORMATION AVAILABLE
|
||||
01h/00h D W O BK NO INDEX/SECTOR SIGNAL
|
||||
02h/00h D WRO BK NO SEEK COMPLETE
|
||||
03h/00h DTL W O BK PERIPHERAL DEVICE WRITE FAULT
|
||||
03h/01h T NO WRITE CURRENT
|
||||
03h/02h T EXCESSIVE WRITE ERRORS
|
||||
04h/00h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE
|
||||
04h/01h DTLPWROMAEBKVF LOGICAL UNIT IS IN PROCESS OF BECOMING READY
|
||||
04h/02h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED
|
||||
04h/03h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED
|
||||
04h/04h DTL RO B LOGICAL UNIT NOT READY, FORMAT IN PROGRESS
|
||||
04h/05h DT W O A BK F LOGICAL UNIT NOT READY, REBUILD IN PROGRESS
|
||||
04h/06h DT W O A BK LOGICAL UNIT NOT READY, RECALCULATION IN PROGRESS
|
||||
04h/07h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, OPERATION IN PROGRESS
|
||||
04h/08h R LOGICAL UNIT NOT READY, LONG WRITE IN PROGRESS
|
||||
04h/09h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, SELF-TEST IN PROGRESS
|
||||
04h/0Ah DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC ACCESS STATE TRANSITION
|
||||
04h/0Bh DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN STANDBY STATE
|
||||
04h/0Ch DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN UNAVAILABLE STATE
|
||||
04h/0Dh F LOGICAL UNIT NOT READY, STRUCTURE CHECK REQUIRED
|
||||
04h/10h DT WROM B LOGICAL UNIT NOT READY, AUXILIARY MEMORY NOT ACCESSIBLE
|
||||
04h/11h DT WRO AEB VF LOGICAL UNIT NOT READY, NOTIFY (ENABLE SPINUP) REQUIRED
|
||||
04h/12h M V LOGICAL UNIT NOT READY, OFFLINE
|
||||
04h/13h DT R MAEBKV LOGICAL UNIT NOT READY, SA CREATION IN PROGRESS
|
||||
04h/14h D B LOGICAL UNIT NOT READY, SPACE ALLOCATION IN PROGRESS
|
||||
04h/15h M LOGICAL UNIT NOT READY, ROBOTICS DISABLED
|
||||
04h/16h M LOGICAL UNIT NOT READY, CONFIGURATION REQUIRED
|
||||
04h/17h M LOGICAL UNIT NOT READY, CALIBRATION REQUIRED
|
||||
04h/18h M LOGICAL UNIT NOT READY, A DOOR IS OPEN
|
||||
04h/19h M LOGICAL UNIT NOT READY, OPERATING IN SEQUENTIAL MODE
|
||||
04h/1Ah D B LOGICAL UNIT NOT READY, START STOP UNIT COMMAND IN PROGRESS
|
||||
04h/1Bh D B LOGICAL UNIT NOT READY, SANITIZE IN PROGRESS
|
||||
04h/1Ch DT MAEB LOGICAL UNIT NOT READY, ADDITIONAL POWER USE NOT YET GRANTED
|
||||
04h/1Dh D LOGICAL UNIT NOT READY, CONFIGURATION IN PROGRESS
|
||||
04h/1Eh D LOGICAL UNIT NOT READY, MICROCODE ACTIVATION REQUIRED
|
||||
05h/00h DTL WROMAEBKVF LOGICAL UNIT DOES NOT RESPOND TO SELECTION
|
||||
06h/00h D WROM BK NO REFERENCE POSITION FOUND
|
||||
07h/00h DTL WROM BK MULTIPLE PERIPHERAL DEVICES SELECTED
|
||||
08h/00h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION FAILURE
|
||||
08h/01h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION TIME-OUT
|
||||
08h/02h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION PARITY ERROR
|
||||
08h/03h DT ROM BK LOGICAL UNIT COMMUNICATION CRC ERROR (ULTRA-DMA/32)
|
||||
08h/04h DTLPWRO K UNREACHABLE COPY TARGET
|
||||
09h/00h DT WRO B TRACK FOLLOWING ERROR
|
||||
09h/01h WRO K TRACKING SERVO FAILURE
|
||||
09h/02h WRO K FOCUS SERVO FAILURE
|
||||
09h/03h WRO SPINDLE SERVO FAILURE
|
||||
09h/04h DT WRO B HEAD SELECT FAULT
|
||||
0Ah/00h DTLPWROMAEBKVF ERROR LOG OVERFLOW
|
||||
0Bh/00h DTLPWROMAEBKVF WARNING
|
||||
0Bh/01h DTLPWROMAEBKVF WARNING - SPECIFIED TEMPERATURE EXCEEDED
|
||||
0Bh/02h DTLPWROMAEBKVF WARNING - ENCLOSURE DEGRADED
|
||||
0Bh/03h DTLPWROMAEBKVF WARNING - BACKGROUND SELF-TEST FAILED
|
||||
0Bh/04h DTLPWRO AEBKVF WARNING - BACKGROUND PRE-SCAN DETECTED MEDIUM ERROR
|
||||
0Bh/05h DTLPWRO AEBKVF WARNING - BACKGROUND MEDIUM SCAN DETECTED MEDIUM ERROR
|
||||
0Bh/06h DTLPWROMAEBKVF WARNING - NON-VOLATILE CACHE NOW VOLATILE
|
||||
0Bh/07h DTLPWROMAEBKVF WARNING - DEGRADED POWER TO NON-VOLATILE CACHE
|
||||
0Bh/08h DTLPWROMAEBKVF WARNING - POWER LOSS EXPECTED
|
||||
0Bh/09h D WARNING - DEVICE STATISTICS NOTIFICATION ACTIVE
|
||||
0Ch/00h T R WRITE ERROR
|
||||
0Ch/01h K WRITE ERROR - RECOVERED WITH AUTO REALLOCATION
|
||||
0Ch/02h D W O BK WRITE ERROR - AUTO REALLOCATION FAILED
|
||||
0Ch/03h D W O BK WRITE ERROR - RECOMMEND REASSIGNMENT
|
||||
0Ch/04h DT W O B COMPRESSION CHECK MISCOMPARE ERROR
|
||||
0Ch/05h DT W O B DATA EXPANSION OCCURRED DURING COMPRESSION
|
||||
0Ch/06h DT W O B BLOCK NOT COMPRESSIBLE
|
||||
0Ch/07h R WRITE ERROR - RECOVERY NEEDED
|
||||
0Ch/08h R WRITE ERROR - RECOVERY FAILED
|
||||
0Ch/09h R WRITE ERROR - LOSS OF STREAMING
|
||||
0Ch/0Ah R WRITE ERROR - PADDING BLOCKS ADDED
|
||||
0Ch/0Bh DT WROM B AUXILIARY MEMORY WRITE ERROR
|
||||
0Ch/0Ch DTLPWRO AEBKVF WRITE ERROR - UNEXPECTED UNSOLICITED DATA
|
||||
0Ch/0Dh DTLPWRO AEBKVF WRITE ERROR - NOT ENOUGH UNSOLICITED DATA
|
||||
0Ch/0Eh DT W O BK MULTIPLE WRITE ERRORS
|
||||
0Ch/0Fh R DEFECTS IN ERROR WINDOW
|
||||
0Dh/00h DTLPWRO A K ERROR DETECTED BY THIRD PARTY TEMPORARY INITIATOR
|
||||
0Dh/01h DTLPWRO A K THIRD PARTY DEVICE FAILURE
|
||||
0Dh/02h DTLPWRO A K COPY TARGET DEVICE NOT REACHABLE
|
||||
0Dh/03h DTLPWRO A K INCORRECT COPY TARGET DEVICE TYPE
|
||||
0Dh/04h DTLPWRO A K COPY TARGET DEVICE DATA UNDERRUN
|
||||
0Dh/05h DTLPWRO A K COPY TARGET DEVICE DATA OVERRUN
|
||||
0Eh/00h DT PWROMAEBK F INVALID INFORMATION UNIT
|
||||
0Eh/01h DT PWROMAEBK F INFORMATION UNIT TOO SHORT
|
||||
0Eh/02h DT PWROMAEBK F INFORMATION UNIT TOO LONG
|
||||
0Eh/03h DT P R MAEBK F INVALID FIELD IN COMMAND INFORMATION UNIT
|
||||
0Fh/00h
|
||||
10h/00h D W O BK ID CRC OR ECC ERROR
|
||||
10h/01h DT W O LOGICAL BLOCK GUARD CHECK FAILED
|
||||
10h/02h DT W O LOGICAL BLOCK APPLICATION TAG CHECK FAILED
|
||||
10h/03h DT W O LOGICAL BLOCK REFERENCE TAG CHECK FAILED
|
||||
10h/04h T LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA
|
||||
10h/05h T LOGICAL BLOCK PROTECTION METHOD ERROR
|
||||
11h/00h DT WRO BK UNRECOVERED READ ERROR
|
||||
11h/01h DT WRO BK READ RETRIES EXHAUSTED
|
||||
11h/02h DT WRO BK ERROR TOO LONG TO CORRECT
|
||||
11h/03h DT W O BK MULTIPLE READ ERRORS
|
||||
11h/04h D W O BK UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED
|
||||
11h/05h WRO B L-EC UNCORRECTABLE ERROR
|
||||
11h/06h WRO B CIRC UNRECOVERED ERROR
|
||||
11h/07h W O B DATA RE-SYNCHRONIZATION ERROR
|
||||
11h/08h T INCOMPLETE BLOCK READ
|
||||
11h/09h T NO GAP FOUND
|
||||
11h/0Ah DT O BK MISCORRECTED ERROR
|
||||
11h/0Bh D W O BK UNRECOVERED READ ERROR - RECOMMEND REASSIGNMENT
|
||||
11h/0Ch D W O BK UNRECOVERED READ ERROR - RECOMMEND REWRITE THE DATA
|
||||
11h/0Dh DT WRO B DE-COMPRESSION CRC ERROR
|
||||
11h/0Eh DT WRO B CANNOT DECOMPRESS USING DECLARED ALGORITHM
|
||||
11h/0Fh R ERROR READING UPC/EAN NUMBER
|
||||
11h/10h R ERROR READING ISRC NUMBER
|
||||
11h/11h R READ ERROR - LOSS OF STREAMING
|
||||
11h/12h DT WROM B AUXILIARY MEMORY READ ERROR
|
||||
11h/13h DTLPWRO AEBKVF READ ERROR - FAILED RETRANSMISSION REQUEST
|
||||
11h/14h D READ ERROR - LBA MARKED BAD BY APPLICATION CLIENT
|
||||
11h/15h D WRITE AFTER SANITIZE REQUIRED
|
||||
12h/00h D W O BK ADDRESS MARK NOT FOUND FOR ID FIELD
|
||||
13h/00h D W O BK ADDRESS MARK NOT FOUND FOR DATA FIELD
|
||||
14h/00h DTL WRO BK RECORDED ENTITY NOT FOUND
|
||||
14h/01h DT WRO BK RECORD NOT FOUND
|
||||
14h/02h T FILEMARK OR SETMARK NOT FOUND
|
||||
14h/03h T END-OF-DATA NOT FOUND
|
||||
14h/04h T BLOCK SEQUENCE ERROR
|
||||
14h/05h DT W O BK RECORD NOT FOUND - RECOMMEND REASSIGNMENT
|
||||
14h/06h DT W O BK RECORD NOT FOUND - DATA AUTO-REALLOCATED
|
||||
14h/07h T LOCATE OPERATION FAILURE
|
||||
15h/00h DTL WROM BK RANDOM POSITIONING ERROR
|
||||
15h/01h DTL WROM BK MECHANICAL POSITIONING ERROR
|
||||
15h/02h DT WRO BK POSITIONING ERROR DETECTED BY READ OF MEDIUM
|
||||
16h/00h D W O BK DATA SYNCHRONIZATION MARK ERROR
|
||||
16h/01h D W O BK DATA SYNC ERROR - DATA REWRITTEN
|
||||
16h/02h D W O BK DATA SYNC ERROR - RECOMMEND REWRITE
|
||||
16h/03h D W O BK DATA SYNC ERROR - DATA AUTO-REALLOCATED
|
||||
16h/04h D W O BK DATA SYNC ERROR - RECOMMEND REASSIGNMENT
|
||||
17h/00h DT WRO BK RECOVERED DATA WITH NO ERROR CORRECTION APPLIED
|
||||
17h/01h DT WRO BK RECOVERED DATA WITH RETRIES
|
||||
17h/02h DT WRO BK RECOVERED DATA WITH POSITIVE HEAD OFFSET
|
||||
17h/03h DT WRO BK RECOVERED DATA WITH NEGATIVE HEAD OFFSET
|
||||
17h/04h WRO B RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED
|
||||
17h/05h D WRO BK RECOVERED DATA USING PREVIOUS SECTOR ID
|
||||
17h/06h D W O BK RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED
|
||||
17h/07h D WRO BK RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT
|
||||
17h/08h D WRO BK RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE
|
||||
17h/09h D WRO BK RECOVERED DATA WITHOUT ECC - DATA REWRITTEN
|
||||
18h/00h DT WRO BK RECOVERED DATA WITH ERROR CORRECTION APPLIED
|
||||
18h/01h D WRO BK RECOVERED DATA WITH ERROR CORR. & RETRIES APPLIED
|
||||
18h/02h D WRO BK RECOVERED DATA - DATA AUTO-REALLOCATED
|
||||
18h/03h R RECOVERED DATA WITH CIRC
|
||||
18h/04h R RECOVERED DATA WITH L-EC
|
||||
18h/05h D WRO BK RECOVERED DATA - RECOMMEND REASSIGNMENT
|
||||
18h/06h D WRO BK RECOVERED DATA - RECOMMEND REWRITE
|
||||
18h/07h D W O BK RECOVERED DATA WITH ECC - DATA REWRITTEN
|
||||
18h/08h R RECOVERED DATA WITH LINKING
|
||||
19h/00h D O K DEFECT LIST ERROR
|
||||
19h/01h D O K DEFECT LIST NOT AVAILABLE
|
||||
19h/02h D O K DEFECT LIST ERROR IN PRIMARY LIST
|
||||
19h/03h D O K DEFECT LIST ERROR IN GROWN LIST
|
||||
1Ah/00h DTLPWROMAEBKVF PARAMETER LIST LENGTH ERROR
|
||||
1Bh/00h DTLPWROMAEBKVF SYNCHRONOUS DATA TRANSFER ERROR
|
||||
1Ch/00h D O BK DEFECT LIST NOT FOUND
|
||||
1Ch/01h D O BK PRIMARY DEFECT LIST NOT FOUND
|
||||
1Ch/02h D O BK GROWN DEFECT LIST NOT FOUND
|
||||
1Dh/00h DT WRO BK MISCOMPARE DURING VERIFY OPERATION
|
||||
1Dh/01h D B MISCOMPARE VERIFY OF UNMAPPED LBA
|
||||
1Eh/00h D W O BK RECOVERED ID WITH ECC CORRECTION
|
||||
1Fh/00h D O K PARTIAL DEFECT LIST TRANSFER
|
||||
20h/00h DTLPWROMAEBKVF INVALID COMMAND OPERATION CODE
|
||||
20h/01h DT PWROMAEBK ACCESS DENIED - INITIATOR PENDING-ENROLLED
|
||||
20h/02h DT PWROMAEBK ACCESS DENIED - NO ACCESS RIGHTS
|
||||
20h/03h DT PWROMAEBK ACCESS DENIED - INVALID MGMT ID KEY
|
||||
20h/04h T ILLEGAL COMMAND WHILE IN WRITE CAPABLE STATE
|
||||
20h/05h T Obsolete
|
||||
20h/06h T ILLEGAL COMMAND WHILE IN EXPLICIT ADDRESS MODE
|
||||
20h/07h T ILLEGAL COMMAND WHILE IN IMPLICIT ADDRESS MODE
|
||||
20h/08h DT PWROMAEBK ACCESS DENIED - ENROLLMENT CONFLICT
|
||||
20h/09h DT PWROMAEBK ACCESS DENIED - INVALID LU IDENTIFIER
|
||||
20h/0Ah DT PWROMAEBK ACCESS DENIED - INVALID PROXY TOKEN
|
||||
20h/0Bh DT PWROMAEBK ACCESS DENIED - ACL LUN CONFLICT
|
||||
20h/0Ch T ILLEGAL COMMAND WHEN NOT IN APPEND-ONLY MODE
|
||||
21h/00h DT WRO BK LOGICAL BLOCK ADDRESS OUT OF RANGE
|
||||
21h/01h DT WROM BK INVALID ELEMENT ADDRESS
|
||||
21h/02h R INVALID ADDRESS FOR WRITE
|
||||
21h/03h R INVALID WRITE CROSSING LAYER JUMP
|
||||
22h/00h D ILLEGAL FUNCTION (USE 20 00, 24 00, OR 26 00)
|
||||
23h/00h DT P B INVALID TOKEN OPERATION, CAUSE NOT REPORTABLE
|
||||
23h/01h DT P B INVALID TOKEN OPERATION, UNSUPPORTED TOKEN TYPE
|
||||
23h/02h DT P B INVALID TOKEN OPERATION, REMOTE TOKEN USAGE NOT SUPPORTED
|
||||
23h/03h DT P B INVALID TOKEN OPERATION, REMOTE ROD TOKEN CREATION NOT SUPPORTED
|
||||
23h/04h DT P B INVALID TOKEN OPERATION, TOKEN UNKNOWN
|
||||
23h/05h DT P B INVALID TOKEN OPERATION, TOKEN CORRUPT
|
||||
23h/06h DT P B INVALID TOKEN OPERATION, TOKEN REVOKED
|
||||
23h/07h DT P B INVALID TOKEN OPERATION, TOKEN EXPIRED
|
||||
23h/08h DT P B INVALID TOKEN OPERATION, TOKEN CANCELLED
|
||||
23h/09h DT P B INVALID TOKEN OPERATION, TOKEN DELETED
|
||||
23h/0Ah DT P B INVALID TOKEN OPERATION, INVALID TOKEN LENGTH
|
||||
24h/00h DTLPWROMAEBKVF INVALID FIELD IN CDB
|
||||
24h/01h DTLPWRO AEBKVF CDB DECRYPTION ERROR
|
||||
24h/02h T Obsolete
|
||||
24h/03h T Obsolete
|
||||
24h/04h F SECURITY AUDIT VALUE FROZEN
|
||||
24h/05h F SECURITY WORKING KEY FROZEN
|
||||
24h/06h F NONCE NOT UNIQUE
|
||||
24h/07h F NONCE TIMESTAMP OUT OF RANGE
|
||||
24h/08h DT R MAEBKV INVALID XCDB
|
||||
25h/00h DTLPWROMAEBKVF LOGICAL UNIT NOT SUPPORTED
|
||||
26h/00h DTLPWROMAEBKVF INVALID FIELD IN PARAMETER LIST
|
||||
26h/01h DTLPWROMAEBKVF PARAMETER NOT SUPPORTED
|
||||
26h/02h DTLPWROMAEBKVF PARAMETER VALUE INVALID
|
||||
26h/03h DTLPWROMAE K THRESHOLD PARAMETERS NOT SUPPORTED
|
||||
26h/04h DTLPWROMAEBKVF INVALID RELEASE OF PERSISTENT RESERVATION
|
||||
26h/05h DTLPWRO A BK DATA DECRYPTION ERROR
|
||||
26h/06h DTLPWRO K TOO MANY TARGET DESCRIPTORS
|
||||
26h/07h DTLPWRO K UNSUPPORTED TARGET DESCRIPTOR TYPE CODE
|
||||
26h/08h DTLPWRO K TOO MANY SEGMENT DESCRIPTORS
|
||||
26h/09h DTLPWRO K UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE
|
||||
26h/0Ah DTLPWRO K UNEXPECTED INEXACT SEGMENT
|
||||
26h/0Bh DTLPWRO K INLINE DATA LENGTH EXCEEDED
|
||||
26h/0Ch DTLPWRO K INVALID OPERATION FOR COPY SOURCE OR DESTINATION
|
||||
26h/0Dh DTLPWRO K COPY SEGMENT GRANULARITY VIOLATION
|
||||
26h/0Eh DT PWROMAEBK INVALID PARAMETER WHILE PORT IS ENABLED
|
||||
26h/0Fh F INVALID DATA-OUT BUFFER INTEGRITY CHECK VALUE
|
||||
26h/10h T DATA DECRYPTION KEY FAIL LIMIT REACHED
|
||||
26h/11h T INCOMPLETE KEY-ASSOCIATED DATA SET
|
||||
26h/12h T VENDOR SPECIFIC KEY REFERENCE NOT FOUND
|
||||
27h/00h DT WRO BK WRITE PROTECTED
|
||||
27h/01h DT WRO BK HARDWARE WRITE PROTECTED
|
||||
27h/02h DT WRO BK LOGICAL UNIT SOFTWARE WRITE PROTECTED
|
||||
27h/03h T R ASSOCIATED WRITE PROTECT
|
||||
27h/04h T R PERSISTENT WRITE PROTECT
|
||||
27h/05h T R PERMANENT WRITE PROTECT
|
||||
27h/06h R F CONDITIONAL WRITE PROTECT
|
||||
27h/07h D B SPACE ALLOCATION FAILED WRITE PROTECT
|
||||
28h/00h DTLPWROMAEBKVF NOT READY TO READY CHANGE, MEDIUM MAY HAVE CHANGED
|
||||
28h/01h DT WROM B IMPORT OR EXPORT ELEMENT ACCESSED
|
||||
28h/02h R FORMAT-LAYER MAY HAVE CHANGED
|
||||
28h/03h M IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED
|
||||
29h/00h DTLPWROMAEBKVF POWER ON, RESET, OR BUS DEVICE RESET OCCURRED
|
||||
29h/01h DTLPWROMAEBKVF POWER ON OCCURRED
|
||||
29h/02h DTLPWROMAEBKVF SCSI BUS RESET OCCURRED
|
||||
29h/03h DTLPWROMAEBKVF BUS DEVICE RESET FUNCTION OCCURRED
|
||||
29h/04h DTLPWROMAEBKVF DEVICE INTERNAL RESET
|
||||
29h/05h DTLPWROMAEBKVF TRANSCEIVER MODE CHANGED TO SINGLE-ENDED
|
||||
29h/06h DTLPWROMAEBKVF TRANSCEIVER MODE CHANGED TO LVD
|
||||
29h/07h DTLPWROMAEBKVF I_T NEXUS LOSS OCCURRED
|
||||
2Ah/00h DTL WROMAEBKVF PARAMETERS CHANGED
|
||||
2Ah/01h DTL WROMAEBKVF MODE PARAMETERS CHANGED
|
||||
2Ah/02h DTL WROMAE K LOG PARAMETERS CHANGED
|
||||
2Ah/03h DTLPWROMAE K RESERVATIONS PREEMPTED
|
||||
2Ah/04h DTLPWROMAE RESERVATIONS RELEASED
|
||||
2Ah/05h DTLPWROMAE REGISTRATIONS PREEMPTED
|
||||
2Ah/06h DTLPWROMAEBKVF ASYMMETRIC ACCESS STATE CHANGED
|
||||
2Ah/07h DTLPWROMAEBKVF IMPLICIT ASYMMETRIC ACCESS STATE TRANSITION FAILED
|
||||
2Ah/08h DT WROMAEBKVF PRIORITY CHANGED
|
||||
2Ah/09h D CAPACITY DATA HAS CHANGED
|
||||
2Ah/0Ah DT ERROR HISTORY I_T NEXUS CLEARED
|
||||
2Ah/0Bh DT ERROR HISTORY SNAPSHOT RELEASED
|
||||
2Ah/0Ch F ERROR RECOVERY ATTRIBUTES HAVE CHANGED
|
||||
2Ah/0Dh T DATA ENCRYPTION CAPABILITIES CHANGED
|
||||
2Ah/10h DT M E V TIMESTAMP CHANGED
|
||||
2Ah/11h T DATA ENCRYPTION PARAMETERS CHANGED BY ANOTHER I_T NEXUS
|
||||
2Ah/12h T DATA ENCRYPTION PARAMETERS CHANGED BY VENDOR SPECIFIC EVENT
|
||||
2Ah/13h T DATA ENCRYPTION KEY INSTANCE COUNTER HAS CHANGED
|
||||
2Ah/14h DT R MAEBKV SA CREATION CAPABILITIES DATA HAS CHANGED
|
||||
2Ah/15h T M V MEDIUM REMOVAL PREVENTION PREEMPTED
|
||||
2Bh/00h DTLPWRO K COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT
|
||||
2Ch/00h DTLPWROMAEBKVF COMMAND SEQUENCE ERROR
|
||||
2Ch/01h TOO MANY WINDOWS SPECIFIED
|
||||
2Ch/02h INVALID COMBINATION OF WINDOWS SPECIFIED
|
||||
2Ch/03h R CURRENT PROGRAM AREA IS NOT EMPTY
|
||||
2Ch/04h R CURRENT PROGRAM AREA IS EMPTY
|
||||
2Ch/05h B ILLEGAL POWER CONDITION REQUEST
|
||||
2Ch/06h R PERSISTENT PREVENT CONFLICT
|
||||
2Ch/07h DTLPWROMAEBKVF PREVIOUS BUSY STATUS
|
||||
2Ch/08h DTLPWROMAEBKVF PREVIOUS TASK SET FULL STATUS
|
||||
2Ch/09h DTLPWROM EBKVF PREVIOUS RESERVATION CONFLICT STATUS
|
||||
2Ch/0Ah F PARTITION OR COLLECTION CONTAINS USER OBJECTS
|
||||
2Ch/0Bh T NOT RESERVED
|
||||
2Ch/0Ch D ORWRITE GENERATION DOES NOT MATCH
|
||||
2Dh/00h T OVERWRITE ERROR ON UPDATE IN PLACE
|
||||
2Eh/00h D WROM B INSUFFICIENT TIME FOR OPERATION
|
||||
2Eh/01h D W OM B COMMAND TIMEOUT BEFORE PROCESSING
|
||||
2Eh/02h D W OM B COMMAND TIMEOUT DURING PROCESSING
|
||||
2Eh/03h D W OM B COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY
|
||||
2Fh/00h DTLPWROMAEBKVF COMMANDS CLEARED BY ANOTHER INITIATOR
|
||||
2Fh/01h D COMMANDS CLEARED BY POWER LOSS NOTIFICATION
|
||||
2Fh/02h DTLPWROMAEBKVF COMMANDS CLEARED BY DEVICE SERVER
|
||||
2Fh/03h DTLPWROMAEBKVF SOME COMMANDS CLEARED BY QUEUING LAYER EVENT
|
||||
30h/00h DT WROM BK INCOMPATIBLE MEDIUM INSTALLED
|
||||
30h/01h DT WRO BK CANNOT READ MEDIUM - UNKNOWN FORMAT
|
||||
30h/02h DT WRO BK CANNOT READ MEDIUM - INCOMPATIBLE FORMAT
|
||||
30h/03h DT R M K CLEANING CARTRIDGE INSTALLED
|
||||
30h/04h DT WRO BK CANNOT WRITE MEDIUM - UNKNOWN FORMAT
|
||||
30h/05h DT WRO BK CANNOT WRITE MEDIUM - INCOMPATIBLE FORMAT
|
||||
30h/06h DT WRO B CANNOT FORMAT MEDIUM - INCOMPATIBLE MEDIUM
|
||||
30h/07h DTL WROMAEBKVF CLEANING FAILURE
|
||||
30h/08h R CANNOT WRITE - APPLICATION CODE MISMATCH
|
||||
30h/09h R CURRENT SESSION NOT FIXATED FOR APPEND
|
||||
30h/0Ah DT WRO AEBK CLEANING REQUEST REJECTED
|
||||
30h/0Ch T WORM MEDIUM - OVERWRITE ATTEMPTED
|
||||
30h/0Dh T WORM MEDIUM - INTEGRITY CHECK
|
||||
30h/10h R MEDIUM NOT FORMATTED
|
||||
30h/11h M INCOMPATIBLE VOLUME TYPE
|
||||
30h/12h M INCOMPATIBLE VOLUME QUALIFIER
|
||||
30h/13h M CLEANING VOLUME EXPIRED
|
||||
31h/00h DT WRO BK MEDIUM FORMAT CORRUPTED
|
||||
31h/01h D L RO B FORMAT COMMAND FAILED
|
||||
31h/02h R ZONED FORMATTING FAILED DUE TO SPARE LINKING
|
||||
31h/03h D B SANITIZE COMMAND FAILED
|
||||
32h/00h D W O BK NO DEFECT SPARE LOCATION AVAILABLE
|
||||
32h/01h D W O BK DEFECT LIST UPDATE FAILURE
|
||||
33h/00h T TAPE LENGTH ERROR
|
||||
34h/00h DTLPWROMAEBKVF ENCLOSURE FAILURE
|
||||
35h/00h DTLPWROMAEBKVF ENCLOSURE SERVICES FAILURE
|
||||
35h/01h DTLPWROMAEBKVF UNSUPPORTED ENCLOSURE FUNCTION
|
||||
35h/02h DTLPWROMAEBKVF ENCLOSURE SERVICES UNAVAILABLE
|
||||
35h/03h DTLPWROMAEBKVF ENCLOSURE SERVICES TRANSFER FAILURE
|
||||
35h/04h DTLPWROMAEBKVF ENCLOSURE SERVICES TRANSFER REFUSED
|
||||
35h/05h DTL WROMAEBKVF ENCLOSURE SERVICES CHECKSUM ERROR
|
||||
36h/00h L RIBBON, INK, OR TONER FAILURE
|
||||
37h/00h DTL WROMAEBKVF ROUNDED PARAMETER
|
||||
38h/00h B EVENT STATUS NOTIFICATION
|
||||
38h/02h B ESN - POWER MANAGEMENT CLASS EVENT
|
||||
38h/04h B ESN - MEDIA CLASS EVENT
|
||||
38h/06h B ESN - DEVICE BUSY CLASS EVENT
|
||||
38h/07h D THIN PROVISIONING SOFT THRESHOLD REACHED
|
||||
39h/00h DTL WROMAE K SAVING PARAMETERS NOT SUPPORTED
|
||||
3Ah/00h DTL WROM BK MEDIUM NOT PRESENT
|
||||
3Ah/01h DT WROM BK MEDIUM NOT PRESENT - TRAY CLOSED
|
||||
3Ah/02h DT WROM BK MEDIUM NOT PRESENT - TRAY OPEN
|
||||
3Ah/03h DT WROM B MEDIUM NOT PRESENT - LOADABLE
|
||||
3Ah/04h DT WRO B MEDIUM NOT PRESENT - MEDIUM AUXILIARY MEMORY ACCESSIBLE
|
||||
3Bh/00h TL SEQUENTIAL POSITIONING ERROR
|
||||
3Bh/01h T TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM
|
||||
3Bh/02h T TAPE POSITION ERROR AT END-OF-MEDIUM
|
||||
3Bh/03h L TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY
|
||||
3Bh/04h L SLEW FAILURE
|
||||
3Bh/05h L PAPER JAM
|
||||
3Bh/06h L FAILED TO SENSE TOP-OF-FORM
|
||||
3Bh/07h L FAILED TO SENSE BOTTOM-OF-FORM
|
||||
3Bh/08h T REPOSITION ERROR
|
||||
3Bh/09h READ PAST END OF MEDIUM
|
||||
3Bh/0Ah READ PAST BEGINNING OF MEDIUM
|
||||
3Bh/0Bh POSITION PAST END OF MEDIUM
|
||||
3Bh/0Ch T POSITION PAST BEGINNING OF MEDIUM
|
||||
3Bh/0Dh DT WROM BK MEDIUM DESTINATION ELEMENT FULL
|
||||
3Bh/0Eh DT WROM BK MEDIUM SOURCE ELEMENT EMPTY
|
||||
3Bh/0Fh R END OF MEDIUM REACHED
|
||||
3Bh/11h DT WROM BK MEDIUM MAGAZINE NOT ACCESSIBLE
|
||||
3Bh/12h DT WROM BK MEDIUM MAGAZINE REMOVED
|
||||
3Bh/13h DT WROM BK MEDIUM MAGAZINE INSERTED
|
||||
3Bh/14h DT WROM BK MEDIUM MAGAZINE LOCKED
|
||||
3Bh/15h DT WROM BK MEDIUM MAGAZINE UNLOCKED
|
||||
3Bh/16h R MECHANICAL POSITIONING OR CHANGER ERROR
|
||||
3Bh/17h F READ PAST END OF USER OBJECT
|
||||
3Bh/18h M ELEMENT DISABLED
|
||||
3Bh/19h M ELEMENT ENABLED
|
||||
3Bh/1Ah M DATA TRANSFER DEVICE REMOVED
|
||||
3Bh/1Bh M DATA TRANSFER DEVICE INSERTED
|
||||
3Bh/1Ch T TOO MANY LOGICAL OBJECTS ON PARTITION TO SUPPORT OPERATION
|
||||
3Ch/00h
|
||||
3Dh/00h DTLPWROMAE K INVALID BITS IN IDENTIFY MESSAGE
|
||||
3Eh/00h DTLPWROMAEBKVF LOGICAL UNIT HAS NOT SELF-CONFIGURED YET
|
||||
3Eh/01h DTLPWROMAEBKVF LOGICAL UNIT FAILURE
|
||||
3Eh/02h DTLPWROMAEBKVF TIMEOUT ON LOGICAL UNIT
|
||||
3Eh/03h DTLPWROMAEBKVF LOGICAL UNIT FAILED SELF-TEST
|
||||
3Eh/04h DTLPWROMAEBKVF LOGICAL UNIT UNABLE TO UPDATE SELF-TEST LOG
|
||||
3Fh/00h DTLPWROMAEBKVF TARGET OPERATING CONDITIONS HAVE CHANGED
|
||||
3Fh/01h DTLPWROMAEBKVF MICROCODE HAS BEEN CHANGED
|
||||
3Fh/02h DTLPWROM BK CHANGED OPERATING DEFINITION
|
||||
3Fh/03h DTLPWROMAEBKVF INQUIRY DATA HAS CHANGED
|
||||
3Fh/04h DT WROMAEBK COMPONENT DEVICE ATTACHED
|
||||
3Fh/05h DT WROMAEBK DEVICE IDENTIFIER CHANGED
|
||||
3Fh/06h DT WROMAEB REDUNDANCY GROUP CREATED OR MODIFIED
|
||||
3Fh/07h DT WROMAEB REDUNDANCY GROUP DELETED
|
||||
3Fh/08h DT WROMAEB SPARE CREATED OR MODIFIED
|
||||
3Fh/09h DT WROMAEB SPARE DELETED
|
||||
3Fh/0Ah DT WROMAEBK VOLUME SET CREATED OR MODIFIED
|
||||
3Fh/0Bh DT WROMAEBK VOLUME SET DELETED
|
||||
3Fh/0Ch DT WROMAEBK VOLUME SET DEASSIGNED
|
||||
3Fh/0Dh DT WROMAEBK VOLUME SET REASSIGNED
|
||||
3Fh/0Eh DTLPWROMAE REPORTED LUNS DATA HAS CHANGED
|
||||
3Fh/0Fh DTLPWROMAEBKVF ECHO BUFFER OVERWRITTEN
|
||||
3Fh/10h DT WROM B MEDIUM LOADABLE
|
||||
3Fh/11h DT WROM B MEDIUM AUXILIARY MEMORY ACCESSIBLE
|
||||
3Fh/12h DTLPWR MAEBK F iSCSI IP ADDRESS ADDED
|
||||
3Fh/13h DTLPWR MAEBK F iSCSI IP ADDRESS REMOVED
|
||||
3Fh/14h DTLPWR MAEBK F iSCSI IP ADDRESS CHANGED
|
||||
3Fh/15h DTLPWR MAEBK INSPECT REFERRALS SENSE DESCRIPTORS
|
||||
40h/00h D RAM FAILURE (SHOULD USE 40 NN)
|
||||
40h/NNh DTLPWROMAEBKVF DIAGNOSTIC FAILURE ON COMPONENT NN (80h-FFh)
|
||||
41h/00h D DATA PATH FAILURE (SHOULD USE 40 NN)
|
||||
42h/00h D POWER-ON OR SELF-TEST FAILURE (SHOULD USE 40 NN)
|
||||
43h/00h DTLPWROMAEBKVF MESSAGE ERROR
|
||||
44h/00h DTLPWROMAEBKVF INTERNAL TARGET FAILURE
|
||||
44h/01h DT P MAEBKVF PERSISTENT RESERVATION INFORMATION LOST
|
||||
44h/71h DT B ATA DEVICE FAILED SET FEATURES
|
||||
45h/00h DTLPWROMAEBKVF SELECT OR RESELECT FAILURE
|
||||
46h/00h DTLPWROM BK UNSUCCESSFUL SOFT RESET
|
||||
47h/00h DTLPWROMAEBKVF SCSI PARITY ERROR
|
||||
47h/01h DTLPWROMAEBKVF DATA PHASE CRC ERROR DETECTED
|
||||
47h/02h DTLPWROMAEBKVF SCSI PARITY ERROR DETECTED DURING ST DATA PHASE
|
||||
47h/03h DTLPWROMAEBKVF INFORMATION UNIT iuCRC ERROR DETECTED
|
||||
47h/04h DTLPWROMAEBKVF ASYNCHRONOUS INFORMATION PROTECTION ERROR DETECTED
|
||||
47h/05h DTLPWROMAEBKVF PROTOCOL SERVICE CRC ERROR
|
||||
47h/06h DT MAEBKVF PHY TEST FUNCTION IN PROGRESS
|
||||
47h/7Fh DT PWROMAEBK SOME COMMANDS CLEARED BY ISCSI PROTOCOL EVENT
|
||||
48h/00h DTLPWROMAEBKVF INITIATOR DETECTED ERROR MESSAGE RECEIVED
|
||||
49h/00h DTLPWROMAEBKVF INVALID MESSAGE ERROR
|
||||
4Ah/00h DTLPWROMAEBKVF COMMAND PHASE ERROR
|
||||
4Bh/00h DTLPWROMAEBKVF DATA PHASE ERROR
|
||||
4Bh/01h DT PWROMAEBK INVALID TARGET PORT TRANSFER TAG RECEIVED
|
||||
4Bh/02h DT PWROMAEBK TOO MUCH WRITE DATA
|
||||
4Bh/03h DT PWROMAEBK ACK/NAK TIMEOUT
|
||||
4Bh/04h DT PWROMAEBK NAK RECEIVED
|
||||
4Bh/05h DT PWROMAEBK DATA OFFSET ERROR
|
||||
4Bh/06h DT PWROMAEBK INITIATOR RESPONSE TIMEOUT
|
||||
4Bh/07h DT PWROMAEBK F CONNECTION LOST
|
||||
4Bh/08h DT PWROMAEBK F DATA-IN BUFFER OVERFLOW - DATA BUFFER SIZE
|
||||
4Bh/09h DT PWROMAEBK F DATA-IN BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA
|
||||
4Bh/0Ah DT PWROMAEBK F DATA-IN BUFFER ERROR
|
||||
4Bh/0Bh DT PWROMAEBK F DATA-OUT BUFFER OVERFLOW - DATA BUFFER SIZE
|
||||
4Bh/0Ch DT PWROMAEBK F DATA-OUT BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA
|
||||
4Bh/0Dh DT PWROMAEBK F DATA-OUT BUFFER ERROR
|
||||
4Bh/0Eh DT PWROMAEBK F PCIE FABRIC ERROR
|
||||
4Bh/0Fh DT PWROMAEBK F PCIE COMPLETION TIMEOUT
|
||||
4Bh/10h DT PWROMAEBK F PCIE COMPLETER ABORT
|
||||
4Bh/11h DT PWROMAEBK F PCIE POISONED TLP RECEIVED
|
||||
4Bh/12h DT PWROMAEBK F PCIE ECRC CHECK FAILED
|
||||
4Bh/13h DT PWROMAEBK F PCIE UNSUPPORTED REQUEST
|
||||
4Bh/14h DT PWROMAEBK F PCIE ACS VIOLATION
|
||||
4Bh/15h DT PWROMAEBK F PCIE TLP PREFIX BLOCKED
|
||||
4Ch/00h DTLPWROMAEBKVF LOGICAL UNIT FAILED SELF-CONFIGURATION
|
||||
4Dh/NNh DTLPWROMAEBKVF TAGGED OVERLAPPED COMMANDS (NN = TASK TAG)
|
||||
4Eh/00h DTLPWROMAEBKVF OVERLAPPED COMMANDS ATTEMPTED
|
||||
4Fh/00h
|
||||
50h/00h T WRITE APPEND ERROR
|
||||
50h/01h T WRITE APPEND POSITION ERROR
|
||||
50h/02h T POSITION ERROR RELATED TO TIMING
|
||||
51h/00h T RO ERASE FAILURE
|
||||
51h/01h R ERASE FAILURE - INCOMPLETE ERASE OPERATION DETECTED
|
||||
52h/00h T CARTRIDGE FAULT
|
||||
53h/00h DTL WROM BK MEDIA LOAD OR EJECT FAILED
|
||||
53h/01h T UNLOAD TAPE FAILURE
|
||||
53h/02h DT WROM BK MEDIUM REMOVAL PREVENTED
|
||||
53h/03h M MEDIUM REMOVAL PREVENTED BY DATA TRANSFER ELEMENT
|
||||
53h/04h T MEDIUM THREAD OR UNTHREAD FAILURE
|
||||
53h/05h M VOLUME IDENTIFIER INVALID
|
||||
53h/06h M VOLUME IDENTIFIER MISSING
|
||||
53h/07h M DUPLICATE VOLUME IDENTIFIER
|
||||
53h/08h M ELEMENT STATUS UNKNOWN
|
||||
54h/00h P SCSI TO HOST SYSTEM INTERFACE FAILURE
|
||||
55h/00h P SYSTEM RESOURCE FAILURE
|
||||
55h/01h D O BK SYSTEM BUFFER FULL
|
||||
55h/02h DTLPWROMAE K INSUFFICIENT RESERVATION RESOURCES
|
||||
55h/03h DTLPWROMAE K INSUFFICIENT RESOURCES
|
||||
55h/04h DTLPWROMAE K INSUFFICIENT REGISTRATION RESOURCES
|
||||
55h/05h DT PWROMAEBK INSUFFICIENT ACCESS CONTROL RESOURCES
|
||||
55h/06h DT WROM B AUXILIARY MEMORY OUT OF SPACE
|
||||
55h/07h F QUOTA ERROR
|
||||
55h/08h T MAXIMUM NUMBER OF SUPPLEMENTAL DECRYPTION KEYS EXCEEDED
|
||||
55h/09h M MEDIUM AUXILIARY MEMORY NOT ACCESSIBLE
|
||||
55h/0Ah M DATA CURRENTLY UNAVAILABLE
|
||||
55h/0Bh DTLPWROMAEBKVF INSUFFICIENT POWER FOR OPERATION
|
||||
55h/0Ch DT P B INSUFFICIENT RESOURCES TO CREATE ROD
|
||||
55h/0Dh DT P B INSUFFICIENT RESOURCES TO CREATE ROD TOKEN
|
||||
56h/00h
|
||||
57h/00h R UNABLE TO RECOVER TABLE-OF-CONTENTS
|
||||
58h/00h O GENERATION DOES NOT EXIST
|
||||
59h/00h O UPDATED BLOCK READ
|
||||
5Ah/00h DTLPWRO BK OPERATOR REQUEST OR STATE CHANGE INPUT
|
||||
5Ah/01h DT WROM BK OPERATOR MEDIUM REMOVAL REQUEST
|
||||
5Ah/02h DT WRO A BK OPERATOR SELECTED WRITE PROTECT
|
||||
5Ah/03h DT WRO A BK OPERATOR SELECTED WRITE PERMIT
|
||||
5Bh/00h DTLPWROM K LOG EXCEPTION
|
||||
5Bh/01h DTLPWROM K THRESHOLD CONDITION MET
|
||||
5Bh/02h DTLPWROM K LOG COUNTER AT MAXIMUM
|
||||
5Bh/03h DTLPWROM K LOG LIST CODES EXHAUSTED
|
||||
5Ch/00h D O RPL STATUS CHANGE
|
||||
5Ch/01h D O SPINDLES SYNCHRONIZED
|
||||
5Ch/02h D O SPINDLES NOT SYNCHRONIZED
|
||||
5Dh/00h DTLPWROMAEBKVF FAILURE PREDICTION THRESHOLD EXCEEDED
|
||||
5Dh/01h R B MEDIA FAILURE PREDICTION THRESHOLD EXCEEDED
|
||||
5Dh/02h R LOGICAL UNIT FAILURE PREDICTION THRESHOLD EXCEEDED
|
||||
5Dh/03h R SPARE AREA EXHAUSTION PREDICTION THRESHOLD EXCEEDED
|
||||
5Dh/10h D B HARDWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/11h D B HARDWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/12h D B HARDWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/13h D B HARDWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/14h D B HARDWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/15h D B HARDWARE IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/16h D B HARDWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/17h D B HARDWARE IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/18h D B HARDWARE IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/19h D B HARDWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/1Ah D B HARDWARE IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/1Bh D B HARDWARE IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/1Ch D B HARDWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/20h D B CONTROLLER IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/21h D B CONTROLLER IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/22h D B CONTROLLER IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/23h D B CONTROLLER IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/24h D B CONTROLLER IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/25h D B CONTROLLER IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/26h D B CONTROLLER IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/27h D B CONTROLLER IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/28h D B CONTROLLER IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/29h D B CONTROLLER IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/2Ah D B CONTROLLER IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/2Bh D B CONTROLLER IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/2Ch D B CONTROLLER IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/30h D B DATA CHANNEL IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/31h D B DATA CHANNEL IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/32h D B DATA CHANNEL IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/33h D B DATA CHANNEL IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/34h D B DATA CHANNEL IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/35h D B DATA CHANNEL IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/36h D B DATA CHANNEL IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/37h D B DATA CHANNEL IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/38h D B DATA CHANNEL IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/39h D B DATA CHANNEL IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/3Ah D B DATA CHANNEL IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/3Bh D B DATA CHANNEL IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/3Ch D B DATA CHANNEL IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/40h D B SERVO IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/41h D B SERVO IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/42h D B SERVO IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/43h D B SERVO IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/44h D B SERVO IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/45h D B SERVO IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/46h D B SERVO IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/47h D B SERVO IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/48h D B SERVO IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/49h D B SERVO IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/4Ah D B SERVO IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/4Bh D B SERVO IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/4Ch D B SERVO IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/50h D B SPINDLE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/51h D B SPINDLE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/52h D B SPINDLE IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/53h D B SPINDLE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/54h D B SPINDLE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/55h D B SPINDLE IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/56h D B SPINDLE IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/57h D B SPINDLE IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/58h D B SPINDLE IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/59h D B SPINDLE IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/5Ah D B SPINDLE IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/5Bh D B SPINDLE IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/5Ch D B SPINDLE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/60h D B FIRMWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE
|
||||
5Dh/61h D B FIRMWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH
|
||||
5Dh/62h D B FIRMWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH
|
||||
5Dh/63h D B FIRMWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH
|
||||
5Dh/64h D B FIRMWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS
|
||||
5Dh/65h D B FIRMWARE IMPENDING FAILURE ACCESS TIMES TOO HIGH
|
||||
5Dh/66h D B FIRMWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH
|
||||
5Dh/67h D B FIRMWARE IMPENDING FAILURE CHANNEL PARAMETRICS
|
||||
5Dh/68h D B FIRMWARE IMPENDING FAILURE CONTROLLER DETECTED
|
||||
5Dh/69h D B FIRMWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE
|
||||
5Dh/6Ah D B FIRMWARE IMPENDING FAILURE SEEK TIME PERFORMANCE
|
||||
5Dh/6Bh D B FIRMWARE IMPENDING FAILURE SPIN-UP RETRY COUNT
|
||||
5Dh/6Ch D B FIRMWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT
|
||||
5Dh/FFh DTLPWROMAEBKVF FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE)
|
||||
5Eh/00h DTLPWRO A K LOW POWER CONDITION ON
|
||||
5Eh/01h DTLPWRO A K IDLE CONDITION ACTIVATED BY TIMER
|
||||
5Eh/02h DTLPWRO A K STANDBY CONDITION ACTIVATED BY TIMER
|
||||
5Eh/03h DTLPWRO A K IDLE CONDITION ACTIVATED BY COMMAND
|
||||
5Eh/04h DTLPWRO A K STANDBY CONDITION ACTIVATED BY COMMAND
|
||||
5Eh/05h DTLPWRO A K IDLE_B CONDITION ACTIVATED BY TIMER
|
||||
5Eh/06h DTLPWRO A K IDLE_B CONDITION ACTIVATED BY COMMAND
|
||||
5Eh/07h DTLPWRO A K IDLE_C CONDITION ACTIVATED BY TIMER
|
||||
5Eh/08h DTLPWRO A K IDLE_C CONDITION ACTIVATED BY COMMAND
|
||||
5Eh/09h DTLPWRO A K STANDBY_Y CONDITION ACTIVATED BY TIMER
|
||||
5Eh/0Ah DTLPWRO A K STANDBY_Y CONDITION ACTIVATED BY COMMAND
|
||||
5Eh/41h B POWER STATE CHANGE TO ACTIVE
|
||||
5Eh/42h B POWER STATE CHANGE TO IDLE
|
||||
5Eh/43h B POWER STATE CHANGE TO STANDBY
|
||||
5Eh/45h B POWER STATE CHANGE TO SLEEP
|
||||
5Eh/47h BK POWER STATE CHANGE TO DEVICE CONTROL
|
||||
5Fh/00h
|
||||
60h/00h LAMP FAILURE
|
||||
61h/00h VIDEO ACQUISITION ERROR
|
||||
61h/01h UNABLE TO ACQUIRE VIDEO
|
||||
61h/02h OUT OF FOCUS
|
||||
62h/00h SCAN HEAD POSITIONING ERROR
|
||||
63h/00h R END OF USER AREA ENCOUNTERED ON THIS TRACK
|
||||
63h/01h R PACKET DOES NOT FIT IN AVAILABLE SPACE
|
||||
64h/00h R ILLEGAL MODE FOR THIS TRACK
|
||||
64h/01h R INVALID PACKET SIZE
|
||||
65h/00h DTLPWROMAEBKVF VOLTAGE FAULT
|
||||
66h/00h AUTOMATIC DOCUMENT FEEDER COVER UP
|
||||
66h/01h AUTOMATIC DOCUMENT FEEDER LIFT UP
|
||||
66h/02h DOCUMENT JAM IN AUTOMATIC DOCUMENT FEEDER
|
||||
66h/03h DOCUMENT MISS FEED AUTOMATIC IN DOCUMENT FEEDER
|
||||
67h/00h A CONFIGURATION FAILURE
|
||||
67h/01h A CONFIGURATION OF INCAPABLE LOGICAL UNITS FAILED
|
||||
67h/02h A ADD LOGICAL UNIT FAILED
|
||||
67h/03h A MODIFICATION OF LOGICAL UNIT FAILED
|
||||
67h/04h A EXCHANGE OF LOGICAL UNIT FAILED
|
||||
67h/05h A REMOVE OF LOGICAL UNIT FAILED
|
||||
67h/06h A ATTACHMENT OF LOGICAL UNIT FAILED
|
||||
67h/07h A CREATION OF LOGICAL UNIT FAILED
|
||||
67h/08h A ASSIGN FAILURE OCCURRED
|
||||
67h/09h A MULTIPLY ASSIGNED LOGICAL UNIT
|
||||
67h/0Ah DTLPWROMAEBKVF SET TARGET PORT GROUPS COMMAND FAILED
|
||||
67h/0Bh DT B ATA DEVICE FEATURE NOT ENABLED
|
||||
68h/00h A LOGICAL UNIT NOT CONFIGURED
|
||||
68h/01h D SUBSIDIARY LOGICAL UNIT NOT CONFIGURED
|
||||
69h/00h A DATA LOSS ON LOGICAL UNIT
|
||||
69h/01h A MULTIPLE LOGICAL UNIT FAILURES
|
||||
69h/02h A PARITY/DATA MISMATCH
|
||||
6Ah/00h A INFORMATIONAL, REFER TO LOG
|
||||
6Bh/00h A STATE CHANGE HAS OCCURRED
|
||||
6Bh/01h A REDUNDANCY LEVEL GOT BETTER
|
||||
6Bh/02h A REDUNDANCY LEVEL GOT WORSE
|
||||
6Ch/00h A REBUILD FAILURE OCCURRED
|
||||
6Dh/00h A RECALCULATE FAILURE OCCURRED
|
||||
6Eh/00h A COMMAND TO LOGICAL UNIT FAILED
|
||||
6Fh/00h R COPY PROTECTION KEY EXCHANGE FAILURE - AUTHENTICATION FAILURE
|
||||
6Fh/01h R COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT PRESENT
|
||||
6Fh/02h R COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED
|
||||
6Fh/03h R READ OF SCRAMBLED SECTOR WITHOUT AUTHENTICATION
|
||||
6Fh/04h R MEDIA REGION CODE IS MISMATCHED TO LOGICAL UNIT REGION
|
||||
6Fh/05h R DRIVE REGION MUST BE PERMANENT/REGION RESET COUNT ERROR
|
||||
6Fh/06h R INSUFFICIENT BLOCK COUNT FOR BINDING NONCE RECORDING
|
||||
6Fh/07h R CONFLICT IN BINDING NONCE RECORDING
|
||||
70h/NNh T DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF NN
|
||||
71h/00h T DECOMPRESSION EXCEPTION LONG ALGORITHM ID
|
||||
72h/00h R SESSION FIXATION ERROR
|
||||
72h/01h R SESSION FIXATION ERROR WRITING LEAD-IN
|
||||
72h/02h R SESSION FIXATION ERROR WRITING LEAD-OUT
|
||||
72h/03h R SESSION FIXATION ERROR - INCOMPLETE TRACK IN SESSION
|
||||
72h/04h R EMPTY OR PARTIALLY WRITTEN RESERVED TRACK
|
||||
72h/05h R NO MORE TRACK RESERVATIONS ALLOWED
|
||||
72h/06h R RMZ EXTENSION IS NOT ALLOWED
|
||||
72h/07h R NO MORE TEST ZONE EXTENSIONS ARE ALLOWED
|
||||
73h/00h R CD CONTROL ERROR
|
||||
73h/01h R POWER CALIBRATION AREA ALMOST FULL
|
||||
73h/02h R POWER CALIBRATION AREA IS FULL
|
||||
73h/03h R POWER CALIBRATION AREA ERROR
|
||||
73h/04h R PROGRAM MEMORY AREA UPDATE FAILURE
|
||||
73h/05h R PROGRAM MEMORY AREA IS FULL
|
||||
73h/06h R RMA/PMA IS ALMOST FULL
|
||||
73h/10h R CURRENT POWER CALIBRATION AREA ALMOST FULL
|
||||
73h/11h R CURRENT POWER CALIBRATION AREA IS FULL
|
||||
73h/17h R RDZ IS FULL
|
||||
74h/00h T SECURITY ERROR
|
||||
74h/01h T UNABLE TO DECRYPT DATA
|
||||
74h/02h T UNENCRYPTED DATA ENCOUNTERED WHILE DECRYPTING
|
||||
74h/03h T INCORRECT DATA ENCRYPTION KEY
|
||||
74h/04h T CRYPTOGRAPHIC INTEGRITY VALIDATION FAILED
|
||||
74h/05h T ERROR DECRYPTING DATA
|
||||
74h/06h T UNKNOWN SIGNATURE VERIFICATION KEY
|
||||
74h/07h T ENCRYPTION PARAMETERS NOT USEABLE
|
||||
74h/08h DT R M E VF DIGITAL SIGNATURE VALIDATION FAILURE
|
||||
74h/09h T ENCRYPTION MODE MISMATCH ON READ
|
||||
74h/0Ah T ENCRYPTED BLOCK NOT RAW READ ENABLED
|
||||
74h/0Bh T INCORRECT ENCRYPTION PARAMETERS
|
||||
74h/0Ch DT R MAEBKV UNABLE TO DECRYPT PARAMETER LIST
|
||||
74h/0Dh T ENCRYPTION ALGORITHM DISABLED
|
||||
74h/10h DT R MAEBKV SA CREATION PARAMETER VALUE INVALID
|
||||
74h/11h DT R MAEBKV SA CREATION PARAMETER VALUE REJECTED
|
||||
74h/12h DT R MAEBKV INVALID SA USAGE
|
||||
74h/21h T DATA ENCRYPTION CONFIGURATION PREVENTED
|
||||
74h/30h DT R MAEBKV SA CREATION PARAMETER NOT SUPPORTED
|
||||
74h/40h DT R MAEBKV AUTHENTICATION FAILED
|
||||
74h/61h V EXTERNAL DATA ENCRYPTION KEY MANAGER ACCESS ERROR
|
||||
74h/62h V EXTERNAL DATA ENCRYPTION KEY MANAGER ERROR
|
||||
74h/63h V EXTERNAL DATA ENCRYPTION KEY NOT FOUND
|
||||
74h/64h V EXTERNAL DATA ENCRYPTION REQUEST NOT AUTHORIZED
|
||||
74h/6Eh T EXTERNAL DATA ENCRYPTION CONTROL TIMEOUT
|
||||
74h/6Fh T EXTERNAL DATA ENCRYPTION CONTROL ERROR
|
||||
74h/71h DT R M E V LOGICAL UNIT ACCESS NOT AUTHORIZED
|
||||
74h/79h D SECURITY CONFLICT IN TRANSLATED DEVICE
|
||||
75h/00h
|
||||
76h/00h
|
||||
77h/00h
|
||||
78h/00h
|
||||
79h/00h
|
||||
7Ah/00h
|
||||
7Bh/00h
|
||||
7Ch/00h
|
||||
7Dh/00h
|
||||
7Eh/00h
|
||||
7Fh/00h
|
||||
@@ -1,175 +0,0 @@
|
||||
# SDHCI MMC Driver
|
||||
|
||||
This driver project is a part of GSoC'18 and is aimed at providing support for
|
||||
PCI devices with class 8 and subclass 5 over x86 architecture. This document
|
||||
will make you familiar with the [code produced during GSoC](https://review.haiku-os.org/#/c/haiku/+/318/),
|
||||
loading and testing the driver(including hardware emulation), insight into the
|
||||
code and future tasks.
|
||||
|
||||
For detailed explanations about the project, you can refer the
|
||||
[weekly reports](https://www.haiku-os.org/blog/krish_iyer) and comment issues
|
||||
if any. For this project we have referred [SD Host Controller Spec Version 1.00](https://www.sdcard.org/downloads/pls/pdf/index.php?p=PartA2_SD_Host_Controller_Simplified_Specification_Ver1.00.jpg&f=PartA2_SD_Host_Controller_Simplified_Specification_Ver1.00.pdf&e=EN_A2100)
|
||||
and [Physical Layer Spec Version 1.10](https://www.sdcard.org/downloads/pls/pdf/index.php?p=Part1_Physical_Layer_Simplified_Specification_Ver1.10.jpg&f=Part1_Physical_Layer_Simplified_Specification_Ver1.10.pdf&e=EN_P1110).
|
||||
|
||||
## Loading and testing the driver
|
||||
### Emulating the hardware
|
||||
|
||||
We will emulate a SDHC device using qemu as all system may not have the device.
|
||||
These days systems provide transfer to SD/ MMC card over USB. The document will
|
||||
not instruct you on how to build haiku but you can refer the link to
|
||||
[compile and build the haiku images](https://www.haiku-os.org/guides/building/)
|
||||
or the [week #1 and #2](https://www.haiku-os.org/blog/krish_iyer/2018-05-06_gsoc_2018_sdhci_mmc_driver_week_1_and_2/)
|
||||
project report will also work.
|
||||
|
||||
After building the image, we will emulate the hardware and host haiku on top of that.
|
||||
|
||||
#### Emulation
|
||||
For emulating a sdhci-pci device
|
||||
|
||||
qemu-img create sd-card.img 10G
|
||||
qemu-system-x86_64 ~/haiku/generated.x86_64/haiku.image -hdd haiku_drive_2.img -device sdhci-pci -device sd-card,drive=mydrive -drive if=sd,index=0,file=sd.img,format=raw,id=mydrive -m 512M -enable-kvm
|
||||
|
||||
### Testing and loading the driver
|
||||
The code is merged but not part of the default build
|
||||
because it's not useful for end users currently. In order to add the drivers
|
||||
to the image and load them, we need to adjust some buildfiles.
|
||||
|
||||
The required changes are in [this changeset](https://review.haiku-os.org/c/haiku/+/448/8).
|
||||
|
||||
## Insight into the code and future tasks
|
||||
### Directory and files where all the code related to the project resides
|
||||
|
||||
#### MMC Bus
|
||||
* src/add-ons/kernel/busses/mmc
|
||||
* sdhci-pci.cpp
|
||||
* sdhci-pci.h
|
||||
* Jamfile
|
||||
#### The Bus Manager
|
||||
* src/add-ons/kernel/bus_managers/mmc
|
||||
* mmc_bus.cpp
|
||||
* mmc_module.cpp
|
||||
* mmc_bus.h
|
||||
* Jamfile
|
||||
#### Disk Driver
|
||||
* src/add-ons/kernel/drivers/disk/mmc
|
||||
* mmc_disk.cpp
|
||||
* mmc_disk.h
|
||||
* Jamfile
|
||||
#### Hardcoding the driver
|
||||
* src/system/kernel/device_manager
|
||||
* device_manager.cpp
|
||||
### Insight into the code
|
||||
#### MMC Bus management overview
|
||||
|
||||
The device tree for MMC support looks like this:
|
||||
|
||||
* PCI bus manager
|
||||
* (other PCI devices)
|
||||
* SDHCI controller
|
||||
* SDHCI bus
|
||||
* MMC bus manager
|
||||
* MMC device
|
||||
* mmc\_disk device
|
||||
* MMC device
|
||||
* (other SDIO driver)
|
||||
* MMC bus manager (second MMC bus)
|
||||
* MMC device
|
||||
* mmc\_disk device
|
||||
|
||||
At the first level, the PCI bus manager publishes a device node for each device
|
||||
found. One of them is our SDHCI controller, identified either by the PCI device
|
||||
class and subclass, or for not completely SDHCI compatible device, by the
|
||||
device and vendor IDs.
|
||||
|
||||
The SDHCI bus driver attaches to this device and publishes his own node. It
|
||||
then scans the device and publishes an MMC bus node for each slot (there may
|
||||
be multiple SD slots attached to a single PCI controller).
|
||||
|
||||
The MMC bus manager then attach to each of these slots, and send the appropriate
|
||||
commands for enumerating the SD cards (there may be multiple cards in a "slot"),
|
||||
and publishes a device node for each of them. Finally, the mmc\_disk driver can
|
||||
bind itself to one of these device nodes, and publish the corresponding disk
|
||||
node, which is also be made available in /dev/disk/mmc.
|
||||
|
||||
Currently the mmc bus does not publish anything in the devfs, but this could be
|
||||
added if sending raw SD/MMC commands to SD cards from userland is considered
|
||||
desirable.
|
||||
|
||||
#### SDHCI driver
|
||||
|
||||
The SDHCI driver is the lowest level of the MMC stack. It provides abstraction
|
||||
of the SDHCI device. Later on, different way to access an SD bus may be added,
|
||||
for example for ARM devices which decided to use a different register interface.
|
||||
|
||||
The entry point is as usual **supports\_device()**. This method is called only
|
||||
for devices which may be SDHCI controllers, thanks to filtering done in the
|
||||
device manager to probe only the relevant devices. The probing is done on-demand,
|
||||
currently when the system is enumerating /dev/disk in the devfs. Later on, when
|
||||
we have SDIO support, probing will also be triggered in other cases.
|
||||
|
||||
The function identifies the device by checking the class and subclass, as well
|
||||
as a limited set of hardcoded PCI device and vendor IDs for devices that do not
|
||||
use the assigned subclass.
|
||||
|
||||
Once a compatible device is found, **register\_child\_devices()** is used to
|
||||
publish device nodes for each slot to be controlled by the mmc bus manager.
|
||||
The registers for each device are mapped into virtual memory, using the
|
||||
information from the PCI bar registers. **struct registers** is defined so that
|
||||
it matches the register layout, and provide a little abstraction to raw register
|
||||
access.
|
||||
|
||||
An SdhciBus object is created to manage each of these busses at the SDHCI level.
|
||||
It will be responsible for executing SD commands on that bus, and dealing with
|
||||
the resulting interrupts.
|
||||
|
||||
#### The Bus Manager
|
||||
|
||||
The MMC bus manager manages the MMC bus (duh). Its tasks are:
|
||||
|
||||
* enumerating SD cards on the bus
|
||||
* assigning RCAs to the cards for identifying them when sending commands
|
||||
* setting the bus clock speed according to what the cards can handle
|
||||
* remember which SD card is currently active (CMD7)
|
||||
* manage cards state
|
||||
* publish device nodes for each card
|
||||
|
||||
#### Disk Driver
|
||||
|
||||
The disk driver is attached to devices implementing SDSC or SDHC/SDXC commands.
|
||||
There will be other drivers for non-storage (SDIO) cards.
|
||||
|
||||
To help with this, the MMC bus manager provides the device with the information
|
||||
it gathered while initializing the device. According to the commands recognized
|
||||
by the card during the initialization sequence, it's possible to know if it's
|
||||
SDSC, SDHC/SDXC, or something else (SDIO, legacy MMC, etc).
|
||||
|
||||
The disk driver publishes devfs entries in /dev/disk/mmc and implements the
|
||||
usual interface for disk devices. From this point on, the device can be used
|
||||
just like any other mass storage device.
|
||||
|
||||
#### Getting everything loaded
|
||||
|
||||
The device manager is not completely implemented yet. As a result, some
|
||||
decisions about which drivers to load are hardcoded in device\_manager.cpp.
|
||||
|
||||
It has been adjusted to handover SDHCI devices to the MMC bus. Whenever a
|
||||
"disk" device is requested, the MMC busses are searched, which results in
|
||||
loading the SDHCI driver and probing for SD cards. When we get support for
|
||||
other types of SDIO devices, we will need to adjust the device manager to
|
||||
probe the SDHCI bus when these type of devices are requested, too.
|
||||
|
||||
|
||||
### Tasks to be completed
|
||||
|
||||
The SDHCI driver is able to send and receive commands. However it does not
|
||||
handle card insertion and removal interrupts yet, so the card must be already
|
||||
inserted when the driver is loaded.
|
||||
|
||||
As a proof of concept, the initialization sequence has been implemented up
|
||||
until assigning an RCA to a single card (SDHC only).
|
||||
|
||||
Once we get everything in place at the mmc bus level, we can proceed as
|
||||
documented in the GSoC project [third phase outline](https://www.haiku-os.org/blog/krish_iyer/2018-07-12_gsoc_2018_sdhci_mmc_driver_third_phase_plan/).
|
||||
|
||||
If you find it difficult to understand the driver development and it's
|
||||
functioning and role, please refer *docs/develop/kernel/device_manager_introduction.html*
|
||||
Reference in New Issue
Block a user