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