VPGBK - 32-bit CP - V4R4.0

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

#### VPGBK

Prolog

Control Block Contents
VPGBK DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### VPGBK Prolog

     NAME       : HCPVPGBK
     DESCRIPTION: VIRTUAL PAGE BLOCK
     DSECT      : VPGBK
     FUNCTION   : THE VPGBK IS USED TO MAP A PAGTE, PGSTE AND
                  ASATE FOR ONE VIRTUAL PAGE.
                  IT EXISTS SOLELY FOR ADDRESSABILITY.
                  THE ADDRESS OF A PAGTE IS USED AS A
                  VPGBK ADDRESS SO THAT THE CORRESPONDING PGSTE
                  AND ASATE CAN BE ACCESSED USING ONLY ONE
                  base register in the ESA/390 image of CP.
                  For ESAME, the VPGBK now spans more than 4096
                  bytes.  The PTEs and PGSTEs remain within 4K of
                  addressability but the ASATEs are no longer
                  reachable with a single base register pointing
                  to a PTE.
     LOCATED BY :
                  THE VPGBK IS NOT A FIXED BLOCK. ITS ADDRESS IS
                  THE SAME AS THE ADDRESS FOR ANY PAGTE.
     CREATED BY : A VPGBK IS USED FOR ADDRESSABILITY ONLY. IT IS
                  NOT CREATED OR DELETED.
     DELETED BY : SEE CREATED BY

#### VPGBK Control Block Content

#### VPGBK DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      VPGBK          VIRTUAL PAGE BLOCK
    0000    0 Signed       4 VPGPAG         PAGE TABLE ENTRY
    0004    4 Signed       4 VPGNEXT (0)    ADDRESS FOR NEXT VPGBK
    0004    4 Signed       4 * (255)
    0400 1024 Signed       4 VPGPGS         PAGE STATUS TABLE ENTRY
    0404 1028 Signed       4 * (255)
    0800 2048 Signed       4 VPGASA         AUXILIARY STORAGE ADDRESS ENTRY
    0804 2052 Signed       4 * (255)
    0C00 3072 Signed       2 *
    0C02 3074 Signed       2 VPGPAUX2       AUXILARY FIELD USED IF PTE >
                                            128
    0C04 3076 Signed       4 * (127)
    0E00 3584 Signed       2 VPGPAUX1       AUXILARY FIELD USED IF PTE <
                                            128
         MAPPING FOR A PAGTE
              00000000       VPGPAGTE       * VPGBK PAGE TABLE ENTRY
    0000    0 Signed       4 VPGPNTRY       HARDWARE PAGE TABLE ENTRY
    0000    0 Signed       2 VPGPLINK (0)   THIS FIELD IS USED TO POINT TO
                                            THE NEXT FREE PAGE TABLE ENTRY
                                            AVAILABLE IN THIS PGMBK (FOR NON
                                            PAGEABLE PGMBK FRAMES ONLY -
                                            NPGM) WHICH WERE PREVIOUSLY
                                            DEALLOCATED.
    0000    0 Bitstring    1 *              BITS 1-19 ARE ARCHITECTED AS THE
    0001    1 Bitstring    1 *              4K ALIGNED PAGE FRAME ADDRESS.
    0002    2 Bitstring    1 VPGPSTAT       BITS 0, 20, AND 23 MUST BE ZERO,
                                            BITS 21 AND 22 ARE DEFINED BELOW
              .... .1..      PAGINVAL       X'04' PAGE TABLE ENTRY IS INVALID
              .... ..1.      PAGPROT        X'02' PAGE PROTECTED (READ ONLY)
    0003    3 Bitstring    1 VPGPBYT3       THIS BYTE IS NOT ARCHITECTED AND
                                            IS AVAILABLE FOR SOFTWARE USE. IT
                                            IS RECOMMENDED THAT SOFTWARE
                                            REFRAIN FROM USING THIS BYTE
                                            UNLESS IT IS TO STORE THE GUEST
                                            STORAGE KEY.
         MAPPING FOR A PGSTE
              00000400       VPGPGSTE       * VPGBK PAGE STATUS ENTRY
    0400 1024 Signed       4 VPGSNTRY       VIRTUAL PAGE STATUS ENTRY
    0400 1024 Bitstring    3 VPGSVKCF       FIELD CONTAINING VPGSVKEY,VPGSRCP
                                            AND VPGSFLAG
    0403 1027 Bitstring    1 *              RESERVED FOR FUTURE IBM USE
    0400 1024 Bitstring    1 VPGSVKEY       GUEST STORAGE KEY BITS 0-4
              1111 ....      PGSVKACC       X'F0' Access-control key value
              .... 1...      PGSVKFET       X'08' Fetch-protection control
              1111 1...      PGSVKACF       PGSVKACC+PGSVKFET Acc-ctrl &
                                            fetch-prot bits
    0401 1025 Bitstring    1 VPGSRCP        ARCHITECTED AREA FOR RCP BYTE IF
                                            THE STORAGE KEY ASSIST IS BEING
                                            UTILIZED. (SEE THE PGSTE AND
                                            RCPTE CONTROL BLOCKS FOR FURTHER
                                            DETAILS)
              1... ....      RCPLOCK        X'80' RCP LOCK HELD
              .1.. ....      RCPHREF        X'40' HOST BACKUP REFERENCE BIT
              ..1. ....      RCPHCH         X'20' HOST BACKUP CHANGE BIT
              .11. ....      RCPHOST        RCPHREF+RCPHCH MASK FOR HOST BITS
              .... .1..      RCPGREF        X'04' GUEST BACKUP REFERENCE BIT
              .... ..1.      RCPGCH         X'02' GUEST BACKUP CHANGE BIT
              .... .11.      RCPGUEST       RCPGREF+RCPGCH MASK FOR GUEST
                                            BITS
    0402 1026 Bitstring    1 VPGSFLAG       VIRTUAL PAGE FLAGS
              1... ....      PGSINVAL       X'80' No auxiliary storage
                                            assigned Notes : PGSINVAL, in
                                            combination with other PTE,
                                            PGSTE, and storage key status
                                            bits, is used by steal processing
                                            to identify first time reference
                                            pages of zeros which have never
                                            been re-referenced or changed and
                                            can simply be discarded. The
                                            "first time reference page of
                                            zeros" state is identified by the
                                            following bit combination:
                                            noformat PTE: PAGINVAL=0 (page is
                                            valid and resident) PGSTE:
                                            PGSINVAL=1 (no DASD slot
                                            assigned) PGSRCPHR=0
                                            (unreferenced) PGSRCPHC=0
                                            (unchanged) Real frame storage
                                            key: Reference=0 (unreferenced)
                                            Change =0 (unchanged) enoformat
                                            Any resident page in this state
                                            is assumed to be unchanged zeros,
                                            and therefore simply discardable
                                            by steal. No page with non-zero
                                            contents should ever be allowed
                                            to be in this state, or a lost
                                            page will eventually result. The
                                            host change bit, PGSRCPHC, should
                                            be used to indicate that a page
                                            which is unchanged, not already
                                            on DASD, and non-zero, must be
                                            eventually written to DASD. *
                                            Note that both reference bits
                                            (PGSRCPHR and the real storage
                                            frame reference bit) can
                                            "evaporate" to zero over time due
                                            to the action of the reorder
                                            function. Therefore, the fact
                                            that a frame has been referenced,
                                            or setting PGSRCPHR on, can not
                                            prevent a page from eventually
                                            entering this "first time
                                            reference page of zeros" state.
              .1.. ....      PGSSHARE       X'40' PAGE IS A SHARED PAGE
              ..1. ....      PGS1READ       X'20' ASA MAY BE READ ONLY ONCE.
                                            USED FOR SHARED PAGES. AFTER THE
                                            FIRST READ, THIS SDF (SYSTEM DATA
                                            FILE) ASA IS TO BE IGNORED AND
                                            THE PAGE LEFT AS CHANGED. WHEN
                                            THE PAGE IS FIRST WRITTEN, IT
                                            WILL GO TO A PAGING SPACE ASA AND
                                            THIS FLAG WILL BE TURNED OFF.
                                            PGS1READ ON IMPLIES THAT PAGE IS
                                            READ ONLY FOR THE USER.
              ...1 ....      PGSALLOC       X'10' PAGE IN THE SYSTEM ADDRESS
                                            SPACE (OR A SYSTEM OWNED UTILITY
                                            ADDRESS SPACE) THAT IS ALLOCATED,
                                            OR A SHARED CP PAGE IN THE
                                            MONITOR DCSS THAT CP HAS
                                            TRANSLATED AND THAT HAS NOT YET
                                            BEEN RELEASED BY THE USER
                                            CONNECTED TO THE DCSS. WHEN THIS
                                            BIT IS ON: 1) THE PAGE IS NEVER
                                            PART OF A DASD BLOCK; 2) THE
                                            ASSOCIATED PGMBK IS NEVER PAGED
                                            OUT.
              .... 1...      PGSFIXED       X'08' STORAGE SLOT PERMANENTLY
                                            ASSIGNED
              .... .11.      PGSXSREP       X'06' MASK FOR THE TWO BITS OF
                                            THE XSTORE BLOCK NUMBER THAT ARE
                                            KEPT IN THE PGSTE INSTEAD OF THE
                                            PAGTE. (THE PAGTE ALWAYS CONTAINS
                                            THE TRUE INVALID AND PAGE PROTECT
                                            BITS.)
              .... ...1      PGSREADO       X'01' STORAGE SLOT (DASD) IS READ
                                            ONLY
    0403 1027 Bitstring    1 VPGSSTAT       VIRTUAL PAGE STATUS BITS
              1... ....      PGSALTPT       X'80' This PTE is part of an
                                            alternate PTE structure. Notes :
                                            PGSALTPT indicates that the PTE
                                            is part of an alternate PTE
                                            structure, either as an as yet
                                            unresolved invalid "target"
                                            alternate PTE imbedded in a
                                            user's address space, or as the
                                            "source" page alternate PTE owned
                                            by an NSS/DCSS STLBK. If PGSALTPT
                                            is set in a PTE which is imbedded
                                            in a user's address space and
                                            which is otherwise in the "never
                                            referenced page of zeros" state
                                            (the page is not valid in real
                                            storage or in xstore or on DASD,
                                            PAGINVAL=1, PGSXSTOR=0,
                                            PGSINVAL=1), then it is an
                                            unresolved "target" alternate
                                            PTE, and the source page is
                                            defined by the corresponding
                                            source alternate PTE residing at
                                            the same offset in the source
                                            alternate PGMBK pointed to by
                                            PGMALTPT. If PGSALTPT is set in a
                                            PTE which is owned by an STLBK,
                                            and which is either valid in real
                                            storage or resides in xstore or
                                            on DASD (any of: PAGINVAL=0, or
                                            PAGINVAL=1 and PGSXSTOR=1, or
                                            PAGINVAL=1 and PGSXSTOR=0 and
                                            PGSINVAL=0), then it is a source
                                            alternate PTE, from which the
                                            page contents may be logically
                                            copied to target alternate PTEs
                                            (which are then "unhooked" and
                                            have their PGSALTPT bit set off).
                                            The PGMALTPT field is not set in
                                            source alternate PGMBKs. Also, in
                                            source alternate PGMBKs, the
                                            PGSALTPT bit is only set for
                                            pages for which data was saved;
                                            if it is not set in a particular
                                            source PTE, then no data was
                                            saved for that page, and the page
                                            is logically in the "never
                                            referenced page of zeros" stage.
                                            Therefore, PGSALTPT in source
                                            PTEs can be used to determine if
                                            data was saved for that page.
              .1.. ....      PGSTRANS       X'40' PAGE IS SERIALIZED IN LONG
                                            TERM
              ...1 ....      PGSVMSLK       X'10' VIRTUAL MACHINE STORAGE
                                            LOCK MODE
              .... 1...      PGSXSTOR       X'08' PAGE IS IN XSTORE - THE
                                            BLOCK NUMBER IS IN THE PAGTE WITH
                                            BITS 21 & 22 REPLACED WITH THOSE
                                            BITS FROM THE PGSTE (PGSXSREP)
              .... .1..      PGSBLOCK       X'04' THIS PAGE IS ONE PAGE IN A
                                            BLOCK OF PAGES
              .... ..1.      PGSRABI        X'02' This page was read in as
                                            part of a block of pages. This
                                            bit can NOT be checked for PTRM
                                            pages, as it is redefined as
                                            PGSXSTMB in that case.
              .... ...1      PGSERROR       X'01' PAGE IS IN ERROR. A STORAGE
                                            ERROR WAS DETECTED IN THIS PAGE
                                            AND THE page could not be
                                            recovered. When this bit is set,
                                            VMDRSSFG.VMDRSSUE must be set in
                                            the VMDBK that owns the space.
    0403 1027 Bitstring    1 VPGMSTAT       VIRTUAL PAGE (PGMBK) STATUS BITS
              .... ..1.      PGSXSTMB       X'02' This page (a pageable
                                            PGMBK) itself supports pages in
                                            XSTORE. This bit is only used for
                                            PTRM pages that currently reside
                                            in XSTORE (PGSXSTOR must also be
                                            on if PGSXSTMB is on). Note that
                                            this bit is a redefinition of the
                                            PGSRABI bit, which is acceptable
                                            since pageable PGMBKs (PTRM
                                            pages) are never blocked. .* .*
         MAPPING FOR AN ASATE
              00000800       VPGASATE       * VPGBK AUX STORAGE ADDRESS
    0800 2048 Signed       4 VPGANTRY       AUXILIARY STORAGE ADDRESS
    0800 2048 Signed       2 VPGACNUM       AUXILIARY STORAGE CYLINDER NUMBER
    0802 2050 Bitstring    1 VPGAPNUM       AUXILIARY STORAGE PAGE NUMBER
    0803 2051 Bitstring    1 VPGAVOL        AUXILIARY STORAGE VOLUME CODE
         * BIT MASKS FOR PAGE SERIALIZATION
         DEFINE MULTIPLIERS TO SHIFT BITS INTO CORRECT BYTE:
              00000001       VPGBYTE3       1 MULTIPLIER FOR VPGSNTRY BYTE 3
              00000100       VPGBYTE2       (256*VPGBYTE3) MULTIPLIER FOR
                                            VPGSNTRY BYTE 2
              00010000       VPGBYTE1       (256*VPGBYTE2) MULTIPLIER FOR
                                            VPGSNTRY BYTE 1
              00000000       VPGBYTE0       (256*VPGBYTE1) MULTIPLIER FOR
                                            VPGSNTRY BYTE 0
         MASK FOR SETTING LONG TERM SERIALIZATION:
              00800040       VPGLON         ((PGSPCL*VPGBYTE1)+(PGSTRANS*VPGB
                                            YTE3))
         MASK FOR SETTING SHORT TERM SERIALIZATION:
              00800000       VPGSON         (PGSPCL*VPGBYTE1)
         MASK FOR SETTING 'PAGE IN ERROR':
              00800001       VPGEON         ((PGSPCL*VPGBYTE1)+(PGSERROR*VPGB
                                            YTE3))
         MASK FOR RESETTING PAGE SERIALIZATION BITS:
              007FFFBE       VPGFOFF        X'FFFFFFFF'-((PGSPCL*VPGBYTE1)+((
                                            PGSTRANS+PGSERROR)*VPGB YTE3))
         * *

#### VPGBK Storage Layout

    *** VPGBK - VIRTUAL PAGE BLOCK
    *
    *     +---------------------------+---------------------------+
    *   0 |          VPGPAG           |///////////////////////////|
    *     +---------------------------+///////////////////////////|
    *   8 |///////////////////////////////////////////////////////|
    *     =///////////////////////////////////////////////////////=
    *     |///////////////////////////////////////////////////////|
    *     +---------------------------+---------------------------+
    * 400 |          VPGPGS           |///////////////////////////|
    *     +---------------------------+///////////////////////////|
    * 408 |///////////////////////////////////////////////////////|
    *     =///////////////////////////////////////////////////////=
    *     |///////////////////////////////////////////////////////|
    *     +---------------------------+---------------------------+
    * 800 |          VPGASA           |///////////////////////////|
    *     +---------------------------+///////////////////////////|
    * 808 |///////////////////////////////////////////////////////|
    *     =///////////////////////////////////////////////////////=
    *     |///////////////////////////////////////////////////////|
    *     +-------------+-------------+---------------------------+
    * C00 |/////////////|  VPGPAUX2   |///////////////////////////|
    *     +-------------+-------------+///////////////////////////|
    * C08 |///////////////////////////////////////////////////////|
    *     =///////////////////////////////////////////////////////=
    *     |///////////////////////////////////////////////////////|
    *     +-------------+-----------------------------------------+
    * E00 |  VPGPAUX1   | E02
    *     +-------------+
    *
    *** VPGBK - VIRTUAL PAGE BLOCK

    *** Overlay for VPGPAG in VPGBK
    *
    *     +---------------------------+
    *   0 |         VPGPNTRY          | 4
    *     +---------------------------+
    *
    *** Overlay for VPGPAG in VPGBK

    *** Overlay for VPGPNTRY in VPGBK
    *
    *     +------+------+------+------+
    *   0 |//////|//////|:PSTAT|:PBYT3| 4
    *     +------+------+------+------+
    *
    *** Overlay for VPGPNTRY in VPGBK

    *** Overlay for VPGPGS in VPGBK
    *
    *     +---------------------------+
    * 400 |         VPGSNTRY          | 404
    *     +---------------------------+
    *
    *** Overlay for VPGPGS in VPGBK

    *** Overlay for VPGSNTRY in VPGBK
    *
    *     +--------------------+------+
    * 400 |     VPGSVKCF       |//////| 404
    *     +--------------------+------+
    *
    *** Overlay for VPGSNTRY in VPGBK

    *** Overlay for VPGSNTRY in VPGBK
    *
    *     +------+------+------+------+
    * 400 |:SVKEY|:SRCP |:SFLAG|:SSTAT| 404
    *     +------+------+------+------+
    *
    *** Overlay for VPGSNTRY in VPGBK

    *** Overlay for VPGSSTAT in VPGBK
    *
    *                          +------+
    * 400 ...              403 |:MSTAT| 404
    *                          +------+
    *
    *** Overlay for VPGSSTAT in VPGBK

    *** Overlay for VPGASA in VPGBK
    *
    *     +---------------------------+
    * 800 |         VPGANTRY          | 804
    *     +---------------------------+
    *
    *** Overlay for VPGASA in VPGBK

    *** Overlay for VPGANTRY in VPGBK
    *
    *     +-------------+------+------+
    * 800 |  VPGACNUM   |:APNUM|:AVOL | 804
    *     +-------------+------+------+
    *
    *** Overlay for VPGANTRY in VPGBK

#### VPGBK Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    PAGINVAL       0002 04
    PAGPROT        0002 02
    PGSALLOC       0402 10
    PGSALTPT       0403 80
    PGSBLOCK       0403 04
    PGSERROR       0403 01
    PGSFIXED       0402 08
    PGSINVAL       0402 80
    PGSRABI        0403 02
    PGSREADO       0402 01
    PGSSHARE       0402 40
    PGSTRANS       0403 40
    PGSVKACC       0400 F0
    PGSVKACF       0400 F8
    PGSVKFET       0400 08
    PGSVMSLK       0403 10
    PGSXSREP       0402 06
    PGSXSTMB       0403 02
    PGSXSTOR       0403 08
    PGS1READ       0402 20
    RCPGCH         0401 02
    RCPGREF        0401 04
    RCPGUEST       0401 06
    RCPHCH         0401 20
    RCPHOST        0401 60
    RCPHREF        0401 40
    RCPLOCK        0401 80
    VPGACNUM       0800
    VPGANTRY       0800
    VPGAPNUM       0802
    VPGASA         0800
    VPGASATE       0403 00000800
    VPGAVOL        0803
    VPGBYTE0       0803 00000000
    VPGBYTE1       0803 00010000
    VPGBYTE2       0803 00000100
    VPGBYTE3       0803 00000001
    VPGEON         0803 00800001
    VPGFOFF        0803 007FFFBE
    VPGLON         0803 00800040
    VPGMSTAT       0403
    VPGNEXT        0004
    VPGPAG         0000
    VPGPAGTE       0E00 00000000
    VPGPAUX1       0E00
    VPGPAUX2       0C02
    VPGPBYT3       0003
    VPGPGS         0400
    VPGPGSTE       0003 00000400
    VPGPLINK       0000
    VPGPNTRY       0000
    VPGPSTAT       0002
    VPGSFLAG       0402
    VPGSNTRY       0400
    VPGSON         0803 00800000
    VPGSRCP        0401
    VPGSSTAT       0403
    VPGSVKCF       0400
    VPGSVKEY       0400

This information is based on z/VM V4R4.0. Last updated on 29 Jul 2003 at 16:35:26 EDT.
Copyright IBM Corporation, 1990, 2003