|  | 
Hex   Dec Type/Val   Lng Label (dup)    Comments
---- ---- --------- ---- -------------- --------
0000    0 Structure      DSVBK          DiSpatch Vector BlocK
      Format of the header:
          00000000       DSVHEADR       * Base value to be used when
                                        referencing the DSVBK header
0000    0 Bitstring    1 DSVHDWKB       Byte of Work Bits All bit
                                        manipulations must be serialized
                                        by compare-and-swap logic. See
                                        note in block comment above.
          1... ....      DSVDSCAN       X'80' DSVDSCAN A Steal Task may
                                        need to be started
          .1.. ....      DSVRCGAL       X'40' DSVRCGAL A foreground
                                        replenish of the cleared global
                                        available list is required
          ..1. ....      DSVNOOWN       X'20' DSVNOOWN High priority
                                        reclaim noown resources
          ...1 ....      DSVSXSPM       X'10' DSVSXSPM High priority
                                        SXSPM work
0001    1 Bitstring    1 DSVHDFLG       Flag byte for DSVBK status
          1... ....      DSVHDOFL       X'80' DSVHDOFL Set when DSVBK has
                                        "overflowed"
          .1.. ....      DSVTIDLE       X'40' DSVTIDLE Set to indicate
                                        that a scan should be made of the
                                        test-idle users by HCPDSP.
          ...1 ....      DSVIMBAL       X'10' DSVIMBAL Possible processor
                                        workload imbalance
          .... 1...      DSVNOPTL       X'08' DSVNOPTL We could not
                                        obtain the PTIL lock for any of
                                        the VMDBKs in the master-only
                                        DSVBK.
          .... .1..      DSVNEWRK       X'04' DSVNEWRK Used to tell
                                        HCPSTLWT that new work was added
                                        to this DSVBK between the time
                                        the dispatcher released the DSVBK
                                        lock and when HCPSTLWT turns on
                                        the wait bit in SRMCPUWT. This is
                                        necessary since the dispatcher
                                        does not hold the scheduler lock
                                        exclusive or the DSVBK lock
                                        during that time and another
                                        processor could add work to the
                                        DSVBK and the dispatcher could go
                                        into wait state without knowing
                                        that work is available. The DSVBK
                                        lock must be held to turn this
                                        bit on or off.
          .... ..1.      DSVOFLER       X'02' DSVOFLER Indicates that
                                        this DSVBK had the
                                        DSVHDOFL/DSVLOREJ mismatch error
                                        at least one time
0002    2 Address      1 DSVHDFRE       Anchor of the "entries not in
                                        use" queue.
0003    3 Address      1 DSVHDWRK       Anchor of the "entries in use"
                                        queue.
0004    4 Address      4 DSVNXTDV       Pointer to the next dispatch
                                        vector in a circular linked list
                                        of dispatch vectors that belong
                                        to CPUs of the same CPU type.
                                        i.e: zIIP,zAAP,CP,IFL. Protected
                                        by the scheduler lock.
0008    8 Signed       4 DSVLOREJ       Lowest-value (best) priority
                                        which was rejected from this
                                        DSVBK
000C   12 Signed       2 DSVUSERC       User count - number of VMDBKS in
                                        this DSVBK
000E   14 Address      1 DSVLSTEN       Last DSVENTRY in DSVHDWRK queue
000F   15 Address      1 *              Reserved for future IBM use
0010   16 Dbl-Word     8 DSVLOCK (6)    Lock area for the DSVBK lock.
                                        This lock is a formal exclusive
                                        spin lock and it is used to
                                        serialize access to a DSVBK. The
                                        HCPLKPLD and HCPULPLD macros are
                                        used to obtain and release it. At
                                        least a share of the scheduler
                                        lock must be held before
                                        requesting this lock. This means
                                        that any DSVBK can be accessed or
                                        even changed without its DSVBK
                                        lock if the scheduler lock is
                                        held in exclusive mode. More than
                                        one DSVBK lock can be held by a
                                        processor only if the scheduler
                                        lock is first held in exclusive
                                        mode. The scheduler lock cannot
                                        be obtained in exclusive mode
                                        while a DSVBK lock is held.
0040   64 Dbl-Word     8 * (0)
0040   64 Bitstring    8 DSVASSOC       Mask of CPUs that are associated
                                        with this dispatch vector
0048   72 Signed       4 DSVFTRMK       Mask of features available on all
                                        CPUs associated with this
                                        dispatch vector
004C   76 Address      4 DSVGLIST       Global list pointer, either to
                                        all active DSVBKs or to all
                                        DSVBKs in the free list
0050   80 Address      4 DSVTOPBK       Pointer to containing TOPBK
0054   84 Signed       4 DSVCAPAC       The amount of unparked CPU
                                        capacity for all CPUs associated
                                        with this DSVBK. An entire real
                                        CPU of capacity is represented as
                                        x'10000'. This is an unsigned
                                        value, as a CPU will never have
                                        negative capacity.
0058   88 Signed       4 DSVRCAP        The amount of remaining capacity
                                        which hasn't been earmarked for a
                                        VMDBK with affinity to this
                                        DSVBK. This value is in the same
                                        units as DSVCAPAC, however, it is
                                        a signed number.
         Notes      : For a single-level topology, DSVTOPID has the
               format x'bb000000' where bb is the TOPCNTID of
               the TOPNL=1 TOPBK.
               For a two-level topology, DSVTOPID has the format
               x'bbcc0000' where bb is the TOPCNTID of the
               TOPNL=2 TOPBK, and cc is the TOPCNTID of the
               TOPNL=1 TOPBK.
               Currently z/VM supports machines with up to
               two levels of CPU topology.  The architecture
               allows for up to 5 topology levels.  This field
               has room for 4 topology levels.  If z/VM were to
               support more than 4 levels of topology, DSVTOPID
               would need to be expanded.
005C   92 Bitstring    4 DSVTOPID       Topology identifier. This
                                        consists of the container ids
                                        (TOPCNTID) for the TOPBKs above
                                        this DSVBK in the topology tree,
                                        specified left to right with the
                                        highest (greatest TOPNL value)
                                        TOPBKs listed first.
0060   96 Address      4 DSVNXTTO       Pointer to the next dispatch
                                        vector in a circular linked list
                                        of dispatch vectors of the same
                                        CPU type that belong to the same
                                        NL=1 TOPBK. Serialized by the
                                        topology lock (HCPDSVTL).
0064  100 Signed       4 *              Reserved for IBM use
0068  104 Signed       8 DSVTIMWT       TOD clock value when a CPU
                                        associated with this DSVBK last
                                        exited wait state.
0070  112 Dbl-Word     8 * (0)
0070  112 Bitstring    8 DSVUNPRK       Mask of associated CPUs that are
                                        currently in the unparked state
0078  120 Bitstring   64 DSVCPARY       Cache penalty array. An indexed
                                        array of one-byte entries that
                                        contain the "cache penalty" or
                                        topological distance from each of
                                        the other DSVBKs of the same CPU
                                        type. Indexed by position in the
                                        array of DSVBKs starting at
                                        HCPDSVST. An entry value of x'FF'
                                        means there is no active DSVBK at
                                        that index into the HCPDSVST
                                        array.
          000000B8       DSVHDLEN       *-DSVHEADR Length in bytes of the
                                        DSVBK header.
      Format of each entry:
00B8  184 Dbl-Word     8 DSVENTRY (0)   Base value to be used when
                                        referencing a DSVBK entry.
00B8  184 Address      3 DSVVMDBK       Bits 0 to 19 of the user's VMDBK
                                        address. Bits 20 to 31 are known
                                        to be zero and need not be stored
                                        in the Vector entry.
          1... ....      DSVINUSE       X'80' DSVINUSE High-order bit is
                                        set when the DSVBK entry is "in
                                        use", whenever the entry is in
                                        the chain starting from DSVHDWRK.
00BA  186 Bitstring    1 DSVFLAGS       A flag nibble
          .... 1...      DSVNOSTL       X'08' DSVNOSTL Set when work MUST
                                        not be stolen, in order to
                                        respect VMDBK's affinity
                                        requirements
00BB  187 Address      1 DSVFPNT        Forward pointer to next entry in
                                        queue. Zero if this is the last
                                        entry.
00BC  188 Signed       4 DSVPRIOR       A representation of this VMDBK's
                                        priority in the dispatch list.
                                        The value in this field is a
                                        function of the VMDBK's VMDDPRTY.
          00000008       DSVENTLN       *-DSVENTRY Length in bytes of a
                                        DSVBK entry
          00000028       DSVMAXUS       40 Maximum number of users in a
                                        DSVBK
          00000003       DSVSHIFT       3 Number of bits to shift to
                                        convert a DSVENTRY index into a
                                        displacement from DSVHEADR
          00000200       DSVLEN         (DSVHDLEN+DSVMAXUS*DSVENTLN+255)/
                                        256*256 Length in bytes of a
                                        DSVBK.
          00000040       DSVSIZE        (DSVLEN+7)/8 Size in doublewords
                                        of a DSVBK |  |