VCTC Support in VM/ESA - Diagnostic Notes
This section is intended to offer ideas to help you diagnose a problem that might be observed in a VCTC application (whether the problem is caused by the application program, or the internal VCTC logic).
You will find information here about:
- Determining which devices are involved
- Collecting VCTC entries in the CP Trace Table
- VCTC Trace Codes
Determining which devices are involved
When a problem is detected, it is usually obvious which VM user is involved (e.g. an application message on the user's display indicates that device 041F does not respond).
Locate the primary virtual device
You will need to record the VM userid and virtual address (e.g. "041F") along with any other observations that might pertain to the problem.
Locate the secondary (coupled) virtual device
Use the "CP QUERY VIRTUAL vdev" command (where "vdev" is the known device, like "041F") to find the other side of this adapter. For example, "CP QUERY VIRTUAL 41F" from VM user VMTEST1 might display:
CTCA 041F COUPLED TO VMTEST2 041F SUBCHANNEL = 0012indicating that the secondary device is VMTEST2 041F.
Record the status of both devices
If the adapter appears to be "hung", it may be helpful to record the contents of the VDEV and CACBK control blocks before attempting to reset the adapter. You can use the CP LOCATE command to find the address of the VDEV, and use the DISPLAY command to find the address (at offset x'080' in the VDEV) of the CACBK. A sample exec is available (QVX EXEC) to issue those commands for you automatically.
Collecting VCTC entries in the CP Trace Table
CTCA applications involve relatively independent execution of two programs on two different machines. For VCTC applications, the CP Trace Table is often the best place to look for the failing sequence.
Enable the relevent trace entries
If your system does not ordinarily collect ALL trace entries, you should ensure that the following trace table entries are being collected:
- Trace Type VINT (Virtual I/O Interrupts) to provide context information.
- Trace Type VCSW (Virtual CSW updates) to provide context information.
- Trace Type VCTC (Virtual CTC operations) to provide details about the VCTC Simulation.
For example, the following will ONLY collect this subset of trace entries:
CP SET CPTRACE ALL OFF CP SET CPTRACE ON VINT VCSW VCTC CP TRSAVE CP ON TO OPERATOR SIZE 256 KEEP 2
Recreate the problem
Repeat the configuration or the application tasks that lead to the problem.
Process the TRACE file
Close the TRSAVE file and process it using TRACERED. For example:
CP TRSAVE CP OFF TRACERED spoolid CMS filename (ALL FORMAT CP SET CPTRACE ALL ON (to resume normal CPTRACE activity)
The VCTC trace entries start at trace code 7900. If you happen to run a version of TRACERED built prior to VM/ESA Release 2.1.0 it will not recognize these trace entries.
VCTC Trace Codes
Beginning with CP Release 2.1.0, CPTRACE TYPE VCTC entries are collected in the CP Trace Table to record VCTC activity:
See "Collecting VCTC entries in the CP Trace Table" for advice on collecting these trace entries.
VCTC Trace Code 7900
7900 VCTC Defined +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | 00000000 | 00000000 | VDEVDEV/ | | VMDBK | Address | | | 0000 | | Address | | | | | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVDF.
VCTC Trace Code 7901
7901 VCTC Detached +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | CACYPEND/ | | VMDBK | Address | Address | CACXACTV/ | CACYACTV/ | | Address | | | CACXCNTL/ | CACYCNTL/ | | | | | CACXUINT | CACYUINT | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVDT.
VCTC Trace Code 7902
7902 VCTC Coupled +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | Target | Target | | VMDBK | Address | Address | VMDBK | VDEV | | Address | | | Address | Address | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVCP.
VCTC Trace Code 7903
7903 VCTC Interface Disconnect Reset +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | CACYPEND/ | | VMDBK | Address | Address | CACXACTV/ | CACYACTV/ | | Address | | | CACXCNTL/ | CACYCNTL/ | | | | | CACXUINT | CACYUINT | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVID.
VCTC Trace Code 7904
7904 VCTC Selective Reset +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | CACYPEND/ | | VMDBK | Address | Address | CACXACTV/ | CACYACTV/ | | Address | | | CACXCNTL/ | CACYCNTL/ | | | | | CACXUINT | CACYUINT | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVSR.
VCTC Trace Code 7905
7905 VCTC System Reset +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | CACYPEND/ | | VMDBK | Address | Address | CACXACTV/ | CACYACTV/ | | Address | | | CACXCNTL/ | CACYCNTL/ | | | | | CACXUINT | CACYUINT | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVSY.
VCTC Trace Code 7906
7906 VCTC CCW Simulation +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | CCW opcode/| | VMDBK | Address | Address | CACXACTV/ | CCW flags/ | | Address | | | CACXCNTL/ | DataLength | | | | | CACXUINT | | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTCVS.
VCTC Trace Code 7907
7907 VCTC Unsolicited Interrupt Reflection +------------+------------+------------+------------+------------+ | Reg N | Reg N+1 | Reg N+2 | Reg N+3 | Reg N+4 | +------------+------------+------------+------------+------------+ | X owner | X VDEV | Y VDEV | CACXPEND/ | VDEVDEV/ | | VMDBK | Address | Address | CACXACTV/ | 00/ | | Address | | | CACXCNTL/ | UnitStatus | | | | | CACXUINT | | +------------+------------+------------+------------+------------+
This entry is recorded by entry point HCPCTVUI.
If your system is running CP Release 2.1.0 or 2.2.0 prior to APAR VM60682, this trace entry is recorded after the Adapter lock has been obtained. Later in the routine, we may decide to discard or delay the unsolicited interrupt.
If your system is running CP Release 2.1.0 or 2.2.0 with APAR VM60682 applied, this trace entry is recorded after both the VDEV and Adapter locks have been obtained and we have decided to present the interrupt.