Requesting Extended Error Information
You can request that EXCP and EXCPVR processing return extended error information. This extended error information consists of sense information, a completion code, and other information you can use to help more accurately diagnose I/O errors later encountered. Extended error information is available for all devices.
To request extended error information, you must perform the following
steps:
- Follow the EXCP/EXCPVR initialization procedures described in Input/Output Block (IOB) Fields, including building and initializing the DCB, IOB and ECB.
- Define an input/output block common extension (IOBE) and an input/output error data block (IEDB) using the IOSDIOBE and IOSDIEDB mapping macros, respectively. Each must be defined on word boundaries. You must supply both an IOBE and an IEDB to receive extended error information. Initialize the fields as described in Input/Output Block Common Extension (IOBE) Fields and Input/Output Error Data Block (IEDB) Fields.
- Set register 0 to the address of the IOBE.
- Set register 1 to the address of the IOB.
- Set flag IOBCEF on in the IOB to indicate that the IOB extension is present.
- Issue the EXCP or EXCPVR macro (see Using the EXCP macro instruction and Using the EXCPVR macro instruction respectively).
There are two versions of the IEDB. The version number
within the IEDB defines how long the IEDB is - the version
1 IEDB is 48 bytes long, and the version 2 IEDB is 96 bytes long.
- The version 1 IEDB contains the following information:
- The completion code from I/O processing that gives the status.
The completion codes and their meanings are shown in Figure 1.
The completion code is contained in the IEDBCOD, which is updated with the results of the I/O requests. The system sets the IEDBCOD field prior to calling the abnormal-end, normal-end, PCI, and end-of-extent appendages. The system also sets this field when the ECB is posted, whether or not you have set any appendages. The system can set the IEDBCOD multiple times as events occur.
- The sense information, set only after a unit check. Once set, the sense information remains until overlaid by the next unit check. Since the system never clears this area, you might want to clear it before issuing EXCP. See the appropriate device publication for an explanation of the sense information.
- The completion code from I/O processing that gives the status.
The completion codes and their meanings are shown in Figure 1.
- The version 2 IEDB is recommended for zHPF channel programs, and contains all of the information in the version 1 IEDB plus the failing storage address when a channel control check or channel data check occurs as a result as a storage or storage key error error, or if a program check or protection check occurs for a zHPF channel program due to a bad storage address.