DSVBK Back to Index page
 
Prolog 
Control Block Contents 
   DSVBK 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.


  DSVBK Prolog Top of page
 
 NAME       : HCPDSVBK
 DESCRIPTION: DiSpatch Vector BlocK
 DSECT      : DSVBK
 FUNCTION   : The DSVBK maps the format of a Dispatch Vector.
              Each online CPU is associated with a DSVBK, but
              several CPUs may share the same DSVBK.
              Additionally, there is one to contain Master-
              Only work.  This DSECT maps the storage defined in
              the module HCPDSV.
 LOCATED BY : HCPDSVMS is the address of the Master-Only DSVBK.
              HCPDSVST is the starting address of the other DSVBKs.
              They are contiguous in storage.
              PFXDSVBK identifies the DSVBK that the processor
              is associated with.
              CORDSVBK identifies the DSVBK that the processors
              of this core are associated with.
 CREATED BY : The DSVBKs are DCed in module HCPDSV.
 DELETED BY : Never deleted
 RELOCATION CONSIDERATIONS : None
 
 
  DSVBK Control Block Content Top of page
 

 DSVBK DSECT Top of page
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 * Reserved for IBM use. 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/core capacity for all CPUs/cores associated with this DSVBK. An entire real CPU/core of capacity is represented as x'10000'. This is an unsigned value, as a CPU/core 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 DSVCBF Chargeback factor. Updated only by the single HCPMTCPL task in the system. Scaled by HisMT_Entry_kMetricFactor or by shifting the value using HisMT_Entry_kMetricShift 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. 00B8 184 Dbl-Word 8 DSVENTRS (40) DSVBK entries. DSVBK Trailer. Follows last of the entries. 01F8 504 Dbl-Word 8 DSVTRALR (0) 01F8 504 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 .... .1.. DSVRUGAL X'04' DSVRUGAL The uncleared global available lists need to be replenished. 1111 .1.. DSVHiPri DSVDSCAN+DSVRCGAL+DSVNOOWN+DSVSXS PM+DSVRUGAL DSVHiPri *cmt 01F9 505 Bitstring 1 * (3) Reserved for IBM use. 01FC 508 Signed 4 * Reserved for IBM use. 00000200 DSVBKLEN *-DSVBK 00000200 DSVEND * 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
 
 
  DSVBK Storage Layout Top of page
 
 
*** DSVBK - DiSpatch Vector BlocK
*
*     +------+------+------+------+---------------------------+
*   0 |//////|:HDFLG|:HDFRE|:HDWRK|         DSVNXTDV          |
*     +------+------+------+------+-------------+------+------+
*   8 |         DSVLOREJ          |  DSVUSERC   |:LSTEN|//////|
*     +---------------------------+-------------+------+------+
*  10 |                                                       |
*     =                       DSVLOCK                         =
*     |                                                       |
*     +-------------------------------------------------------+
*  40 |                       DSVASSOC                        |
*     +---------------------------+---------------------------+
*  48 |         DSVFTRMK          |         DSVGLIST          |
*     +---------------------------+---------------------------+
*  50 |         DSVTOPBK          |         DSVCAPAC          |
*     +---------------------------+---------------------------+
*  58 |         DSVRCAP           |         DSVTOPID          |
*     +---------------------------+---------------------------+
*  60 |         DSVNXTTO          |          DSVCBF           |
*     +---------------------------+---------------------------+
*  68 |                       DSVTIMWT                        |
*     +-------------------------------------------------------+
*  70 |                       DSVUNPRK                        |
*     +-------------------------------------------------------+
*  78 |                                                       |
*     =                       DSVCPARY                        =
*     |                                                       |
*     +-------------------------------------------------------+
*  B8 |                                                       |
*     =                       DSVENTRS                        =
*     |                                                       |
*     +------+--------------------+---------------------------+
* 1F8 |:HDWKB|////////////////////|///////////////////////////|
*     +------+--------------------+---------------------------+
* 200
*
*** DSVBK - DiSpatch Vector BlocK
 
*** Overlay for DSVENTRS in DSVBK
*
*     +--------------------+
*  B8 |     DSVVMDBK       | BB
*     +--------------------+
*
*** Overlay for DSVENTRS in DSVBK
 
*** Overlay for DSVVMDBK+2 in DSVBK
*
*                   +------+------+---------------------------+
*  B8 ...        BA |:FLAGS|:FPNT |         DSVPRIOR          |
*                   +------+------+---------------------------+
*  C0
*
*** Overlay for DSVVMDBK+2 in DSVBK
 
 
  DSVBK Cross Reference Top of page
 
 
Symbol         Dspl Value
-------------- ---- -----
DSVASSOC       0040
DSVBKLEN       01FC 00000200
DSVCAPAC       0054
DSVCBF         0064
DSVCPARY       0078
DSVDSCAN       01F8 80
DSVEND         01FC 00000200
DSVENTLN       00BC 00000008
DSVENTRS       00B8
DSVENTRY       00B8
DSVFLAGS       00BA
DSVFPNT        00BB
DSVFTRMK       0048
DSVGLIST       004C
DSVHiPri       01F8 F4
DSVHDFLG       0001
DSVHDFRE       0002
DSVHDLEN       0078 000000B8
DSVHDOFL       0001 80
DSVHDWKB       01F8
DSVHDWRK       0003
DSVHEADR       0000 00000000
DSVIMBAL       0001 10
DSVINUSE       00B8 80
DSVLEN         00BC 00000200
DSVLOCK        0010
DSVLOREJ       0008
DSVLSTEN       000E
DSVMAXUS       00BC 00000028
DSVNEWRK       0001 04
DSVNOOWN       01F8 20
DSVNOPTL       0001 08
DSVNOSTL       00BA 08
DSVNXTDV       0004
DSVNXTTO       0060
DSVOFLER       0001 02
DSVPRIOR       00BC
DSVRCAP        0058
DSVRCGAL       01F8 40
DSVRUGAL       01F8 04
DSVSHIFT       00BC 00000003
DSVSIZE        00BC 00000040
DSVSXSPM       01F8 10
DSVTIDLE       0001 40
DSVTIMWT       0068
DSVTOPBK       0050
DSVTOPID       005C
DSVTRALR       01F8
DSVUNPRK       0070
DSVUSERC       000C
DSVVMDBK       00B8
 
This information is based on z/VM 6.4.0 Last updated on 24 Aug 2016 at 09:24:24 EDT.
Copyright IBM Corporation, 1990, 2016