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' QDIOACT QDIO Q's have been
                                            activated
              .... .1..      QDIODOFS       X'04' QDIODOFS Delete QDIO Queues
                                            when final status is received.
              .... ..1.      QDIOGA64       X'02' QDIOGA64 Guest absolute
                                            addresses are 64 bit.
          QDIO Processing Flags
    0039   57 Bitstring    1 QDIOFG2        Processing Flags
              1... ....      QDIOSYNC       X'80' QDIOSYNC Synchronous SIGA
                                            processing required. 1 SIGA per
                                            primed buffer
              .1.. ....      QDIOOPCI       X'40' QDIOOPCI Extended OUTPUT
                                            PCI supported
              ..1. ....      QDIOQMCU       X'20' QDIOQMCU Adapter configured
                                            for QDIO Multiple Control Unit
                                            Facility
              ...1 ....      QDIOEBSM       X'10' QDIOEBSM QEBSM Managed
                                            Connection
    003A   58 Bitstring    1 QDIOPCNT       Number of ports per chpid
    003B   59 Bitstring    1 QDIOTKEY       QIB Storage Key
              1111 ....      QDIQKEY        X'F0' QDIQKEY Storage Key Mask
                                            for QIB
          Input / Output QDIO Queues
    003C   60 Bitstring    1 QDIOFMT        QDIO Format Type
              00000000       QDIOFMT0       X'00' QDIOFMT0 Format 0 Queue
              00000001       QDIOFMT1       X'01' QDIOFMT1 Format 1 Queue
              00000002       QDIOFMT2       X'02' QDIOFMT2 Format 2 Queue
              00000002       QDIOLFMT       QDIOFMT2 QDIOLFMT 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' QDISIGAW SIGA-w Initiate
                                            Write Supported
              .1.. ....      QDISIGAR       X'40' QDISIGAR SIGA-r Initiate
                                            Read Supported
              ..1. ....      QDISIGAS       X'20' QDISIGAS 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 |:OPCNT|: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
    QDIOPCNT       003A
    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 V6R1.0. Last updated on 18 Feb 2010 at 08:58:59 EDT.
Copyright IBM Corporation, 1990, 2008