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 RELOCATION CONSIDERATIONS : None 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, 2011