|
Programming Interface Information:
This information is NOT intended to be used as Programming Interfaces of z/VM. |
PIOBK
Control Block Contents
PIOBK DSECT
Cross Reference (Contains links to field and bit definitions)
PIOBK Prolog
NAME : HCPPIOBK
DESCRIPTION: Paging I/O CCW packages.
DSECT : PIOBK
FUNCTION : A PIOBK contains the necessary CCW strings to
do paging I/O operations to drums and DASD.
LOCATED BY : IORCPA - Contains the host absolute address
of the first CCW in the active PIOBK.
EXPFACPA - Host absolute address of
the first active PIOBK.
EXPSCCWP - Suspended CCW package. This
is the host absolute address
of the PIOBK in the current
channel program that contains
the suspended NOP.
EXPPIOHL - Host logical address of the
contiguous block of PIOBKs.
CREATED BY : HCPRDAAT As part of initialization or during
ATTACH time for CP-owned volumes
DELETED BY : HCPRDDDT Released if the CP owned volume is DETACHED
COMMENTS :
This block contains CCWs and CCW data and must be
backed below 2-Gig. BACKING=BELOW2G is marked as the
default in CBITABLE.
Below is a model channel program for one PIOBK.
The PIOBKs are chained together by TIC CCWs. They
form a loop so that the last one TICs back to the
first PIOBK.
CKD format:
offset opcode description
0 07/8B (Seek, or Set Page Parameter for 3350 m11/21)
8 23/08 (Set Sector or TIC cache only)
10 31/B1 (Search ID or Multiple Track Search ID)
18 08 (TIC to the SearchID)
20 0x (06/05 Data Read or Write)
28 03/08 (TIC/NOP) - this CCW will be a NOP if this
PIOBK is the last package in the active
channel program, or a TIC to the next PIOBK
in the active channel program otherwise
30 -- Seek data BBCCHH (physical layout of DASD)
Where BB = Bin number (zeroes)
CC = Cylinder number
HH = Head/Track number
36 -- SearchID data CCHHR (logical layout of DASD)
Where CC = Cylinder number
HH = Head/Track number
R = Record number
3B -- Flag byte
3C -- Savearea or Indirect Interrupt Return Address
40 07 Start of the next PIOBK package (Seek/SPP)
ECKD format:
offset opcode description
0 -- Locate Record data area (two doublewords,
mapped by HCPLRDA
10 63 (Define Extent CCW)
18 47 (Locate Record CCW)
20 8x (86/85 Read Data or Write Update Data CCW)
28 03/08 (TIC/NOP) - this CCW will be a NOP if this
PIOBK is the last package in the active
channel program, or a TIC to the next PIOBK
in the active channel program otherwise
30 -- Format-2 IDAW (8 bytes, 64 bits)
38 -- Unused 3 bytes
3B -- Flag byte
3C -- Savearea or Indirect Interrupt Return Address
40 -- Locate record data area of next package
FBA format:
offset opcode description
0 -- Locate data area (one doubleword, mapped by
HCPLCDA)
8 -- Format-2 IDAW (8 bytes, 64 bits)
10 63 (Define Extent CCW)
18 43 (Locate CCW)
20 4x (42/41 Read or Write CCW)
28 03/08 (TIC/NOP) - this CCW will be a NOP if this
PIOBK is the last package in the active
channel program, or a TIC to the next PIOBK
in the active channel program otherwise
30 -- Unused 2 bytes
32 -- Calculated pseudo-cylinder number
corresponding to starting block number
34 -- Calculated pseudo-page number corresponding
to starting block number
35 -- Unused 3 bytes
38 -- Unused 3 bytes
3B -- Flag byte
3C -- Savearea or Indirect Interrupt Return Address
40 -- Locate data area of next package
PIOBK Control Block Content
PIOBK DSECT
Hex Dec Type/Val Lng Label (dup) Comments
---- ---- --------- ---- -------------- --------
0000 0 Structure PIOBK Paging I/O CCW packages.
PIOBK definitions common to all formats
0000 0 Signed 8 PIOINITL (4) Channel program initialization
and target record location area
0020 32 Signed 8 PIORDWR (0) - Read or write CCW -
0020 32 Bitstring 1 PIORDWRO CCW op code - x'06' CKD Read
Data, (**) x'05' CKD Write Data,
(**) x'86' ECKD Read Data, x'85'
ECKD Write Update Record, x'42'
FBA Read or x'41' FBA Write.
..1. .... PIOFINIS X'20' Indicates that the PIOBK
has been processed. If PIORDWRO
equals: x'26' for a CKD read,
(**) x'25' for a CKD write, (**)
x'A6' for an ECKD read, x'A5' for
an ECKD write, x'62' for an FBA
read, or x'61' for an FBA write,
then the PIOBK has been processed
..11 .... PIOINERR X'30' Indicates that the PIOBK
had an error that has been
processed. If PIORDWRO equals:
x'36' for a CKD read, (**) x'35'
for a CKD write, (**) x'B6' for
an ECKD read, x'B5' for an ECKD
write, x'72' for an FBA read, or
x'71' for an FBA write, then an
error has already been processed
for this PIOBK.
Notes : These PIOFINS and PIOINERR equates are neither bits
nor codes in the traditional sense. They are turned on
during interrupt processing (after the I/O for this PIOBK
has completed) in the top nibble of the opcode (which
never uses those bits) to indicate that the PIOBK has been
processed, or the PIOBK has an error that has been
processed, respectively. There are turned on and off with
OI and NI without changing the opcode itself (and
obviously, must be turned off before the PIOBK is used in
an active channel program).
(**): CKD formatted devices and CKD format paging channel
programs are no longer supported as of this release,
although they will still be attached to the system
and used.
0021 33 Address 1 PIORDWRF CCWCC+CCWIDA - READ or WRITE CCW
flag field Command Chaining plus
Indirect Data Addressing
0022 34 Signed 2 PIORDWRC '1000' - READ or WRITE CCW count
0024 36 Address 4 PIORDWRA - READ or WRITE CCW IDAW absolute
address.
0028 40 Signed 8 PIO3OR8 (0) - NOP or TIC CCW -
0028 40 Signed 4 PIO3OR8W (0) - 1st word of CCW that will be
changed with a TIC CCW.
0028 40 Bitstring 1 PIO3OR8O '03/08' - NOP or TIC op code
0029 41 Address 1 PIO3OR8F CCWUSPN / 0 - NOP or TIC flags
002A 42 Signed 2 PIO3OR8C '0000' - NOP or TIC count
002C 44 Address 4 PIO3OR8A - NOP or TIC address field
contains absolute address of the
starting CCW in the next PIOBK.
0030 48 Bitstring 11 PIOMISC Miscellaneous data: - ECKD:
contains the IDAW used to locate
the target area in host absolute
storage - FBA: used to save the
calculated cylinder and page
numbers corresponding to the
block numbers used for the actual
I/O - CKD: contains SEEK and
SEARCHID arguments
003B 59 Bitstring 1 PIOFLAG Flags byte:
...1 .... PIOBADCC X'10' PIOBADCC Indicates a
condition code 1 or 2 was
received from a RSCH. When an
IFCC+CCC is received, we'll need
to restart this package.
.... 1... PIOPGFLT X'08' PIOPGFLT This is a page
read for a page fault.
.... .1.. PIOIOERR X'04' PIOIOERR Indicates an I/O
error has occurred for this CCW
package for an incorrect length
problem and a no record found on
a miss for N+1.
.... ..1. PIOMRPCI X'02' PIOMRPCI Indicates the
first record of multi read
requires a PCI.
.... ...1 PIOMULTI X'01' PIOMULTI Indicates a
multiple write or read CCW
package.
...1 1111 PIOALLFG PIOMRPCI+PIOIOERR+PIOMULTI+PIOPGF
LT+PIOBADCC PIOALLFG Used to
reset flags in PIOFLAG
003C 60 Address 4 PIOSVRTN Pointer to structure designating
interface back to original
caller: SW - deferred savearea
(SVGBK) SR - deferred savearea
(SVGBK) MW - Indirect IRA - may
be a full PIRBK or one word
containing caller's Interrupt
Return Address (IRA) backend
routine MR - If negative,
contains address of deferred
savearea (SVGBK) for task
deferred on faulted page,
otherwise, contains Indirect IRA,
as per MW case
0040 64 Signed 4 PIONEXT (0) Next sequential PIOBK
00000040 PIOBSIZE *-PIOBK Size of one CCW package
in bytes
00000008 PIOSIZE ((*-PIOBK)+7)/8 Size of one CCW
package in double-words
00FFFFC0 PIOISOLB X'7FFFFFC0' Isolate the beginning
address of one PIOBK block.
00FFF800 PIOISOLA X'7FFFF800' Isolate the start
address of the first PIOBK in
storage.
00000800 PIOTOTBS 2048 Total byte size of area for
all PIOBKs.
00000020 PIOCTPIO (PIOTOTBS/8)/PIOSIZE Count of
PIOBKs that fit into a PIOBK
area.
0000001F PIOMAXAC PIOCTPIO-1 Maximum number of
PIOBKs that can be concurrently
active
00000100 PIOPAGSZ PIOCTPIO*PIOSIZE Total doubleword
size of area for all PIOBKs.
End of common PIOBK definitions
PIOBK definitions specifically for ECKD paging devices
0000 0 Bitstring 16 PIOLRDA - Locate Record Parameter This
area mapped by LRDA DSECT
0010 16 Signed 8 PIODEFX - Define Extent CCW -
0018 24 Signed 8 PIOLR - Locate Record CCW -
0030 48 Signed 8 PIOEIDAW - Format-2 IDAW (entire 4K)
PIOBK definitions specifically for FBA paging devices
0000 0 Bitstring 8 PIOLCDA - Locate CCW data area (mapped by
LCDA DSECT)
0008 8 Signed 8 PIOFIDAW - Format-2 IDAW (entire 4K)
0018 24 Signed 8 PIOLOC - Locate CCW
0030 48 Bitstring 2 * - Unused for FBA
0032 50 Bitstring 3 PIOFCCP (0) - CCP for block number
0032 50 Signed 2 PIOFCC - Cylinder number
0034 52 Bitstring 1 PIOFP - Page number
PIOBK definitions specifically for CKD paging devices
0000 0 Signed 8 PIOSEEK - Seek CCW -
0008 8 Signed 8 PIOSETS - Set Sector CCW -
0010 16 Signed 8 PIOSRCH - SearchID Equal CCW -
0018 24 Signed 8 PIOSTIC - Tic CCW to Search -
0030 48 Bitstring 6 PIOSKDAT (0) - Seek argument -
0030 48 Signed 2 PIOBB - BB Bin number
0032 50 Bitstring 4 PIOSCCHH (0) - Picks up both fields below
0032 50 Signed 2 PIOSCC - CC Cylinder number
0034 52 Signed 2 PIOSHH - HH Head number
0036 54 Bitstring 5 PIOCCHHR (0) - SearchID argument
0036 54 Signed 2 PIOSIDCC - SearchID cylinder number
0038 56 Signed 2 PIOSIDHH - SearchID head number
003A 58 Bitstring 1 PIOREC - R Record number
PIOBK Storage Layout
*** PIOBK - Paging I/O CCW packages.
*
* +-------------------------------------------------------+
* 0 | |
* = PIOINITL =
* | |
* +------+------+-------------+---------------------------+
* 20 |:RDWRO|:RDWRF| PIORDWRC | PIORDWRA |
* +------+------+-------------+---------------------------+
* 28 |:3OR8O|:3OR8F| PIO3OR8C | PIO3OR8A |
* +------+------+-------------+---------------------------+
* 30 | PIOMISC |
* | +------+---------------------------+
* 38 | |:FLAG | PIOSVRTN |
* +--------------------+------+---------------------------+
*
*** PIOBK - Paging I/O CCW packages.
*** Overlay for PIOINITL in PIOBK
*
* +-------------------------------------------------------+
* 0 | PIOLRDA |
* | |
* +-------------------------------------------------------+
* 10 | PIODEFX |
* +-------------------------------------------------------+
* 18 | PIOLR |
* +-------------------------------------------------------+
* 20
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOMISC in PIOBK
*
* +-------------------------------------------------------+
* 30 | PIOEIDAW |
* +-------------------------------------------------------+
* 38
*
*** Overlay for PIOMISC in PIOBK
*** Overlay for PIOINITL in PIOBK
*
* +-------------------------------------------------------+
* 0 | PIOLCDA |
* +-------------------------------------------------------+
* 8 | PIOFIDAW |
* +-------------------------------------------------------+
* 10
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOLR in PIOBK
*
* +-------------------------------------------------------+
* 18 | PIOLOC |
* +-------------------------------------------------------+
* 20
*
*** Overlay for PIOLR in PIOBK
*** Overlay for PIOMISC in PIOBK
*
* +-------------+-------------+------+
* 30 |/////////////| PIOFCC |PIOFP | 35
* +-------------+-------------+------+
*
*** Overlay for PIOMISC in PIOBK
*** Overlay for PIOINITL in PIOBK
*
* +-------------------------------------------------------+
* 0 | PIOSEEK |
* +-------------------------------------------------------+
* 8 | PIOSETS |
* +-------------------------------------------------------+
* 10 | PIOSRCH |
* +-------------------------------------------------------+
* 18 | PIOSTIC |
* +-------------------------------------------------------+
* 20
*
*** Overlay for PIOINITL in PIOBK
*** Overlay for PIOMISC in PIOBK
*
* +-------------+-------------+-------------+-------------+
* 30 | PIOBB | PIOSCC | PIOSHH | PIOSIDCC |
* +-------------+------+------+-------------+-------------+
* 38 | PIOSIDHH |PIOREC| 3B
* +-------------+------+
*
*** Overlay for PIOMISC in PIOBK
PIOBK Cross Reference
Symbol Dspl Value -------------- ---- ----- PIOALLFG 003B 1F PIOBADCC 003B 10 PIOBB 0030 PIOBSIZE 0040 00000040 PIOCCHHR 0036 PIOCTPIO 0040 00000020 PIODEFX 0010 PIOEIDAW 0030 PIOFCC 0032 PIOFCCP 0032 PIOFIDAW 0008 PIOFINIS 0020 20 PIOFLAG 003B PIOFP 0034 PIOINERR 0020 30 PIOINITL 0000 PIOIOERR 003B 04 PIOISOLA 0040 00FFF800 PIOISOLB 0040 00FFFFC0 PIOLCDA 0000 PIOLOC 0018 PIOLR 0018 PIOLRDA 0000 PIOMAXAC 0040 0000001F PIOMISC 0030 PIOMRPCI 003B 02 PIOMULTI 003B 01 PIONEXT 0040 PIOPAGSZ 0040 00000100 PIOPGFLT 003B 08 PIORDWR 0020 PIORDWRA 0024 PIORDWRC 0022 PIORDWRF 0021 PIORDWRO 0020 PIOREC 003A PIOSCC 0032 PIOSCCHH 0032 PIOSEEK 0000 PIOSETS 0008 PIOSHH 0034 PIOSIDCC 0036 PIOSIDHH 0038 PIOSIZE 0040 00000008 PIOSKDAT 0030 PIOSRCH 0010 PIOSTIC 0018 PIOSVRTN 003C PIOTOTBS 0040 00000800 PIO3OR8 0028 PIO3OR8A 002C PIO3OR8C 002A PIO3OR8F 0029 PIO3OR8O 0028 PIO3OR8W 0028
Copyright IBM Corporation, 1990, 2009