Normally, when DMKCCH returns control to the I/O supervisor, the
error recovery program for the device which experienced the error is
scheduled. When the ERP receives control, it prepares to retry the
operation if analysis of the IOERBLOK indicates that retry is possible.
Depending on the device type and error condition, the ERP either effects
recovery or marks the event fatal and returns control to the I/O supervisor. The I/O supervisor calls the recording routine DftKIOE to
record the channel error.
The primary system operator is notified of the failure, and DftKIOE returns control to the system and normal processing continues.
If the channel check is associated with an I/O event initiated by a SIO in a virtual machine, the logout is reflected to the virtual machine in one of two ways, depending upon whether the channel check occurred at SIO time or later in an interrupt. If it occurred at SIO ti.e, then DMKYSI (or occasionally DMKYIO) calls upon DftKCCHRF to reflect the
logout. If it occurred in an I/O interrupt, the dispatcher notices the
channel check as it is reflecting the I/O interrupt to the virtual
machine, and so, at that ti.e, DMKDSP calls upon DftKCCHRF to reflect the
logout.
CHANNEL CONTROL SUBROUTINE Control is passed to the channel control subroutine of DftKCCH after a SIO with failing status stored, or an I/O interrupt because of a channel
control check, interface control check, or channel data check.
If "logout pending" is indicated in the CSW, the CP teraination flag
is set. The existence of real device blocks (RCHBLOK, RCUBLOK, RDEYBLOK), for the failing device address, is determined by a call to DMKSCNRU and an indicator is set if they do exist. An indicator is also
set if the IOBLOK for the failing device address exists. A call to DMKFREE obtains storage space for the channel check record and the
channel control subroutine builds the record. If the indicators show
that the real device blocks and the IOBLOK exist, a call to DftKFREE obtains storage space and the channel control subroutine builds the I/O error block (IOERBLOK); if these blocks do not exist, the IOERBLOK is
not built. The IOERBLOK is used for two purposes:
1. The device-dependent error recording program (ERP) uses the IOERBLOK to attempt recovery on CP-initiated I/O events. If the I/O events that resulted in a channel check are associated with a
virtual machine, the I/O fatal flag is set in the IOBLOK and the
virtual machine is reset, cleared, and put into CP read status.
The length and address of the channel check record is placed in the IOERBLOK and the IOERBLOK is chained off the IOBLOK. 2. DMKIOECC uses the IOERBLOK to record the channel check record on
the error recording cylinder.
The channel control subroutine gives control to a channel-dependent
error analysis routine to build or save the extended channel status word
(ECSW). When the channel control subroutine regains control, eight active addresses are saved in the channel check record.
If the CP termination flag is set, the I/O extended logout data fro.
the channel check record is restored to main storage for use by SEREP.
If the system operator is both logged on as a user and connected to the system, a message (DMKCCH603W) is sent to him advising hi. of the
channel error. A LPSW is then executed to place the processor in a
disabled wait state with a wait state code of 002 in the processor
instruction counter.
1-158 IBM VM/370 System Logic and Problem Deteraination--Volume 1
If the CP termination flag is not set, a check is made to determine
if an IOERBLOK was built by the channel control subroutine.
If an IOERBLOK was not built, DMKIOECC is called to record the
channel check record on the error recording cylinder. The system operator is then sent a message (DMKCCH6011 or DeKCCH602I) informing hi. of the error and control is then returned to DMKIOS to continue system operation.
If an IOERBLOK was built, control is returned to DMKIOS, which calls
the appropriate ERP. Whether or not recovery is successful, DMKIOS eventually calls DMKIOE to record the channel check record. DMKIOE examines the status of the in CSW error in the IOERBLOK to determine if
it was a channel error; if so, it finds the length and pointer to the
channel check record and records the error on the error recording
cylinder. If this was not a channel error, DMKIOE continues normal
processing. INDIVIDUAL ROUTINES A separate channel error analysis routine is provided for each type of
channel for which DMKCCH can be used. The purpose of these routines and
the channel control subroutine is to analyze the channel logout to
determine the extent of damage and to create a sequence and termination
code to be placed in the ECSW in the IOERBLOK. At system
initialization, the correct model dependent channel recovery routine is
loaded and the storage necessary to support the routine is allocated.
The model-dependent error analysis subroutines and routines and their
functions are as follows:
Since all
subroutine
subroutine:
of
is
these systems
used to handle
have
all
integrated channels one
of these processor types.
common
This • Indicates CP termination if the ECSW is not complete, the channel has
been reset, the reset codes are invalid, or the I/O interface is
inoperative. • Moves the ECSW to the IOERBLOK • Moves the hardware stored unit address and the I/O extended logout to
the channel check record • Sets the I/O extended logout area and ECSi area to ones • Returns control to the channel control subroutine
The 2860 logout area is checked to determine if a complete logout
exists; if not, CP termination is necessary. CP Introduction 1-159
Previous Page Next Page