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

#### QDIO

Prolog

Control Block Contents
QDIO DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### QDIO Prolog

     NAME       : HCPQDIO
     DESCRIPTION: Queued Direct I/O Control Block
     DSECT      : QDIO
     FUNCTION   :
                  HCPQDIO maps all the guest's and associated CP shadow
                  QDIO Queues for a specific subchannel.
     LOCATED BY : VDEVQDIO
     SERIALIZED : VDEV Lock
     CREATED BY : Dynamically created by HCPGETST when a QDIO
                  Queue is created with an Establish-QDIO-
                  Queues Channel Command.  This control
                  block exists in the system execution
                  space, and my be backed anywhere in storage.
     DELETED BY : Deleted by HCPRELST when a QDIO Activate-
                  QDIO-Queues Channel Command terminates.
     Comments   :
                  - Not known by hardware.
                  - The following tags are used to described the
                  address type for pointers within this control block:
                  A : Host absolute address
                  R : Host real address
                  L : Logical address in the system execution space
                  G : Guest absolute address

#### QDIO Control Block Content

#### QDIO DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      QDIO           Queued Direct I/O Control Block
          QDIO Lock
    0000    0 Dbl-Word     8 QDIOLOCK (3)   QDIO Lock Word
    0018   24 Address      4 QDIORDEV       L: address of RDEV associated
                                            with this queue.
    001C   28 Signed       4 QDIOREAS       Failing reason code during QDIO
                                            Queue creation.
    0020   32 Address      4 QDICPQDR       L: Address of CP's
                                            Queue-Description Record (QDR)
                                            used when issuing
                                            Establish-QDIO-Queues CCW.
                                            (Fretted after I/O).
          Following Fields Serialized on Compare and Swap
    0024   36 Address      4 QDIOQERR       L:Address of a QIOBK that has an
                                            error to report
         -----End of Compare and Swap Serialization***************----
          QDIO Queue Information Block
    0028   40 Dbl-Word     8 QDIGQIB64      G:Guest absolute ADDR of QIB.
    0030   48 Dbl-Word     8 QDIHQIB64      A:Host absolute address of
                                            Guest's QIB. (locked)
          QDIO Storage Access and Queue Flags
    0038   56 Bitstring    1 QDIOFG1        Storage Access Flag
              .... 1...      QDIOACT        X'08' QDIO Q's have been
                                            activated
              .... .1..      QDIODOFS       X'04' Delete QDIO Queues when
                                            final status is received.
              .... ..1.      QDIOGA64       X'02' Guest absolute addresses
                                            are 64 bit.
          QDIO Processing Flags
    0039   57 Bitstring    1 QDIOFG2        Processing Flags
              1... ....      QDIOSYNC       X'80' Synchronous SIGA processing
                                            required. 1 SIGA per primed
                                            buffer
              .1.. ....      QDIOOPCI       X'40' Extended OUTPUT PCI
                                            supported
              ..1. ....      QDIOQMCU       X'20' Adapter configured for QDIO
                                            Multiple Control Unit Facility
              ...1 ....      QDIOEBSM       X'10' QEBSM Managed Connection
    003A   58 Bitstring    1 *              Reserved for future IBM use
    003B   59 Bitstring    1 QDIOTKEY       QIB Storage Key
              1111 ....      QDIQKEY        X'F0' Storage Key Mask for QIB
          Input / Output QDIO Queues
    003C   60 Bitstring    1 QDIOFMT        QDIO Format Type
              00000000       QDIOFMT0       X'00' Format 0 Queue
              00000001       QDIOFMT1       X'01' Format 1 Queue
              00000002       QDIOFMT2       X'02' Format 2 Queue
              00000002       QDIOLFMT       QDIOFMT2 Highest supported Q
                                            format
    003D   61 Bitstring    1 QDINPCT        Number of Input Queues
    003E   62 Bitstring    1 QDIOUTCT       Number of Output Queues
          QDIO Hardware Support Flags
    003F   63 Bitstring    1 QDIOHWS        Hardware Support Flags
              1... ....      QDISIGAW       X'80' SIGA-w Initiate Write
                                            Supported
              .1.. ....      QDISIGAR       X'40' SIGA-r Initiate Read
                                            Supported
              ..1. ....      QDISIGAS       X'20' SIGA-s Synchronize
                                            Supported
          QDIO Queue Anchors
          The following are the anchors for two link lists of
          QIOBK(s) created when an Establish-QDIO-Queues CCW is
          issued.  The link list is an ordered list with QIONEXT
          pointing to the next queue.  The first queue in the list
          (the one specified in the anchor) is for queue 0, while
          the next linked QIOBK pointed by QIONEXT is for queue 1.
          Up to 32 queues may be linked on each anchor.
          One anchor is for established input queues and the other
          is for output queues.
    0040   64 Address      4 QDINPUT        L:ADDR of first QDIO Input Q
    0044   68 Address      4 QDIOUTQ        L:ADDR of first QDIO Output Q
    0048   72 Signed       4 QDIOMCAS       Format-2 MultiCast Queue Mask
          Processing Routines
    004C   76 Address      4 QDIOQPRC       L:Shadow Queue Processor Linkage:
                                            HCPCALL R15,
                                            ATTR=(RES,MP,DYN,LONGREG,
                                            AMODE64,TMODEAR) Input/Output:
                                            Like HCPVQQSS (Zero for vSwitch)
          QEBSM Information
    0050   80 Dbl-Word     8 QDIQBICB       A:QBICB address which is also the
                                            QEBSM Subchannel Token
    0058   88 Signed       4 QDIOVDEV       L:VDEV Block Address
          Performance Counters
          Notes      : QDIOCSGW, QDIOWCSGR, and QDIOCSGS are treated as an
                array of counters, and therefore they must remain
                contiguous in the control block.
                QDIOCSGW, QDIOWCSGR, and QDIOCSGS are serialized by
                the VDEV lock and not the QDIO Lock.
    005C   92 Bitstring   12 QDIOCTRS (0)   --- Start of contiguous area
    005C   92 Signed       4 QDIOCSGW       Virtual SIGA-w count
    0060   96 Signed       4 QDIOCSGR       Virtual SIGA-r count
    0064  100 Signed       4 QDIOCSGS       Virtual SIGA-s count --- End of
                                            contiguous area
    0068  104 Signed       4 *              Reserved for Future IBM USE
    006C  108 Signed       4 QDIQSBLK       L:QSBLK QDIO Statistics Block for
                                            QEBSM manage queues
          Reserved Space
    0070  112 Dbl-Word     8 * (2)          Reserved for Future IBM USE
    0080  128 Character    1 QDI$END (0)    End of Queued Direct I/O CB
          Notes      : The following assembler equates are defined and can be
                used but do not appear in the control block expansion
                because they are in the PLX section and
                PRINT OFF,NOGEN is in effect.

#### QDIO Storage Layout

    *** QDIO - Queued Direct I/O Control Block
    *
    *     +-------------------------------------------------------+
    *   0 |                                                       |
    *     =                       QDIOLOCK                        =
    *     |                                                       |
    *     +---------------------------+---------------------------+
    *  18 |         QDIORDEV          |         QDIOREAS          |
    *     +---------------------------+---------------------------+
    *  20 |         QDICPQDR          |         QDIOQERR          |
    *     +---------------------------+---------------------------+
    *  28 |                      QDIGQIB64                        |
    *     +-------------------------------------------------------+
    *  30 |                      QDIHQIB64                        |
    *     +------+------+------+------+------+------+------+------+
    *  38 |:OFG1 |:OFG2 |//////|:OTKEY|:OFMT |:NPCT |:OUTCT|:OHWS |
    *     +------+------+------+------+------+------+------+------+
    *  40 |         QDINPUT           |         QDIOUTQ           |
    *     +---------------------------+---------------------------+
    *  48 |         QDIOMCAS          |         QDIOQPRC          |
    *     +---------------------------+---------------------------+
    *  50 |                       QDIQBICB                        |
    *     +---------------------------+---------------------------+
    *  58 |         QDIOVDEV          |         QDIOCSGW          |
    *     +---------------------------+---------------------------+
    *  60 |         QDIOCSGR          |         QDIOCSGS          |
    *     +---------------------------+---------------------------+
    *  68 |///////////////////////////|         QDIQSBLK          |
    *     +---------------------------+---------------------------+
    *  70 |///////////////////////////////////////////////////////|
    *     |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *
    *** QDIO - Queued Direct I/O Control Block

#### QDIO Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    QDI$END        0080
    QDICPQDR       0020
    QDIGQIB64      0028
    QDIHQIB64      0030
    QDINPCT        003D
    QDINPUT        0040
    QDIOACT        0038 08
    QDIOCSGR       0060
    QDIOCSGS       0064
    QDIOCSGW       005C
    QDIOCTRS       005C
    QDIODOFS       0038 04
    QDIOEBSM       0039 10
    QDIOFG1        0038
    QDIOFG2        0039
    QDIOFMT        003C
    QDIOFMT0       003C 00000000
    QDIOFMT1       003C 00000001
    QDIOFMT2       003C 00000002
    QDIOGA64       0038 02
    QDIOHWS        003F
    QDIOLFMT       003C 00000002
    QDIOLOCK       0000
    QDIOMCAS       0048
    QDIOOPCI       0039 40
    QDIOQERR       0024
    QDIOQMCU       0039 20
    QDIOQPRC       004C
    QDIORDEV       0018
    QDIOREAS       001C
    QDIOSYNC       0039 80
    QDIOTKEY       003B
    QDIOUTCT       003E
    QDIOUTQ        0044
    QDIOVDEV       0058
    QDIQBICB       0050
    QDIQKEY        003B F0
    QDIQSBLK       006C
    QDISIGAR       003F 40
    QDISIGAS       003F 20
    QDISIGAW       003F 80

This information is based on z/VM V5R2.0. Last updated on 12 Apr 2006 at 17:19:08 EDT.
Copyright IBM Corporation, 1990, 2005