PIOBK Back to Index page
 
Prolog 
Control Block Contents 
   PIOBK DSECT
Storage Layout 
Cross Reference (Contains links to field and bit definitions)
Programming Interface Information:
This information is NOT intended to be
used as Programming Interfaces of z/VM.


  PIOBK Prolog Top of page
 
 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 DASD.
 LOCATED BY : EXPPIOARHL - Host logical address of the PIOBK array.
              Various pointers point into the PIOBK array.
              IORCPA    - Contains the host absolute
              address of the first active CCW
              in the first active PIOBK.
              EXPPIOEF  - Host absolute address of the
              first active PIOBK.
              EXPPIOEL  - Host absolute address of the PIOBK that
              contains the suspended NOP.  Updated as
              the CCW package is being built.
              EXPGATE   - Gating PIOBK.  This is the host absolute
              address of the entry in the PIOBK that
              contains a suspended NOP that the
              channel subsystem has seen.  (Changed to
              a TIC just before execution of a RSCH.)
              A zero value indicates a channel program
              is not currently being built.
 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.
 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 Top of page
 

 PIOBK DSECT Top of page
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'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'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'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. They 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). 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 entry. 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 003B 59 Bitstring 1 PIOFLAG Flags byte: ..1. .... PIOBeBu X'20' PIOBeBu (RAS) PIOBK being built. ...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.. 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 .111 PIOALLFG PIOMRPCI+PIOIOERR+PIOMULTI+PIOBAD CC 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. Caution Extreme care must be used. The PIOBKs are chained via the TICs. Using PIONEXT may run off the PIOBK array and should be used with care. PIOBK size contants. 00000040 PIObSIZE *-PIOBK Size of one PIOBK in bytes. 00000008 PIOdwSIZE (PIObSIZE+7)/8 Size of one PIOBK in double-words PIOBK array size contants. PIOARbSIZE determines the over all size of the PIOBK array. It is a hard coded value. As aligned storage is obtained, it should be either 4096 or 2048. Want to make it bigger? Like 8192? Code will need major change in HCPRDA/RDD to get contig frames, then contig pages, then glue together (Like HCPSXPMC almost.) 00001000 PIOARbSIZE 4096 Total byte size of area for all PIOBKs. (PIOBK array size). 00000200 PIOARdwSIZE PIOARbSIZE/8 Total doubleword size of area for all PIOBKs. Constants for finding a PIOBK or the PIOBK array. 00FFFFC0 PIOISOLB X'7FFFFFC0' Isolate the beginning address of one PIOBK block. Constants for other counts. 00000040 PIOCTPIO (PIOARbSIZE/PIObSIZE) Count of PIOBKs that fit into a PIOBK array. 0000003F PIOMAXAC PIOCTPIO-1 Maximum number of PIOBKs that can be concurrently active. This allows for the first PIOBK that is the "target" of a RSCH to simply have a TIC. 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 Storage Layout Top of page
 
          
*** 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
 
 
  PIOBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
PIObSIZE       0040 00000040
PIOdwSIZE      0040 00000008
PIOALLFG       003B 17
PIOARbSIZE     0040 00001000
PIOARdwSIZE    0040 00000200
PIOBeBu        003B 20
PIOBADCC       003B 10
PIOCTPIO       0040 00000040
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
PIOISOLB       0040 00FFFFC0
PIOLCDA        0000
PIOLOC         0018
PIOLR          0018
PIOLRDA        0000
PIOMAXAC       0040 0000003F
PIOMISC        0030
PIOMRPCI       003B 02
PIOMULTI       003B 01
PIONEXT        0040
PIORDWR        0020
PIORDWRA       0024
PIORDWRC       0022
PIORDWRF       0021
PIORDWRO       0020
PIOSVRTN       003C
PIO3OR8        0028
PIO3OR8A       002C
PIO3OR8C       002A
PIO3OR8F       0029
PIO3OR8O       0028
PIO3OR8W       0028
 
This information is based on z/VM 7.2.0 Last updated on 24 Jun 2020 at 09:29:38 EDT.
Copyright IBM Corporation, 1990, 2020