|
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM. |
CACBK
Control Block Contents
CACBK DSECT
Cross Reference (Contains links to field and bit definitions)
CACBK Prolog
NAME : HCPCACBK
DESCRIPTION: Virtual CTC Adapter Control Block
DSECT : CACBK
FUNCTION : This block is used to maintain status information
for a virtual CTCA device. The CACBK is a logical
extension of the VDEVBK for a Virtual CTCA device.
The information in the CACBK is needed for Virtual
CTCA simulation. The VDEVBK for a dedicated (real)
CTCA device DOES NOT have a CACBK extension.
LOCATED BY : VDEVCTCA (pointer) If VDEVCLAS+VDEVTYPE indicate a
Virtual CTCA device, and VDEVDED=0 then
it points to CACBK.
CACXLINK (pointer) the partner (Y-SIDE) CACBK.
CACYLINK (pointer) the partner (X-SIDE) CACBK.
CREATED BY : Operation of the 'DEFINE' command.
DELETED BY : Operation of the 'DETACH' command.
SERIALIZED :
Modifications to most CACBK fields are serialized by the
Adapter Lock (addressed by CACXLOCK). If the adapter is
coupled, CACXLOCK points to a LKWRD in shared storage.
If the adapter is NOT coupled, CACXLOCK will point to
a LKWRD defined within the CACBK.
Modifications to the CACBK configuration can only be
performed while holding the Global CTC Lock (HCPIOLCT).
CACBK configuration changes are initiated by DEFINE,
COUPLE, and DETACH commands. CACBK fields that must be
protected by the Global CTC Lock include CACXLINK and
CACXLOCK.
The locking heirarchy for the CACBK is:
- VDEV Lock
- Global CTC Lock (only needed for configuration)
- Adapter Lock
Most operations can be performed holding only the
Adapter Lock. However, if multiple locks are required,
they must be obtained in this order.
NOTES :
The CACBK is mapped by two symmetrical structures
(CACXSIDE and CACYSIDE). CACXSIDE represents the
"current" or "local" CACBK, while CACYSIDE represents
the "partner" or "other" CACBK. The symmetry of these
two structures MUST be maintained because any given
CACBK can be referenced using EITHER structure.
UNCOUPLED Adapter Linkage -
Owner VDEV:
VDEVCTCA = A(CACBK(X)) for the primary CACBK
VDEVINTV = 1 (Intervention Required)
CACBK(X) at CACXSIDE using CACXSIDE:
CACADISC = 0 (This side is NOT disconnected)
CACXVDEV = A(VDEV) for owner
CACXLINK = A(CACYSIDE) (Using the Y-SIDE definition)
CACXLOCK = A(CACXLKWD) (Using the internal LKWRD)
CACXBUFF = 0
CACBK(X) at CACYSIDE using CACYSIDE:
CACADISC = 1 (This side IS disconnected)
CACYVDEV = 0 (No device)
CACYLINK = A(CACXSIDE) for the primary CACBK
CACYLOCK = A(CACXLKWD) (Using the internal LKWRD)
CACYBUFF = 0
COUPLED Adapter Linkage -
X-SIDE VDEV:
VDEVCTCA = A(CACBK(X))
VDEVINTV = 0 (coupled)
CACBK(X) at CACXSIDE using CACXSIDE:
CACADISC = 0 (This side is NOT disconnected)
CACXVDEV = A(VDEV) for X-SIDE device
CACXLINK = A(CACBK(Y)) for the partner CACBK
CACXLOCK = A(LKWRD) (shared)
CACXBUFF = A(CABFR) (shared)
Y-SIDE VDEV:
VDEVCTCA = A(CACBK(Y))
VDEVINTV = 0 (coupled)
CACBK(Y) at CACXSIDE using CACYSIDE:
CACADISC = 0 (This side is NOT disconnected)
CACYVDEV = A(VDEV) for Y-SIDE device
CACYLINK = A(CACXSIDE) for the partner CACBK
CACYLOCK = A(LKWRD) (shared)
CACYBUFF = A(CABFR) (shared)
CACBK Control Block Content
CACBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure CACBK Virtual CTC Adapter Control Block
X-SIDE Definition.
This substructure maintains information for one side of the
Channel-to-Channel adapter.
When this adapter is coupled to another primary adapter, the "other"
user refers to this storage as the Y-SIDE.
0000 0 Dbl-Word 8 CACXAREA (0)
0000 0 Dbl-Word 8 CACXSIDE (0)
Adapter Identification and Mode.
0000 0 Character 8 CACXUSER Owner's VM Userid
0008 8 Bitstring 2 CACXADDR Device Address (binary)
000A 10 Bitstring 1 CACXTYPE Adapter Type
00000001 CACCTCA 1 - CTCA (Basic Mode Only)
00000002 CAC3088 2 - 3088 (Basic/Extended)
00000003 CACESCON 3 - ESCON Adapter
00000000 *
000B 11 Bitstring 1 CACXCAPS Adapter Capabilities
1... .... CACESCTL X'80' - ESCON Controller
capability (0) means this is the
"CNC" (1) means this is the "CTC"
.1.. .... CACRSEVT X'40' - Support for 'Resetting
Event'
..1. .... CACSIDXT X'20' - Sense ID Extended Data
...1 .... CACEXRCD X'10' - Read Configuration Data
000C 12 Bitstring 1 CACXLTCH Adapter Architecture Latches
1... .... CACEXTOP X'80' - Operating in Extended
Mode
.1.. .... CACEXTND X'40' - Extended Mode indicator
(X)
..1. .... CACNTRDY X'20' - NOTREADY indicator (X)
...1 .... CACEOFLE X'10' - End of File indicator (X)
.... 1... CACFIRST X'08' - First/Only CCW in the
program
.... .1.. CACRESET X'04' - Resetting-Event flag (X)
000D 13 Bitstring 1 CACXFLAG Adapter Simulation Flags
1... .... CACEODTR X'80' - End of Data Transfer
.1.. .... CACEXDTR X'40' - Fatal Data Transfer error
000E 14 Bitstring 1 CACXAFLG Adapter Flag
1... .... CACADTCH X'80' - This side is DETACHed
.1.. .... CACADISC X'40' - This side is disconnected
..1. .... CACSUSPD X'20' - Adapter Suspended
...1 .... CACSCHED X'10' - Adapter Scheduled
000F 15 Bitstring 1 CACXRFLG Reset Flag
1... .... CACSYSRS X'80' - System Reset in progress
.1.. .... CACSELRS X'40' - Selective Reset in
progress
..1. .... CACIFDRS X'20' - Interface Disconnect
Reset
...1 .... CACCPLRS X'10' - COUPLE Reset
Adapter Linkage.
0010 16 Address 4 CACXVDEV VDEVBK pointer
0014 20 Address 4 CACXLINK Partner CACBK
0018 24 Address 4 CACXBUFF Data Buffer address
001C 28 Address 4 CACXLOCK Address of Adapter LKWRD
0020 32 Address 4 CACXRCPX CPEBK for suspended execution
0024 36 Address 4 CACXAIOR Active IORBK
Current Operation.
0028 40 Signed 4 CACXACTR Pending Activity Counter
002C 44 Bitstring 2 * Reserved (expansion of CACXDLEN)
002E 46 Signed 2 CACXDLEN Current Data Transfer length
0030 48 Bitstring 1 CACXCMD Current CCW command code
0031 49 Bitstring 1 CACXPSTD Posted Device Status
0032 50 Bitstring 1 CACXSTAT Pending Device Status
0033 51 Bitstring 1 * Reserved
Adapter Trace Information. Notes : These four flags (PEND, ACTV, CNTL,
and UINT) are included in several trace table entries. They are
maintained together for efficiency.
0034 52 Bitstring 1 CACXPEND Dependent command pending
1... .... CACWRTPD X'80' - WRITE pending
.1.. .... CACRDXPD X'40' - READ pending
..1. .... CACCTLPD X'20' - CONTROL pending
...1 .... CACPRPPD X'10' - PREPARE pending
1111 .... CACANYPD CACWRTPD+CACRDXPD+CACCTLPD+CACPRP
PD Any pending
0035 53 Bitstring 1 CACXACTV Active Functions
1... .... CACEXCCW X'80' - Latest executed CCW
.1.. .... CACCMDAC X'40' - Command active
..1. .... CACWRTAC X'20' - WRITE active
...1 .... CACRDXAC X'10' - READ active
.... 1... CACICCCW X'08' - Chaining to next CCW
0036 54 Bitstring 1 CACXCNTL Device Control flags
1... .... CACHALTD X'80' - Halted by Reset
.1.. .... CACCANPD X'40' - Cancel Pending
..1. .... CACWTCCW X'20' - Waiting for partner's CCW
...1 .... CACUIPND X'10' - Unsolicited Interrupt
Pending
.... 1... CACNEWUC X'08' - New Unit Check set
0037 55 Bitstring 1 CACXUINT Unsolicited Interrupt flags
Adapter Status flags.
0038 56 Bitstring 1 CACXPCMD Previous CCW Command Code
0039 57 Bitstring 1 CACXPSTS Previous Unit Status
003A 58 Bitstring 1 CACXSNS0 Sense Byte 0 indicators
1... .... CACCMREJ X'80' 0 = Command Reject (X)
.1.. .... CACINTRQ X'40' 1 = Intervention Required
(Y)
..1. .... CACBUFDC X'20' 2 = Buffer Data Check (X/Y)
...1 .... CACEQCHK X'10' 3 = Equipment Check (X/Y)
.... .1.. CACSEQCK X'04' 5 = Control Sequence Check
(X/Y)
.... ...1 CACIFDSC X'01' 7 = Interface Disconnect
(Y)
1.11 .1.. CACANYCK CACCMREJ+CACBUFDC+CACEQCHK+CACSEQ
CK CCW/Eq chks
003B 59 Bitstring 1 CACXSNS1 Sense Byte 1 indicators
1... .... CACRJRES X'80' 0 = Rejected by Reset (X)
003C 60 Bitstring 4 * Reserved
Internal Data Buffer (Includes space for SENSEID data).
0040 64 Bitstring 8 CACXDATA Local Data buffer
Adapter Lock (LKWRD). Notes : LKWRDSIZ is defined in HCPLKWRD COPY.
The value of the LKWRDSIZ variable for BLOCKMAP is 3
0048 72 Dbl-Word 8 CACXLKWD (3) LKWRD for this adapter
Y-SIDE Definition.
This substructure map provides a convenient way to reference the
"other" user's primary CACBK.
This section of the CACBK is only referenced (as the "null" Y-SIDE)
when the adapter is uncoupled.
Every CACX* field in the CACXSIDE area must have a corresponding CACY*
field in the CACYSIDE area to maintain the CACBK.
0060 96 Dbl-Word 8 CACYAREA (0)
0060 96 Dbl-Word 8 CACYSIDE (0)
0060 96 Character 8 CACYUSER Owner's VM Userid
0068 104 Bitstring 2 CACYADDR Device Address (binary)
006A 106 Bitstring 1 CACYTYPE Adapter Type
006B 107 Bitstring 1 CACYCAPS Adapter Capabilities
006C 108 Bitstring 1 CACYLTCH Adapter Architecture Latches
006D 109 Bitstring 1 CACYFLAG Adapter Simulation Flags
006E 110 Bitstring 1 CACYAFLG Adapter Flag
006F 111 Bitstring 1 CACYRFLG Reset Flag
0070 112 Address 4 CACYVDEV VDEVBK pointer
0074 116 Address 4 CACYLINK Partner CACBK
0078 120 Address 4 CACYBUFF Data Buffer address
007C 124 Address 4 CACYLOCK Address of Adapter LKWRD
0080 128 Address 4 CACYRCPX CPEBK for suspended execution
0084 132 Address 4 CACYAIOR Active IORBK
0088 136 Signed 4 CACYACTR Pending Activity Counter
008C 140 Bitstring 2 * Reserved (expansion of CACYDLEN)
008E 142 Signed 2 CACYDLEN Current Data Transfer length
0090 144 Bitstring 1 CACYCMD Current CCW command code
0091 145 Bitstring 1 CACYPSTD Posted Device Status
0092 146 Bitstring 1 CACYSTAT Pending Device Status
0093 147 Bitstring 1 * Reserved
0094 148 Bitstring 1 CACYPEND Dependent command pending
0095 149 Bitstring 1 CACYACTV Active Functions
0096 150 Bitstring 1 CACYCNTL Device Control flags
0097 151 Bitstring 1 CACYUINT Unsolicited Interrupt flags
0098 152 Bitstring 1 CACYPCMD Previous CCW Command Code
0099 153 Bitstring 1 CACYPSTS Previous Unit Status
009A 154 Bitstring 1 CACYSNS0 Sense Byte 0 Latches
009B 155 Bitstring 1 CACYSNS1 Sense Byte 1 Latches
009C 156 Bitstring 4 * Reserved
00A0 160 Bitstring 8 CACYDATA Local Data buffer The value of
the LKWRDSIZ variable for
BLOCKMAP is 3
00A8 168 Dbl-Word 8 CACYLKWD (3) LKWRD for this adapter
00000018 CACSIZE (*-CACBK+7)/8 Length in
doublewords
Length of the Shared Data Buffer: CACXBUFF and CACYBUFF point to the
shared Data Buffer. This buffer holds data as it is moved from one VM
to another (so we do not have to serialize guest storage between two VM
guests at the same time).
00001000 CACBUFLN 4096 Shared Data Buffer length
(in bytes).
CACBK Storage Layout
*** CACBK - Virtual CTC Adapter Control Block
*
* +-------------------------------------------------------+
* 0 | CACXUSER |
* +-------------+------+------+------+------+------+------+
* 8 | CACXADDR |:XTYPE|:XCAPS|:XLTCH|:XFLAG|:XAFLG|:XRFLG|
* +-------------+------+------+------+------+------+------+
* 10 | CACXVDEV | CACXLINK |
* +---------------------------+---------------------------+
* 18 | CACXBUFF | CACXLOCK |
* +---------------------------+---------------------------+
* 20 | CACXRCPX | CACXAIOR |
* +---------------------------+-------------+-------------+
* 28 | CACXACTR |/////////////| CACXDLEN |
* +------+------+------+------+------+------+------+------+
* 30 |:XCMD |:XPSTD|:XSTAT|//////|:XPEND|:XACTV|:XCNTL|:XUINT|
* +------+------+------+------+------+------+------+------+
* 38 |:XPCMD|:XPSTS|:XSNS0|:XSNS1|///////////////////////////|
* +------+------+------+------+---------------------------+
* 40 | CACXDATA |
* +-------------------------------------------------------+
* 48 | |
* = CACXLKWD =
* | |
* +-------------------------------------------------------+
* 60 | CACYUSER |
* +-------------+------+------+------+------+------+------+
* 68 | CACYADDR |:YTYPE|:YCAPS|:YLTCH|:YFLAG|:YAFLG|:YRFLG|
* +-------------+------+------+------+------+------+------+
* 70 | CACYVDEV | CACYLINK |
* +---------------------------+---------------------------+
* 78 | CACYBUFF | CACYLOCK |
* +---------------------------+---------------------------+
* 80 | CACYRCPX | CACYAIOR |
* +---------------------------+-------------+-------------+
* 88 | CACYACTR |/////////////| CACYDLEN |
* +------+------+------+------+------+------+------+------+
* 90 |:YCMD |:YPSTD|:YSTAT|//////|:YPEND|:YACTV|:YCNTL|:YUINT|
* +------+------+------+------+------+------+------+------+
* 98 |:YPCMD|:YPSTS|:YSNS0|:YSNS1|///////////////////////////|
* +------+------+------+------+---------------------------+
* A0 | CACYDATA |
* +-------------------------------------------------------+
* A8 | |
* = CACYLKWD =
* | |
* +-------------------------------------------------------+
* C0
*
*** CACBK - Virtual CTC Adapter Control Block
CACBK Cross Reference
Symbol Dspl Value -------------- ---- ----- * 000A 00000000 CACADISC 000E 40 CACADTCH 000E 80 CACANYCK 003A B4 CACANYPD 0034 F0 CACBUFDC 003A 20 CACBUFLN 00A8 00001000 CACCANPD 0036 40 CACCMDAC 0035 40 CACCMREJ 003A 80 CACCPLRS 000F 10 CACCTCA 000A 00000001 CACCTLPD 0034 20 CACEODTR 000D 80 CACEOFLE 000C 10 CACEQCHK 003A 10 CACESCON 000A 00000003 CACESCTL 000B 80 CACEXCCW 0035 80 CACEXDTR 000D 40 CACEXRCD 000B 10 CACEXTND 000C 40 CACEXTOP 000C 80 CACFIRST 000C 08 CACHALTD 0036 80 CACICCCW 0035 08 CACIFDRS 000F 20 CACIFDSC 003A 01 CACINTRQ 003A 40 CACNEWUC 0036 08 CACNTRDY 000C 20 CACPRPPD 0034 10 CACRDXAC 0035 10 CACRDXPD 0034 40 CACRESET 000C 04 CACRJRES 003B 80 CACRSEVT 000B 40 CACSCHED 000E 10 CACSELRS 000F 40 CACSEQCK 003A 04 CACSIDXT 000B 20 CACSIZE 00A8 00000018 CACSUSPD 000E 20 CACSYSRS 000F 80 CACUIPND 0036 10 CACWRTAC 0035 20 CACWRTPD 0034 80 CACWTCCW 0036 20 CACXACTR 0028 CACXACTV 0035 CACXADDR 0008 CACXAFLG 000E CACXAIOR 0024 CACXAREA 0000 CACXBUFF 0018 CACXCAPS 000B CACXCMD 0030 CACXCNTL 0036 CACXDATA 0040 CACXDLEN 002E CACXFLAG 000D CACXLINK 0014 CACXLKWD 0048 CACXLOCK 001C CACXLTCH 000C CACXPCMD 0038 CACXPEND 0034 CACXPSTD 0031 CACXPSTS 0039 CACXRCPX 0020 CACXRFLG 000F CACXSIDE 0000 CACXSNS0 003A CACXSNS1 003B CACXSTAT 0032 CACXTYPE 000A CACXUINT 0037 CACXUSER 0000 CACXVDEV 0010 CACYACTR 0088 CACYACTV 0095 CACYADDR 0068 CACYAFLG 006E CACYAIOR 0084 CACYAREA 0060 CACYBUFF 0078 CACYCAPS 006B CACYCMD 0090 CACYCNTL 0096 CACYDATA 00A0 CACYDLEN 008E CACYFLAG 006D CACYLINK 0074 CACYLKWD 00A8 CACYLOCK 007C CACYLTCH 006C CACYPCMD 0098 CACYPEND 0094 CACYPSTD 0091 CACYPSTS 0099 CACYRCPX 0080 CACYRFLG 006F CACYSIDE 0060 CACYSNS0 009A CACYSNS1 009B CACYSTAT 0092 CACYTYPE 006A CACYUINT 0097 CACYUSER 0060 CACYVDEV 0070 CAC3088 000A 00000002
Last updated on 5 Jun 2001 at 13:01:06 EDT.
Copyright IBM Corporation, 1990, 2001