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

#### FRMTE

Prolog

Control Block Contents
FRMTE DSECT

Storage Layout

Cross Reference (Contains links to field and bit definitions)

#### FRMTE Prolog

     NAME       : HCPFRMTE
     DESCRIPTION: FRAME TABLE ENTRY
     DSECT      : FRMTE
     FUNCTION   : A FRAME TABLE ENTRY DESCRIBES ONE 4K ALIGNED
                  BLOCK OF REAL STORAGE.
     LOCATED BY : 64-bit address
                  PFXFTBLG + (Host Real address of frame / 4096 * 32)
                  VMDGFR1ST User owned frame forward anchor
                  VMDGFRLST User owned frame backward anchor
                  FRMFPNTG  Field of HCPFRMTE for chained frames
                  FRMBPNTG  Field of HCPFRMTE for chained frames
                  FRMFRNXTG Free storage FRMTE forward pointer
                  SUBGANCH  SUBBK FRMTE list anchor
                  PF2FTOFTE host real address of FRMTE describing
                  frame used for first page of Frame Table.
                  PF2STOFTE host real address of FRMTE describing
                  frame used for first page of SXS page
                  management table.
                  FRMTENXT  host real address of FRMTE describing
                  next frame used for frame table or
                  SXS page management table.
                  Used for PF2FTOFTE and PF2STOFTE chains.
     CREATED BY : HCPISV    Entries allocated and initialize at ipl
                  from storage below the 8E line in the
                  System Execution Address Space.
     DELETED BY : NONE
     NOTES      : THE FRMTES ARE CONTAINED IN THE FRAME TABLE.
                  Space for the frame table is allocated at system
                  initialization.
                  THE SPACE FOR THE FRAME TABLE IS NEVER RELEASED.
                  The frame table is contiguous in the System Execution
                  Space (SXS), but NOT in real storage. Algorithms that
                  convert between FRMTE address and real frame address
                  must use the SXS address of the FRMTE.
     Serialized :
       There are rules that dictate the order in which
       serialization can be obtained on PTEs, FRMTEs, and
       SXSTEs.  See HCPPGSER MACRO for more information.
       The following serialization discussion generally applies
       to FRMTEs with pageable FRMCSB0 frame codes (that is,
       frames where the FRMUSER x'80' bit is on in FRMCSB7G).
       Such FRMTEs are referred to as "pageable FRMTEs" in this
       discussion.  Note that this includes most available frames
       (frames which have the FRMAVAIL bit set in FRMCSB7G,
       whether they are actually on the global available list,
       one of the processor local available lists, or in some
       other "in transit" state), since the previous use frame
       codes are not changed while a frame is available.
       Pageable FRMTEs are serialized primarily by the four FRMTE
       serialization bits:  FRMAVAIL, FRMTRANS, FRMRELSE, and
       FRMSTEAL, all in FRMSTATEG FRMCSB7G.  These four bits are
       essentially mutually exclusive spin locks.  Under normal
       circumstances, they may be turned on *ONLY* one at a time
       and *ONLY* by a word concurrent interlocked instruction
       such as CS or CDS.  That is, only *ONE* of the four bits
       is allowed to be on at any given time.  If any one of the
       four serialization bits is on, none of the other three
       serialization bits may be turned on until it goes off, and
       no changes to the rest of the FRMTE are allowed by any
       task other than the one that currently "owns" the FRMTE
       (that is, the task that turned the current serialization
       bit on).
       Note while the four FRMTE serialization bits are somewhat
       similar to normal spin locks, they are unique in that the
       usual "no loss of control while a spin lock is held" rule
       does *NOT* necessarily apply.  The reason for this
       exception is that FRMTEs may need to be left in these
       serialized states for long periods of time, so spin loops
       attempting to obtain pageable FRMTE serialization must
       only spin if the current state is known to be a "short
       term" state, and must take into consideration possible
       status changes in the remainder of FRMSTATEG (and possibly
       FRMPTEG as well).
       Generally, only word concurrent interlocked instructions
       should be used to manipulate pageable FRMTEs' FRMCSB7G.
       However, for performance reasons, there are special cases
       where a task which currently holds exclusive ownership of
       a FRMTE (by having turned one of the FRMCSB7G serialization
       bits on via CS or CDS) may release FRMTE serialization
       using a non-interlocked byte concurrent instruction, such
       as ST or NI.  This technique is *ABSOLUTELY* dependent on
       mutual exclusivity of the four FRMCSB7G serialization bits,
       and use of word concurrent interlocked instructions in
       setting them on.
       A FRMCSB7G serialization bit may *ONLY* be turned off
       (regardless whether the instruction used is interlocked or
       not) if it is known without any doubt to be on and held by
       the running task.  Turning an FRMCSB7G serialization bit
       which is already zero off *again* with a non-interlocked
       instruction such as NI "just in case" or to combine code
       paths is a dangerous exposure to lost FRMCSB7G updates.
       Occasionally, FRMTEs which are not on any queue or
       associated with any active PTE are said to be under "task
       local" serialization.  In this case, the assumption is
       that no other task can get the address of the FRMTE, since
       no other control structures point to it.  However, it must
       *ALWAYS* be kept in mind that the frame table scan
       function in HCPALF can find *ANY* FRMTE, regardless of
       state, since it processes the entire frame table
       sequentially, looking for pageable FRMTEs which are in a
       "stealable" state.  Therefore, this "task local"
       serialization technique is only valid for non-pageable
       FRMTEs, where FRMCSB7G FRMUSER (x'80') is off.
       Also, it should be kept in mind that frame table scan
       approaches frame and page serialization backwards from
       most other code, in that it attempts to get the lowest
       level serialization first by (conditionally) obtaining
       FRMSTEAL, and working up (again, conditionally) from
       there.  Therefore, frame table scan must obtain all
       serialization conditionally, and be able to release all
       held serialization and abandon the current FRMTE, if any
       serialization conflict is encountered.  Otherwise,
       deadlocks with tasks obtain serialization in the normal
       "top down" fashion will result.
       This discussion not meant to be an exhaustive definition
       of FRMTE serialization.  There are special circumstances
       such as system initialization where these rules do not
       apply, and other non-pageable frame code types have their
       own serialization mechanisms depending on usage.  There
       are also some special pageable frame code types (such as
       MDC related FRMTEs and pageable page table FRMTEs) which
       are bound by these rules but have additional special
       serialization mechanisms as well.
       There may well be places in the existing code which do not
       abide by these rules and are not yet known to have caused
       any problems, but any such instances should be thoroughly
       investigated.  Any code that violates the FRMCSB7G
       serialization bit mutual exclusivity rule for pageable
       FRMTEs while the system is in a normal running state is
       very likely in error, though, and should be addressed as
       soon as possible.
       The reason for all of this paranoia is that FRMTE
       serialization problems (such as lost FRMCSB7G updates) are
       notoriously difficult to debug.  FRMTE serialization
       errors usually lead to unpredictable (but invariably bad)
       results which typically do not cause external symptoms
       immediately.  By the time external symptoms arise, most
       in-storage evidence of the root cause has usually been
       overwritten.  Known typical symptoms of FRMTE
       serialization errors include various loops and hangs,
       and MCW002 ABENDs, but other symptoms are quite possible.

#### FRMTE Control Block Content

#### FRMTE DSECT

    Hex   Dec Type/Val   Lng Label (dup)    Comments
    ---- ---- --------- ---- -------------- --------
    0000    0 Structure      FRMTE          FRAME TABLE ENTRY
    0000    0 Dbl-Word     8 FRMGORGIN (0)  Frame Table Entry Origin
    0000    0 Address      8 FRMFPNTG       64-bit host logical address FRMTE
                                            forward pointer
    0008    8 Address      8 FRMBPNTG       64-bit host logical address FRMTE
                                            backward pointer
    0010   16 Address      8 FRMPTEG        64-bit host real address pointer
                                            to corresponding Page Table Entry
                                            when FRMCSB0 contains a pageable
                                            type frame code. PTE address is
                                            the same as the VPG64 address for
                                            the 4K block of virtual storage.
                                            The VPG64 is a more convenient
                                            mapping. FRMPTEG must be zeroed
                                            whenever a FRMTE is put on the
                                            global or local available list.
                                            When FRMSXS is on and FRMCSB0
                                            does not contain a pageable type
                                            frame code, this field is
                                            redefined as FRMSXSTE, the 64-bit
                                            host logical address of the
                                            corresponding SXSTE. See FRMSXSTE
                                            redefinition of FRMPTEG.
    0018   24 Signed       8 FRMSTATEG      Frame status bits and flags. All
                                            bits are contained in a double
                                            word such that Compare & Swap-CSG
                                            can be used to serialize frame
                                            state changes.
          See the serialization section of this part prologue for a
          detailed discussion of FRMTE serialization rules.
          WARNING: Do *NOT* change any FRMTE serialization code
                   without first *THOROUGHLY* understanding the
                   FRMTE serialization rules
              00000020       FRMLENTH       *-FRMTE Length of frame table
                                            entry
    0020   32 Dbl-Word     8 FRMNEXTG (0)   Next sequential entry
    0000    0 Signed       4 FRMFPNT0       High half of forward pointer
    0004    4 Signed       4 FRMFPNT1       Low half of forward pointer
    0008    8 Signed       4 FRMBPNT0       High half of backward pointer
    000C   12 Signed       4 FRMBPNT1       Low half of backward pointer
          FRMBPNT1 is set by HCPHTTFF (front end of fast path
          page fault processor) to indicate to HCPPLPPL (back
          end of fastpath page processor) what type of page
          fault occurred.  For a page fault satisfied by PGIN
          of an XSTORE block from a non-alternate PGMBK, the
          XSTORE block number is stored in FRMBPNT1.  If the
          value in FRMBPNT1 is greater than X'FFFFFFFC', no
          XSTORE block was involved and FRMBFLAG will indicate
          the type of page fault that took place.
    000C   12 Bitstring    1 * (3)          High 3 bytes of block number
    000F   15 Bitstring    1 FRMBFLAG       Fast path status flag
              1111 11.1      FRMALTMV       X'FD' Page in frame was moved
                                            from a page found in an alternate
                                            PGMBK
              1111 111.      FRMALTPG       X'FE' Page in frame was PGIN'd
                                            from an XSTORE block found in an
                                            alternate PGMBK
              1111 1111      FRMFTPF        X'FF' Page in frame was cleared
                                            to satisfy a first time page
                                            fault
                  These bits are static frame flag bits
          Redefinition for Minidisk Cache (FTC).
    0000    0 Address      8 *              Not redefined for MDC, original
                                            field name, FRMFPNTG, used
    0008    8 Signed       4 *              Skip high half of FRMBPNTG
    000C   12 Signed       2 FRMTCSTE       Offset within MDC segment table
                                            to the STE that this segment
                                            represents (Page table pages
                                            only)
    000E   14 Bitstring    1 FRMPSCT        Count of free PTE sets. Used in
                                            garbage collection only. (Page
                                            table pages only and must be
                                            initialized to 0)
    000F   15 Bitstring    1 FRMASSEL       Address space selector bits
              11.. ....      TCHASPAC       X'C0' These bits identify the
                                            address space used for caching
                                            Note: TCMALMSK and TCMALSHF
                                            depend on these bits
              ..11 1111      TCHIXMSK       X'3F' Bits to hold DPSBK index
                                            See also TCMIXMSK.
    0010   16 Address      8 FRMSTOG (0)    STO for this address space
                                            (Segment table pages only)
    0010   16 Signed       4 *              Reserved for FRMSTOG high half
    0014   20 Address      4 FRMSTO         31-bit STO for this address space
    0018   24 Address      8 *              May not be redefined for use in
                                            any way by MDC. Original field
                                            name, FRMSTATEG, and
                                            subdefinitions are used.
    0010   16 Signed       4 *              High half skipped
    0014   20 Signed       2 FRMPS1ST       First PTE set queued on frame for
                                            MDC garbage collection. (Page
                                            table pages only. Must be
                                            initialized to 0 when frame is
                                            allocated as a page table.)
    0016   22 Signed       2 FRMPSLST       Last PTE set queued on frame for
                                            MDC garbage collection. (Page
                                            table pages only. Must be
                                            initialized to 0 when frame is
                                            allocated as a page table.)
    0010   16 Signed       4 *              High half skipped
    0014   20 Signed       4 FRMDCKEY       MDC hash key here for MDC frames
          End of redefinition for Minidisk Cache (FTC).
          Frame state word 0 contains the System Execution Space Page
          Number (bits 1:19) for a pageable type frame code if FRMSXS
          is also on.  FRMSXS on in a pageable type frame code FRMTE
          indicates that the pageable page is also "aliased" into the
          System Execution Space.  The SXPN allows code to locate the
          corresponding SXSTE (System Execution Space Management Table
          Entry, the structure by which System Execution Space Pages
          are managed) by ANDing off unrelated bits, then converting
          the resulting System Execution Space Page address to a SXSTE
          address using the SXSAE macro.
    0018   24 Signed       4 FRMSTAW0 (0)   Frame state word 0
    0018   24 Bitstring    3 FRMSXPN        System Execution Space Page
                                            Number (bits 1:19), when frame
                                            code is pageable and FRMSXS is on
                                            indicating the pageable page is
                                            aliased into the System Execution
                                            Space.
              00FFF000       FRMSXPNM       X'7FFFF000' Mask for isolating
                                            the System Execution Page Address
                                            from the SXPN.
              00007FFF       FRMSXPNMH      X'7FFF' Mask for isolating the
                                            System Execution Page Address
                                            from the SXPN (high half).
              0000F000       FRMSXPNML      X'F000' Mask for isolating the
                                            System Execution Page Address
                                            from the SXPN (low half).
    001B   27 Bitstring    1 *              Reserved for IBM use
          The codes that include the x'80' (FRMUSER) bit in their
          definition indicate that the frame contains a pageable
          page.  For most such frame codes, it means the page is
          represented by (more or less) standard pageable address
          space structures.  Exceptions include the pageable PGMBK
          frame codes FRMPPGM (x'D1') and FRMPPGM2 (x'D5'), which
          are somewhat similar to normal address spaces, but with
          notable exceptions (such as each "page" really being an
          8K pageable PGMBK requiring two frames), and also MDC
          data page frame code FRMFTADD (x'88'), which aren't really
          "pageable" per se, but are more properly described as
          "discardable" or "reclaimable" and are represented by
          completely different special case MDC structures.
          The codes that include the x'01' in their definition
          are a function of the FRMCP bit and are considered
          to be CP frames.  Only frames with FRMCP bit on are
          included in a CP dump.  An exception is VDISK frames,
          identified by frame code x'C3' (FRMSUTIL + x'40'),
          which are CP System Utility address space frames, and
          are CP owned and managed, but contain user data, and
          are therefore *NOT* included in CP dumps.
          The codes that include the X'02' in their definition
          are a function of the FRMDS bit and are considered
          to be data space frames. FRMDS bit is only allowed to
          be used to combine with FRMUSER or FRMSUSER and FRMCP
          to form FRMDTSP or FRMSUTIL.
          FRMPPGM is identified by the X'80' bit as pageable.
          FRMNPGM and FRMPPGM are associated with each other by
          the X'50' bits.
          Free storage frames are associated with each other by
          the X'60' bits.
          Notes      : Any new frame code that contains the X'61' bits
          must be a type of free storage frame.  There are
          places in the system that check for the X'61' bits to
          determine whether or not a frame is a free storage frames.
          All Mini-Disk Cache frame codes have the X'08' bit
          set (Notes      : other frames codes that are not MDC may
          also use the x'08' bit).  FRMFTADD is identified as
          pageable (more properly discardable/reclaimable by the
          X'80' bit.
          The code X'FF' is never a valid frame usage code in
          FRMCSB0.  FRMNEVER is available to test whether a
          value is a frame usage code or not.  For example,
          whether a parameter passed in SAVER2B3 is a frame
          usage code or not.
          When a frame is associated with a page in the System
          Execution Space (SXS), the frame use code in FRMCSB4G will
          match the page use code in SXSCSB4G of the SXSTE. All codes
          and bits should be kept in sync between FRMTE and SXSTE.
    001C   28 Signed       4 FRMCSWRD (0)   Cover for the 4 state bytes
              ...1 11..      FRMCSB0        FRMCSB4G
    001C   28 Bitstring    1 FRMCSB4G       Compare and swap dword byte 4.
                                            CSG not necessarily required to
                                            alter these bits.
              00000001       FRMCP          X'01' FRAME IN USE BY CONTROL
                                            PROGRAM
              00000021       FRMTRACE       X'21' CP TRACE TABLE FRAME
              00000061       FRMFSTG        X'61' Frame used for logical free
                                            stg. Refer to FRMSXSTE to find
                                            the SXSTE that describes the
                                            page.
              00000080       FRMUSER        X'80' FRAME USED AS USER PAGE
              00000081       FRMSUSER       X'81' IN USE AS SYSTEM VIRTUAL
                                            PAGE
              000001FD       FREMX          509 Maximum number of
                                            double-words that can be obtained
                                            without requiring full-page
                                            request. This value should be the
                                            same as that calculated and
                                            stored in HCPFREMX.
              00000FE8       FREMXB         FREMX*8 Maximum number of bytes
                                            that can be obtained without
                                            requiring full-page request.
              00000005       FRMNOTI        X'05' Frame is not initialized.
                                            TB/SSKE/ISKE has not been issued
                                            against this frame.
              00000009       FRMFTTBL       X'09' Frame used for MDC segment
                                            or page table.
              0000000D       FRMMDCHT       X'0D' Frame used for MDC hash
                                            table.
              00000010       FRMOFFLN       X'10' Frame is offline and
                                            unavailable
              00000011       FRMSXSTB       X'11' SXS page mgt table frame
              00000031       FRMPRFX        X'31' Prefix page frame
              00000040       FRMVR          X'40' V=F user frame
              00000041       FRMFRMTB       X'41' Frame table frame
              00000051       FRMNPGM        X'51' Frame is a non-pageable
                                            pgmbk
              00000051       FRMNPGM1       FRMNPGM First frame of a
                                            non-pageable PGMBK
              00000055       FRMNPGM2       X'55' Second frame of a
                                            non-pageable PGMBK Refer to
                                            FRMSXSTE to identify the SXSTE
                                            that describes the page.
              00000069       FRMAFR         X'69' Frame for absolute aligned
                                            free control block free storage
              00000082       FRMDTSP        X'82' Frame used for a user's
                                            data space page
              00000083       FRMSUTIL       X'83' Frame used for CP utility
                                            address space page
              00000088       FRMFTADD       X'88' Frame is part of the MDC
                                            address space. It contains user
                                            data.
              000000C3       FRMSVDSK       X'C3' Frame used for VDISK System
                                            Utility address space page
              000000D1       FRMPPGM        X'D1' Frame is a pageable PGMBK
              000000D1       FRMPPGM1       FRMPPGM First frame of a pageable
                                            PGMBK
              000000D5       FRMPPGM2       X'D5' Second frame of a pageable
                                            PGMBK
              0000007D       FRMPDISO       X'7D' Isolate FRMUSER and FRMDTSP
                                            fields of FRMCSB4G. This is done
                                            to allow code to test, for either
                                            FRMUSER *or* FRMDTSP being on
                                            with one instruction.
              000000FF       FRMNEVER       X'FF' Equate to reserve a value
                                            which will never be a valid frame
                                            usage code.
          These codes are primarily static frame use codes.
          Some codes are defined in HCPEQUAT (those which have their
          definitions commented out here).
          The following frames can be stolen by the steal task:
              FRMUSER  - Both private and shared frames
              FRMDTSP  - Data space frames (private and shared)
              FRMSUSER - System user frames
              FRMSVDSK - Vdisk space frames (system owned)
              FRMSUTIL - System utility frames
              FRMPPGM  - Pageable PGMBK blocks
              FRMPPGM1 - Pageable PGMBK blocks (1st page)
              FRMPPGM2 - Pageable PGMBK blocks (2nd page)
          The following frames can be stolen by the Mini-Disk-Cache
          (MDC) steal task:
              FRMFTADD - Mini-Disk Cache address space pages.
          All the rest cannot be stolen.
    001D   29 Bitstring    1 FRMCSB5G       Compare and swap dword byte 5
                                            Compare and swap not necessarily
                                            required to alter these bits.
              ...1 11.1      FRMCSB1        FRMCSB5G
          These bits are primarily static frame flag bits
              ..1. ....      FRMOWNED       X'20' Frame is on a user owned
                                            list
              ...1 ....      FRMSHARE       X'10' Frame is shared storage
                                            frame
              .... 1...      FRMRONLY       X'08' Frame is a read only frame
                                            (e.g., the frame is being used to
                                            back a read only page, PAGGPROT
                                            should be set in the associated
                                            PTE pointed to by FRMPTEG)
              .... .1..      FRMSXS         X'04' Frame is in SXS and managed
                                            via SXS page management table. If
                                            on for a pageable type frame code
                                            FRMTE, the pageable page is
                                            aliased into the System Execution
                                            Space. If on for a non-pageable
                                            type frame code FRMTE, the frame
                                            is backing an normal allocated
                                            System Execution Space page (such
                                            as free storage, for example)
              .... ..1.      FRMONQUE       X'02' Frame is currently on a
                                            queue or list. Check the frame
                                            code to determine what queue
                                            frame is on. FRMAFR - The
                                            absolute aligned free storage
                                            queue. FRMPPGM - The deferred
                                            PGMBK paging list or the paged
                                            PGMBK aging list FRMNPGM - The
                                            list of FRMTEs containing
                                            previously deallocated PTRM PTEs
                                            below current pointer.
              .... ...1      FRMERROR       X'01' Frame is in error (storage
                                            check)
    001E   30 Bitstring    1 FRMCSB6G       Compare and swap dword byte 6
                                            Compare and swap not necessarily
                                            required to alter these bits.
              ...1 111.      FRMCSB2        FRMCSB6G
          These bits denote dynamic frame states
              1... ....      FRMFXASA       X'80' Indicates PTE associated
                                            with this FRMTE has a fixed ASA.
                                            This flag is used by slot alloc
                                            (HCPPGT) to keep track of which
                                            FRMTEs need ASAs.
              .1.. ....      FRMNOOWN       X'40' Frame is no-owned.
              ..1. ....      FRMRFRSH       X'20' Frame data is invalid. The
                                            frame must be refreshed before
                                            being used.
              .... ...1      FRMLAVL        X'01' Frame resides on local
                                            available list. This bit can only
                                            be on for frames marked as
                                            available (FRMAVAIL bit is on.)
                                            Frames reside on the global
                                            available list when FRMAVAIL is
                                            on and FRMLAVL is off.
          FRMCSB7G FRMTE serialization byte.  Contains the four
          mutually exclusive FRMTE serialization bits.
          See the serialization section of this part prologue for a
          detailed discussion of FRMTE serialization rules.
          WARNING: Do *NOT* change any FRMTE serialization code
                   without first *THOROUGHLY* understanding the
                   FRMTE serialization rules!!!!!!!!!!!!!!!!!!!
    001F   31 Bitstring    1 FRMCSB7G       Compare and swap dword byte 7
              ...1 1111      FRMCSB3        FRMCSB7G
          These bits are used to serialize frame state changes
              1... ....      FRMAVAIL       X'80' Frame is on the global
                                            available list, local available
                                            list, or the processor-local
                                            processed list. FRMPTEG must be
                                            cleared and FRMAVAIL must be set
                                            to one when a frame is on the
                                            global available list. FRMPTEG
                                            must be cleared plus FRMAVAIL,
                                            FRMLAVAL, and FRMUSER must be set
                                            to one when a frame is on the
                                            local available list. FRMPTEG
                                            must be non-zero plus FRMAVAIL,
                                            FRMLAVL, and FRMUSER must be set
                                            to one when a frame is on the
                                            processor local processed list.
              .1.. ....      FRMTRANS       X'40' Frame is being translated
              ..1. ....      FRMRELSE       X'20' Frame is being released
              ...1 ....      FRMSTEAL       X'10' Frame is being stolen Note:
                                            This state (FRMSTEAL) is
                                            sometimes used in situations
                                            where it is not feasible to use
                                            the locked/pinned frame
                                            interface. An example is HCPPAF
                                            saving pages on behalf of a guest
                                            request. END OF DEFINITION FOR
                                            FRAME TABLE ENTRIES
          Redefinition for frames that are not chained.
    0000    0 Signed       4 *              Reserved for IBM use
    0004    4 Signed       4 FRMID          4 character identifier
                                            Identifiers used in FRMID There
                                            identifiers are for visual
                                            recognition and are not intended
                                            to be used as flags. '*CP*' Frame
                                            in use by control program 'TRAC'
                                            CP trace table page 'FREE' Frame
                                            in use for free storage Refer to
                                            FRMSXSTE to identify the SXSTE
                                            that describes the page. 'AFR '
                                            Aligned absolute free storage
                                            'SXSA' SXS Page on available
                                            backed Q '*VF*' Virtual = Fixed
                                            user frame 'OFLN' Frame is
                                            offline and unavailable 'PRFX'
                                            Prefix page frame ' ' Locked user
                                            frame 'PPGM' Pageable PGMBK
                                            'NPGM' Non-pageable PGMBK 'FTBL'
                                            FTC segment or page table frame
                                            '*RFT' Host Region First Table
                                            frame '*RST' Host Region Second
                                            Table frame '*RTT' Host Region
                                            Third Table frame '*SEG' Host
                                            Segment Table frame 'XDAT' SXS
                                            DAT table frame
                                     Note that FRMCSB4G still == FRMCP
                                     for FRMTEs marked with *RTF,
                                     *RTS, *RTT, *SEG, FRMT, SXST,
                                     and XDAT eyecatchers.
    0008    8 Signed       4 *              Reserved for IBM use
    000C   12 Signed       4 *              Reserved for IBM use
    0010   16 Address      8 *              Reserved for IBM use
    0018   24 Signed       8 *              FRMSTATEG (flags and status bits)
          Redefinition for absolute aligned free storage frames
    0000    0 Address      8 FRMFRNXTG      Next FRMTE with available blocks
    0008    8 Signed       4 *              Reserved for IBM use
    000C   12 Signed       2 FRMVMFRG       Fragment size
    000E   14 Signed       2 FRMDWUSE       Doublewords of storage in use
    0010   16 Address      8 FRMCHNG        Pointer to first free storage
                                            available block in this frame for
                                            real aligned free storage frames.
    0010   16 Signed       4 *              Reserved for IBM use
    0014   20 Address      4 FRMCHN         The FRMCHN field is used when
                                            contiguous frames are allocated
                                            and released by HCPPTEMF and
                                            HCPPTECR respectively. When used
                                            for this reason, FRMCHN will
                                            contain a number indicating the
                                            total number of contiguous frames
                                            in a contiguous set (from lowest
                                            to highest FRMTE address.) An
                                            allocated single frame may have a
                                            FRMCHN value of zero (indicating
                                            it was allocated via HCPPTFGF) or
                                            one (indicating it was allocated
                                            via HCPPTEMF).
                                     Also, bytes 0 and 1 of this field
                                     contain the offset of the 1st
                                     free page table entry available
                                     in this frame (for non-
                                     pageable PGMBK frames only - NPGM)
                                     which were previously deallocated.
    0018   24 Signed       8 *              FRMSTATEG (flags and status bits)
          Redefinition for host DAT (region/segment) table frames
          This redefinition does not apply to System Execution Space
          (SXS) DAT tables with FRMID='XDAT'.
    0000    0 Signed       4 *              Reserved for IBM use
    0004    4 Signed       4 *              FRMID: eyecatcher, see FRMID
                                            definition above
    0008    8 Address      8 FRMHDPBKG      Pointer to Host DAT table
                                            Programming area block for the
                                            DAT table associated with this
                                            frame. Filled in for each FRMTE
                                            for multi-frame DAT tables.
    0010   16 Address      8 *              FRMCHNG: for multi-frame host DAT
                                            tables, contains the number of
                                            contiguous frames starting at and
                                            including this frame, by
                                            ascending address
    0018   24 Signed       8 *              FRMSTATEG: as above
          Redefinition for non-pageable frame code types for frames
          used to back normal allocated System Execution Space pages
          (not alias SX pages of resident pageable pages).  These
          frames are mapped into the SXS and described by the System
          Execution Space Page Management Tables.
          This redefinition only applies when:
            FRMSXS   = 1
            FRMCSB0  = (any non-pageable frame code)
    0010   16 Address      8 FRMSXSTE       Address of the SXSTE that
                                            describes the SXS page that this
                                            frame is associated with in the
                                            SXS DAT tables.
          Redefinition for frame table and SXS page mgt table frames.
          This redefinition only applies when:
            FRMCSB0  = x'11' (FRMSXSTB) or x'41' (FRMFRMTB)
          This redefinition applies to frames used for both SXSTB and
          FRMTB, however the FRMTENXT chains are different for each.
          See PF2FTOFTE and PF2STOFTE chain anchors. These chains are
          used in dump processing.
          These FRMTEs are initialized during system initialization
          and remain unchanged for the life of the system.
    0000    0 Bitstring    1 *              Reserved for FRMDUMP
    0001    1 Bitstring    1 *              Reserved for IBM use.
    0002    2 Bitstring    2 *              Reserved for expansion of
                                            FRMPGNUM size.
    0004    4 Signed       4 FRMPGNUM       Page index into table in the SXS
                                            address order. Calculated by
                                            subtracting the table origin
                                            (PFXFTBLG or PFXSTBLG), then
                                            dropping low order 12 bits from
                                            this calculated offset and then
                                            taking the low order 4 bytes. The
                                            maximum value supported is
                                            sufficient for a 16T frame table
                                            which would map 2P of storage.
                                            This value is used by VM Dump
                                            Tool to identify the record
                                            within the dump that contains the
                                            content of this frame table
                                            frame. This is necessary because
                                            the frame table is dumped in
                                            logical address order near the
                                            beginning of the dump and these
                                            frames are not dumped as part of
                                            the storage dump portion of the
                                            dump. To find frame given real
                                            addr: - find FRMTE for that frame
                                            - if not FRMFRMTB then select
                                            record from storage section -
                                            else get FRMPGNUM from FRMTE. Use
                                            FRMPGNUM to select frame table
                                            record from frame table section
                                            of dump and use as the storage
                                            contents.
    0008    8 Address      8 FRMTENXT       Host real address of the FRMTE
                                            describing the next frame used
                                            for the frame table in order by
                                            frame table logical address. End
                                            of chain is indicated by
                                            x'FFFFFFFFFFFFFFFF'.
    0010   16 Address      8 FRMFRMAD       Host real address of the frame
                                            described by this FRMTE.
    0018   24 Signed       8 *              FRMSTATEG: as above
          Redefinition used during CP dump processing.
          This redefinition should never be used to modify FRMTEs in
          the frame table that will continue to be used by CP because
          it overlays the first byte of the FRMTE regardless of what
          the FRMTE is being used for. It is intended as a means of
          passing information to the dump tool that is not otherwise
          in the dump. The dump tool will adjust its reading of FRMTEs
          using this redefinition. This means that any uses of the
          first word or doubleword need to omit the first byte.
          Snapdump will also want to include this information in the
          FRMTEs, but the real frame table contents need to be left
          unchanged because the system will continue to run. Snapdump
          will use a work area to modify frame table frames before
          writing them to the dump.
          This redefinition does not cause a loss of information for
          any current usage since the first byte is used as part of
          doubleword pointer. The valid range of addresses used in
          the pointer are currently below 128G and dependent on the
          supported real storage size. The pointer may also contain a
          x'FFFFFFFFFFFFFFFF' (-1).  Therefore the first byte will be
          either x'00' or x'FF' when it is used elsewhere. The data
          in the first byte is insignificant and can be discarded.
          Simple sign extension from the remaining portion of the
          address can be used to restore the first byte. If bit 8 is
          on then the pointer would have been a -1, otherwise the byte
          would have contained x'00'.  The approach of using sign
          extension out of bit 8 is valid until the supported size of
          real storage increases beyond the 16 petabyte range.
          Any changes to the FRMTE must ensure that they do not result
          in a loss of information needed in dump analysis because of
          the overlay on the first byte.
    0000    0 Bitstring    1 FRMDUMP        Frame info for dump processing.
              1111 111.      FRMKEY         X'FE' Mask to isolate key from
                                            FRMDUMP. Bits 0-6 for key + FRC
                                            bits.
              .... ...1      FRMDUMPD       X'01' Mask to isolate bit
                                            indicating whether frame contents
                                            are in the storage dump portion
                                            of CP dump.
          Redefinition for PTRM PTE serialization.  This is needed
          because a PTRM PTE represents 2 frames of data (a pageable
          PGMBK).  If these 2 frames of data are acted on by
          different threads (say for independent I/O operations),
          they can both think they hold the serialization reflected
          in the PTRM PTE.  To avoid this, any I/O process for
          pageable PGMBKs must first get this spin lock, thereby
          giving that thread the rights to the PTRM PTE and blocking
          all other processes from using the PTRM PTE.  After the
          process is finished with the PTRM PTE, this spin lock is
          released.
    0018   24 Signed       4 FRMPPPLK       Fullword spin lock field. Should
                                            either contain binary zeros, or
                                            the address of the instruction
                                            (or one near it) that acquired
                                            the lock. Simple spin lock,
                                            acquired by CS instruction and
                                            released by storing binary zeros.
                                            Note that this field will ONLY be
                                            used in the 2nd FRMTE of the
                                            contiguous pair of FRMTEs that
                                            represent the frames of the
                                            pageable PGMBK.

#### FRMTE Storage Layout

    *** FRMTE - FRAME TABLE ENTRY
    *
    *     +-------------------------------------------------------+
    *   0 |                       FRMFPNTG                        |
    *     +-------------------------------------------------------+
    *   8 |                       FRMBPNTG                        |
    *     +-------------------------------------------------------+
    *  10 |                       FRMPTEG                         |
    *     +-------------------------------------------------------+
    *  18 |                      FRMSTATEG                        |
    *     +-------------------------------------------------------+
    *
    *** FRMTE - FRAME TABLE ENTRY

    *** Overlay for FRMFPNTG in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   0 |         FRMFPNT0          |         FRMFPNT1          |
    *     +---------------------------+---------------------------+
    *   8
    *
    *** Overlay for FRMFPNTG in FRMTE

    *** Overlay for FRMBPNTG in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   8 |         FRMBPNT0          |         FRMBPNT1          |
    *     +---------------------------+---------------------------+
    *  10
    *
    *** Overlay for FRMBPNTG in FRMTE

    *** Overlay for FRMBPNT1 in FRMTE
    *
    *                                 +--------------------+------+
    *   8 ...                       C |////////////////////|:BFLAG|
    *                                 +--------------------+------+
    *  10
    *
    *** Overlay for FRMBPNT1 in FRMTE

    *** Overlay for FRMFPNTG in FRMTE
    *
    *     +-------------------------------------------------------+
    *   0 |///////////////////////////////////////////////////////|
    *     +---------------------------+-------------+------+------+
    *   8 |///////////////////////////|  FRMTCSTE   |:PSCT |:ASSEL|
    *     +---------------------------+-------------+------+------+
    *  10 |///////////////////////////|          FRMSTO           |
    *     +---------------------------+---------------------------+
    *  18 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  20
    *
    *** Overlay for FRMFPNTG in FRMTE

    *** Overlay for FRMPTEG in FRMTE
    *
    *     +---------------------------+-------------+-------------+
    *  10 |///////////////////////////|  FRMPS1ST   |  FRMPSLST   |
    *     +---------------------------+-------------+-------------+
    *  18
    *
    *** Overlay for FRMPTEG in FRMTE

    *** Overlay for FRMPTEG in FRMTE
    *
    *     +---------------------------+---------------------------+
    *  10 |///////////////////////////|         FRMDCKEY          |
    *     +---------------------------+---------------------------+
    *  18
    *
    *** Overlay for FRMPTEG in FRMTE

    *** Overlay for FRMSTATEG in FRMTE
    *
    *     +--------------------+------+------+------+------+------+
    *  18 |      FRMSXPN       |//////|:CSB4G|:CSB5G|:CSB6G|:CSB7G|
    *     +--------------------+------+------+------+------+------+
    *  20
    *
    *** Overlay for FRMSTATEG in FRMTE

    *** Overlay for FRMGORGIN in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   0 |///////////////////////////|          FRMID            |
    *     +---------------------------+---------------------------+
    *   8 |///////////////////////////|///////////////////////////|
    *     +---------------------------+---------------------------+
    *  10 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  18 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  20
    *
    *** Overlay for FRMGORGIN in FRMTE

    *** Overlay for FRMGORGIN in FRMTE
    *
    *     +-------------------------------------------------------+
    *   0 |                      FRMFRNXTG                        |
    *     +---------------------------+-------------+-------------+
    *   8 |///////////////////////////|  FRMVMFRG   |  FRMDWUSE   |
    *     +---------------------------+-------------+-------------+
    *  10 |                       FRMCHNG                         |
    *     +-------------------------------------------------------+
    *  18
    *
    *** Overlay for FRMGORGIN in FRMTE

    *** Overlay for FRMCHNG in FRMTE
    *
    *     +---------------------------+---------------------------+
    *  10 |///////////////////////////|          FRMCHN           |
    *     +---------------------------+---------------------------+
    *  18 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  20
    *
    *** Overlay for FRMCHNG in FRMTE

    *** Overlay for FRMGORGIN in FRMTE
    *
    *     +---------------------------+---------------------------+
    *   0 |///////////////////////////|///////////////////////////|
    *     +---------------------------+---------------------------+
    *   8 |                      FRMHDPBKG                        |
    *     +-------------------------------------------------------+
    *  10 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  18 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  20
    *
    *** Overlay for FRMGORGIN in FRMTE

    *** Overlay for FRMPTEG in FRMTE
    *
    *     +-------------------------------------------------------+
    *  10 |                       FRMSXSTE                        |
    *     +-------------------------------------------------------+
    *  18
    *
    *** Overlay for FRMPTEG in FRMTE

    *** Overlay for FRMGORGIN in FRMTE
    *
    *     +------+------+-------------+---------------------------+
    *   0 |//////|//////|/////////////|         FRMPGNUM          |
    *     +------+------+-------------+---------------------------+
    *   8 |                       FRMTENXT                        |
    *     +-------------------------------------------------------+
    *  10 |                       FRMFRMAD                        |
    *     +-------------------------------------------------------+
    *  18 |///////////////////////////////////////////////////////|
    *     +-------------------------------------------------------+
    *  20
    *
    *** Overlay for FRMGORGIN in FRMTE

    *** Overlay for FRMGORGIN in FRMTE
    *
    *     +------+
    *   0 |:DUMP | 1
    *     +------+
    *
    *** Overlay for FRMGORGIN in FRMTE

    *** Overlay for FRMSTAW0 in FRMTE
    *
    *     +---------------------------+
    *  18 |         FRMPPPLK          | 1C
    *     +---------------------------+
    *
    *** Overlay for FRMSTAW0 in FRMTE

#### FRMTE Cross Reference

    Symbol         Dspl Value
    -------------- ---- -----
    FREMX          001C 000001FD
    FREMXB         001C 00000FE8
    FRMAFR         001C 00000069
    FRMALTMV       000F FD
    FRMALTPG       000F FE
    FRMASSEL       000F
    FRMAVAIL       001F 80
    FRMBFLAG       000F
    FRMBPNTG       0008
    FRMBPNT0       0008
    FRMBPNT1       000C
    FRMCHN         0014
    FRMCHNG        0010
    FRMCP          001C 00000001
    FRMCSB0        001C 1C
    FRMCSB1        001D 1D
    FRMCSB2        001E 1E
    FRMCSB3        001F 1F
    FRMCSB4G       001C
    FRMCSB5G       001D
    FRMCSB6G       001E
    FRMCSB7G       001F
    FRMCSWRD       001C
    FRMDCKEY       0014
    FRMDTSP        001C 00000082
    FRMDUMP        0000
    FRMDUMPD       0000 01
    FRMDWUSE       000E
    FRMERROR       001D 01
    FRMFPNTG       0000
    FRMFPNT0       0000
    FRMFPNT1       0004
    FRMFRMAD       0010
    FRMFRMTB       001C 00000041
    FRMFRNXTG      0000
    FRMFSTG        001C 00000061
    FRMFTADD       001C 00000088
    FRMFTPF        000F FF
    FRMFTTBL       001C 00000009
    FRMFXASA       001E 80
    FRMGORGIN      0000
    FRMHDPBKG      0008
    FRMID          0004
    FRMKEY         0000 FE
    FRMLAVL        001E 01
    FRMLENTH       0018 00000020
    FRMMDCHT       001C 0000000D
    FRMNEVER       001C 000000FF
    FRMNEXTG       0020
    FRMNOOWN       001E 40
    FRMNOTI        001C 00000005
    FRMNPGM        001C 00000051
    FRMNPGM1       001C 00000051
    FRMNPGM2       001C 00000055
    FRMOFFLN       001C 00000010
    FRMONQUE       001D 02
    FRMOWNED       001D 20
    FRMPDISO       001C 0000007D
    FRMPGNUM       0004
    FRMPPGM        001C 000000D1
    FRMPPGM1       001C 000000D1
    FRMPPGM2       001C 000000D5
    FRMPPPLK       0018
    FRMPRFX        001C 00000031
    FRMPSCT        000E
    FRMPSLST       0016
    FRMPS1ST       0014
    FRMPTEG        0010
    FRMRELSE       001F 20
    FRMRFRSH       001E 20
    FRMRONLY       001D 08
    FRMSHARE       001D 10
    FRMSTATEG      0018
    FRMSTAW0       0018
    FRMSTEAL       001F 10
    FRMSTO         0014
    FRMSTOG        0010
    FRMSUSER       001C 00000081
    FRMSUTIL       001C 00000083
    FRMSVDSK       001C 000000C3
    FRMSXPN        0018
    FRMSXPNM       0018 00FFF000
    FRMSXPNMH      0018 00007FFF
    FRMSXPNML      0018 0000F000
    FRMSXS         001D 04
    FRMSXSTB       001C 00000011
    FRMSXSTE       0010
    FRMTCSTE       000C
    FRMTENXT       0008
    FRMTRACE       001C 00000021
    FRMTRANS       001F 40
    FRMUSER        001C 00000080
    FRMVMFRG       000C
    FRMVR          001C 00000040
    TCHASPAC       000F C0
    TCHIXMSK       000F 3F

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