Programming Interface Information: This information is NOT intended to be used as Programming Interfaces of z/VM.

#### PIOBK

Prolog

Control Block Contents
PIOBK DSECT

Storage Layout

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

This information is based on z/VM V6R1.0. Last updated on 18 Feb 2010 at 08:57:30 EDT.
Copyright IBM Corporation, 1990, 2008