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 : PFXFTBL + (REAL FRAME ADDRESS / 4096 * 16)
              VMDFR1ST  USER OWNED FRAME FORWARD ANCHOR
              VMDFRLST  USER OWNED FRAME BACKWARD ANCHOR
              FRMFPNT   FIELD OF HCPFRMTE FOR CHAINED FRAMES
              FRMBPNT   FIELD OF HCPFRMTE FOR CHAINED FRAMES
              FRMFRNXT  FREE STORAGE FRMTE FORWARD POINTER
              SUBANCH   SUBBK FRMTE LIST ANCHOR
 CREATED BY : HCPIST    ENTRIES INITIALIZED AT STORAGE INIT
 DELETED BY : NONE
 NOTES      : THE FRMTES ARE CONTAINED IN THE FRAME TABLE.
              SPACE FOR THE FRAME TABLE IS RESERVED AT
              SYSGEN BY HCPGENER.
              THE SPACE FOR THE FRAME TABLE IS NEVER RELEASED.
 Serialized :
                                                              *
    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 FRMCSB3).
    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 FRMCSB3,
    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 FRMCSWRD FRMCSB3.  (The remaining four
    FRMCSB3 bits comprise FRMLTRCT, the frame last translated
    count.  Interactions between FRMLTRCT and the FRMCSB3
    serialization bits are covered below.) 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 FRMCSWRD (and possibly
    FRMPTE as well).
    Generally, only word concurrent interlocked instructions
    should be used to manipulate pageable FRMTEs' FRMCSB3.
    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 FRMCSB3 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 FRMCSB3 serialization bits,
    and use of word concurrent interlocked instructions in
    setting them on.
    A FRMCSB3 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 FRMCSB3 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 FRMCSB3 updates.
    A FRMCSB3 serialization bit may *NOT* be turned off with a
    non-interlocked instruction such as NI if there is any
    possibility that any other task running on another
    processor might be attempting to increment or decrement
    FRMLTRCT (unless that other task will spin waiting for
    whatever FRMCSB3 serialization bit is currently on to be
    turned off).
    FRMLTRCT may only be updated with word concurrent
    interlocked instructions such as CS or CDS.  The CS|CDS
    *MUST* insist that any FRMCSB3 serialization bits *NOT*
    held by the running task be zero before attempting the
    update.  FRMLTRCT may *NOT* be updated, even with CS or
    CDS, if any of the FRMCSB3 serialization bits could be
    changing state; either all four of the bits must be off,
    or one of them (typically FRMRELSE) *MUST* be on and held
    by the executing task across the FRMLTRCT change.  This
    ensures that the running task sees the *RESULT* of any NI
    used to turn off any FRMCSB3 serialization bit that might
    have been held by a task running on another processor, and
    therefore prevents interleaving of processor fetches and
    stores with the execution of the NI on the other processor
    (and the attendant risk of lost FRMCSB3 updates).  One
    additional requirement for FRMLTRCT is that when
    incrementing in the resident page software translation
    fast paths in HCPPTR (390) or HCPHTR (ESAME), the CS or
    CDS *MUST* require that FRMTRANS be off (that is, no other
    processor is performing long path translation for the
    frame); support for more than 14 host processors depends
    on this.
    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 FRMCSB3 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 FRMCSB3
    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 FRMCSB3 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 incorrect FRMLTRCT values
    (causing LTR001 ABENDs or permanently and excessively
    last-translated "locked" pages), 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 Signed       4 FRMORGIN (0)   FRAME TABLE ENTRY ORIGIN
0000    0 Signed       4 FRMFPNT        CHAINED FRAME FORWARD POINTER
0004    4 Signed       4 FRMBPNT        CHAINED FRAME BACKWARD POINTER
0008    8 Signed       4 FRMPTE         POINTER TO PAGE TABLE ENTRY. THE
                                        PTE ADDRESS IS THE SAME AS THE
                                        VPGTE ADDRESS FOR THE 4K BLOCK OF
                                        VIRTUAL STORAGE, BUT THE VPGTE IS
                                        A MORE CONVENIENT MAPPING. FRMPTE
                                        must be cleared whenever a frame
                                        is put on the global or local
                                        available list.
000C   12 Signed       4 FRMCSWRD       FRAME STATUS BITS AND FLAGS. ALL
                                        BITS ARE CONTAINED IN A SINGLE
                                        FULLWORD SO THAT COMPARE AND SWAP
                                        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
          00000010       FRMLENTH       *-FRMTE LENGTH OF FRAME TABLE
                                        ENTRY
0010   16 Signed       4 FRMNEXT (0)    NEXT SEQUENTIAL ENTRY
     FRMBPNT IS SET BY HCPPTTFF (FRONT END OF FASTPATH PAGE FAULT PROCESSOR)
     TO INDICATE TO HCPPGXPL (BACK END OF FASTPATH PAGE PROCESSOR) WHAT TYPE
     OF PAGE FAULT OCCURED. FOR A PAGE FAULT SATISFIED BY PGIN OF AN XSTORE
     BLOCK FROM A NON-ALTERNATE PGMBK, THE XSTORE BLOCK NUMBER IS STORED IN
     FRMBPNT. IF THE VALUE IN FRMBNTP IS GREATER THAN X'FFFFFFFC', NO XSTORE
     BLOCK WAS INVOLVED AND FRMBFLAG WILL INDICATE THE TYPE OF PAGE FAULT
     THAT TOOK PLACE.
0004    4 Bitstring    1 * (3)
0007    7 Bitstring    1 FRMBFLAG       FASTPATH 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 Signed       4 *              Not redefined for MDC, original
                                        field name, FRMFPNT, used
0004    4 Signed       2 FRMTCSTE       Offset within MDC segment table
                                        to the SEGTE that this segment
                                        represents (Page table pages
                                        only)
0006    6 Bitstring    1 FRMPSCT        Count of free PTE sets. Used in
                                        garbage collection only. (Page
                                        table pages only and must be
                                        initialized to 0)
0007    7 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.
0008    8 Signed       4 FRMSTO         STO for this address space
                                        (Segment table pages only)
000C   12 Signed       4 *              May not be redefined for use in
                                        any way by MDC. Original field
                                        name, FRMCSWRD, and
                                        subdefinitions are used.
0008    8 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.)
000A   10 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.)
0008    8 Signed       4 FRMDCKEY       MDC hash key here for MDC frames
     End of redefinition for Minidisk Cache (FTC).
     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.
     USER FRAMES ARE ASSOCIATED WITH EACH OTHER BY THE X'80' BIT.
     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
     frame.
     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 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.
000C   12 Bitstring    1 FRMCSB0        COMPARE AND SWAP WORD BYTE 0.
                                        COMPARE AND SWAP NOT NECESSARILY
                                        REQUIRED TO ALTER THESE BITS.
          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 OFF-LINE AND
                                        UNAVAILABLE
          00000040       FRMVR          X'40' VIRTUAL = REAL USER FRAME
          00000051       FRMNPGM        X'51' Frame is a non-pageable
                                        pgmbk .* .* SAVE AREA FRAME
          00000063       FRMFRVR        X'63' FRAME IN USE FOR V=R FREE
                                        STORAGE
          00000065       FRMFRVM        X'65' FRAME USED FOR USER VMDBK
                                        FREE Note that if the first
                                        (lowest address) block in the
                                        frame is not available (that is,
                                        is not on the FRMCHAIN chain of
                                        available blocks and does not
                                        have an active free storage
                                        header), it may be an active
                                        segment table.
          00000067       FRMFRSY        X'67' FRAME USED FOR SYSTEM FREE
          00000069       FRMAFS         X'69' FRAME USED FOR ALIGNED FREE
                                        STORAGE
          0000006B       FRMVCB         X'6B' FRAME USED FOR VERIFIABLE
                                        CONTROL BLOCK FREE STORAGE
          0000006F       FRMPERSY       X'6F' Frame used for PERSYS
                                        (Persistent SYSPERM) 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
                                        .* .*
          00000000       *
          00000000       *
          0000007D       FRMPDISO       X'7D' Isolate FRMUSER and FRMDTSP
                                        fields of FRMCSB0. 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.
          00000001       FRMCP          X'01' FRAME IN USE BY CONTROL
                                        PROGRAM
          00000021       FRMTRACE       X'21' CP TRACE TABLE FRAME
          00000031       FRMPRFX        X'31' PREFIX PAGE FRAME
          00000061       FRMFREE        X'61' FRAME USED FOR FREE STORAGE
                                        OR SAVE AREA FRAME
          00000080       FRMUSER        X'80' FRAME USED AS USER PAGE
          00000081       FRMSUSER       X'81' IN USE AS SYSTEM VIRTUAL
                                        PAGE
          00000000       *
          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.
          00000000       *
          00000000       *
     THESE CODES ARE PRIMARILY STATIC FRAME USE CODES
     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 USED FRAMES. FRMSUTIL - SYSTEM UTILITY
     FRAMES. FRMPPGM - PAGEABLE PGMBK BLOCKS. 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.
000D   13 Bitstring    1 FRMCSB1        COMPARE AND SWAP WORD BYTE 1.
                                        COMPARE AND SWAP NOT NECESSARILY
                                        REQUIRED TO ALTER THESE BITS.
          1... ....      FRMLOCKD       X'80' FRAME IS LOCKED IN REAL
                                        STORAGE (FRMLCNT IS GREATER THAN
                                        ZERO)
          .1.. ....      FRMCPLOK       X'40' FRAME LOCKED BY CP LOCK
                                        COMMAND (FRAME IS PART OF CP
                                        NUCLEUS)
          ..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, PAGPROT
                                        should be set in the associated
                                        PTE pointed to by FRMPTE)
          .... ..1.      FRMONQUE       X'02' FRAME IS CURRENTLY ON A
                                        QUEUE OR LIST. CHECK THE FRAME
                                        CODE TO DETERMINE WHAT QUEUE THE
                                        FRAME IS ON. FRMFRSY - THE SYSTEM
                                        FREE STORAGE FRAMES QUEUE.
                                        FRMFRVM - THE VMDBK FREE STORAGE
                                        FRAMES QUEUE. FRMPPGM - THE
                                        DEFERRED PGMBK PAGING LIST OR THE
                                        PAGED PGMBK AGING LIST FRMNPGM -
                                        THE LIST OF FRMTE'S CONTAINING
                                        PREVIOUSLY DEALLOCATED PTRM PTE'S
                                        BELOW CURRENT POINTER.
          .... ...1      FRMERROR       X'01' FRAME IS IN ERROR (STORAGE
                                        CHECK)
     THESE BITS ARE PRIMARILY STATIC FRAME FLAG BITS
000E   14 Bitstring    1 FRMCSB2        COMPARE AND SWAP WORD BYTE 2.
                                        COMPARE AND SWAP NOT NECESSARILY
                                        REQUIRED TO ALTER THESE BITS.
          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. ....      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 THE FRMAVAIL
                                        BIT IS ON AND THE FRMLAVL BIT IS
                                        OFF.
     THESE BITS DENOTE DYNAMIC FRAME STATES
     FRMCSB3 FRMTE serialization byte. Contains the four mutually exclusive
     FRMTE serialization bits and also the four bit frame last translated
     count.
     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!!!!!!!!!!!!!!!!!!!
000F   15 Bitstring    1 FRMCSB3        COMPARE AND SWAP WORD BYTE 3.
          1... ....      FRMAVAIL       X'80' Frame is on the global
                                        available list, local available
                                        list, or the processor-local
                                        processed list. FRMPTE must be
                                        cleared and FRMAVAIL must be set
                                        to one when a frame is on the
                                        global available list. FRMPTE
                                        must be cleared plus FRMAVAIL,
                                        FRMLAVAL, and FRMUSER must be set
                                        to one when a frame is on the
                                        local available list. FRMPTE 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 LIEU OF
                                        FRMLOCKD IN SITUATIONS WHERE IT
                                        IS NOT FEASABLE TO USE THE LOCKED
                                        FRAME INTERFACE. AN EXAMPLE IS
                                        HCPPAF SAVING PAGES ON BEHALF OF
                                        A GUEST REQUEST.
          .... 1111      FRMLTRCT       X'0F' Frame last translated
                                        count. These four bits are the
                                        count of CPUs which have this
                                        FRMTE as last translated. If any
                                        of these bits are one, the frame
                                        cannot be stolen. This equate is
                                        used as a mask to isolate the 4
                                        bit frame last translated count.
                                        The maximum value (currently 14)
                                        of this count represents the
                                        maximum number of CPUs on which a
                                        given frame may be concurrently
                                        last translated, but does *NOT
                                        constitute an upper limit on the
                                        number of concurrently online
                                        CPUs supported. FRMLTRCT can only
                                        be non-zero in FRMTEs which
                                        represent frames below the 2G
                                        line (addressable via 31 bit
                                        addresses) as we never allow
                                        manual translation of pages to
                                        frames above the 2G line; all
                                        host real or absolute addresses
                                        returned by manual translation
                                        are 31 bit addresses (below 2G).
                                        FRMLTRCT for an architecturally
                                        attached frame (pointed to by a a
                                        valid and attached PTE) is
                                        maintained ONLY via interlocked
                                        instructions such as CS or CDS;
                                        any task which is updating
                                        FRMLTRCT must require either that
                                        all of the four FRMCSB3
                                        serialization bits (FRMAVAIL,
                                        FRMTRANS, FRMRELSE, FRMSTEAL) be
                                        off and stay off, or that one and
                                        only of them, if known to be held
                                        by the current task (typically
                                        FRMRELSE) is on and stays on.
                                        When the resident page software
                                        translation fast paths in HCPPTR
                                        (390) or HCPHTR (ESAME) increment
                                        FRMLTRCT, there is a further
                                        requirement that FRMTRANS must be
                                        off and stay off (support for
                                        more than 14 host processors
                                        dependends on this).
          .... 1...      FRMLTRHI       X'08' High order bit of the frame
                                        last translated count. Used in
                                        masks when incrementing FRMLTRCT
                                        to take longer path for FRMTLRCT
                                        values greater than 7 (b'0111')
          .... 111.      FRMLTRMX       X'0E' Maximum allowable value of
                                        the frame last translated count.
                                        Used when incrementing FRMLTRCT,
                                        in longer path. END OF DEFINITION
                                        FOR FRAME TABLE ENTRIES
     THESE BITS ARE USED TO SERIALIZE FRAME STATE CHANGES
     REDEFINITION FOR FRAMES THAT ARE NOT CHAINED.
0000    0 Signed       4 FRMID          4 CHARACTER IDENTIFIER
                                        IDENTIFIERS USED IN FRMID THESE
                                        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 'SAVE'
                                        FRAME IN USE BY SAVE AREA MANAGER
                                        '*VR*' VIRTUAL = REAL USER FRAME
                                        'FRVR' FRAME IN USE FOR V=R FREE
                                        STORAGE 'OFLN' FRAME IS OFF-LINE
                                        AND UNAVAILABLE 'PRFX' PREFIX
                                        PAGE FRAME ' ' LOCKED USER FRAME
                                        'PPGM' PAGEABLE PGMBK 'NPGM'
                                        NON-PAGEABLE PGMBK 'AFS ' ALIGNED
                                        FREE STORAGE 'VCB ' VERIFIABLE
                                        CONTROL BLOCK 'FTBL' Frame Table
                                        frame
0004    4 Signed       4 FRMLKCNT       FRAME LOCK COUNT
0008    8 Signed       4 *
000C   12 Signed       4 *              FRMCSWRD (FLAGS AND STATUS BITS)
     REDEFINITION FOR FREE STORAGE FRAMES.
0000    0 Signed       4 FRMFRNXT       NEXT FRMTE WITH AVAILABLE BLOCKS
0004    4 Signed       2 FRMDHTOD       TOD TIME STAMP (SECS)
0004    4 Signed       2 FRMVMFRG       FRAGMENT SIZE WHEN USED BY FREVM
0006    6 Signed       2 FRMDWUSE       DOUBLE WORDS OF STORAGE IN USE
0008    8 Address      4 FRMCHN         POINTER TO FIRST FREE STORAGE
                                        AVAILABLE BLOCK IN THIS FRAME.
     THIS FIELD IS ALSO 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, THE LEFT-MOST 2 BYTES OF THIS FIELD CONTAIN THE OFFSET OF THE
     FIRST FREE PAGE TABLE ENTRY AVAILABLE IN THIS FRAME (FOR NON PAGEABLE
     PGMBK FRAMES ONLY - NPGM) WHICH WERE PREVIOUSLY DEALLOCATED.
000C   12 Signed       4 *              FRMCSWRD (FLAGS AND STATUS BITS)
     FRMCHN redefinitions used by fast subpooled free storage garbage
     collection (HCPFRFDX):
     Note that fast subpooled free storage frames do not otherwise use the
     typical free storage frame queueing techniques except during garbage
     collection processing (HCPFRFDX, SUBMTFTE queue, etc.). This means that
     FRMONQUE gets set even when subpooled free storage FRMTEs aren't on any
     queue.
0008    8 Signed       2 FRMBCT         Count of returned blocks
000A   10 Signed       2 FRMLAST        Last block queued

 

FRMTE Storage Layout

          
*** FRMTE - FRAME TABLE ENTRY
*
*     +---------------------------+---------------------------+
*   0 |         FRMFPNT           |         FRMBPNT           |
*     +---------------------------+---------------------------+
*   8 |          FRMPTE           |         FRMCSWRD          |
*     +---------------------------+---------------------------+
*
*** FRMTE - FRAME TABLE ENTRY
          
*** Overlay for FRMBPNT in FRMTE
*
*                                 +--------------------+------+
*   0 ...                       4 |////////////////////|:BFLAG|
*                                 +--------------------+------+
*   8
*
*** Overlay for FRMBPNT in FRMTE
          
*** Overlay for FRMFPNT in FRMTE
*
*     +---------------------------+-------------+------+------+
*   0 |///////////////////////////|  FRMTCSTE   |:PSCT |:ASSEL|
*     +---------------------------+-------------+------+------+
*   8 |          FRMSTO           |///////////////////////////|
*     +---------------------------+---------------------------+
*  10
*
*** Overlay for FRMFPNT in FRMTE
          
*** Overlay for FRMPTE in FRMTE
*
*     +-------------+-------------+
*   8 |  FRMPS1ST   |  FRMPSLST   | C
*     +-------------+-------------+
*
*** Overlay for FRMPTE in FRMTE
          
*** Overlay for FRMPTE in FRMTE
*
*     +---------------------------+
*   8 |         FRMDCKEY          | C
*     +---------------------------+
*
*** Overlay for FRMPTE in FRMTE
          
*** Overlay for FRMCSWRD in FRMTE
*
*                                 +------+------+------+------+
*   8 ...                       C |:CSB0 |:CSB1 |:CSB2 |:CSB3 |
*                                 +------+------+------+------+
*  10
*
*** Overlay for FRMCSWRD in FRMTE
          
*** Overlay for FRMORGIN in FRMTE
*
*     +---------------------------+---------------------------+
*   0 |          FRMID            |         FRMLKCNT          |
*     +---------------------------+---------------------------+
*   8 |///////////////////////////|///////////////////////////|
*     +---------------------------+---------------------------+
*  10
*
*** Overlay for FRMORGIN in FRMTE
          
*** Overlay for FRMORGIN in FRMTE
*
*     +---------------------------+-------------+
*   0 |         FRMFRNXT          |  FRMDHTOD   | 6
*     +---------------------------+-------------+
*
*** Overlay for FRMORGIN in FRMTE
          
*** Overlay for FRMDHTOD in FRMTE
*
*                                 +-------------+-------------+
*   0 ...                       4 |  FRMVMFRG   |  FRMDWUSE   |
*     +---------------------------+-------------+-------------+
*   8 |          FRMCHN           |///////////////////////////|
*     +---------------------------+---------------------------+
*  10
*
*** Overlay for FRMDHTOD in FRMTE
          
*** Overlay for FRMCHN in FRMTE
*
*     +-------------+-------------+
*   8 |   FRMBCT    |  FRMLAST    | C
*     +-------------+-------------+
*
*** Overlay for FRMCHN in FRMTE

 

FRMTE Cross Reference

Symbol         Dspl Value
-------------- ---- -----
*              000C 00000000
*              000C 00000000
*              000C 00000000
*              000C 00000000
*              000C 00000000
FREMX          000C 000001FD
FREMXB         000C 00000FE8
FRMAFS         000C 00000069
FRMALTMV       0007 FD
FRMALTPG       0007 FE
FRMASSEL       0007
FRMAVAIL       000F 80
FRMBCT         0008
FRMBFLAG       0007
FRMBPNT        0004
FRMCHN         0008
FRMCP          000C 00000001
FRMCPLOK       000D 40
FRMCSB0        000C
FRMCSB1        000D
FRMCSB2        000E
FRMCSB3        000F
FRMCSWRD       000C
FRMDCKEY       0008
FRMDHTOD       0004
FRMDTSP        000C 00000082
FRMDWUSE       0006
FRMERROR       000D 01
FRMFPNT        0000
FRMFREE        000C 00000061
FRMFRNXT       0000
FRMFRSY        000C 00000067
FRMFRVM        000C 00000065
FRMFRVR        000C 00000063
FRMFTADD       000C 00000088
FRMFTPF        0007 FF
FRMFTTBL       000C 00000009
FRMFXASA       000E 80
FRMID          0000
FRMLAST        000A
FRMLAVL        000E 01
FRMLENTH       000C 00000010
FRMLKCNT       0004
FRMLOCKD       000D 80
FRMLTRCT       000F 0F
FRMLTRHI       000F 08
FRMLTRMX       000F 0E
FRMMDCHT       000C 0000000D
FRMNEVER       000C 000000FF
FRMNEXT        0010
FRMNOTI        000C 00000005
FRMNPGM        000C 00000051
FRMOFFLN       000C 00000010
FRMONQUE       000D 02
FRMORGIN       0000
FRMOWNED       000D 20
FRMPDISO       000C 0000007D
FRMPERSY       000C 0000006F
FRMPPGM        000C 000000D1
FRMPRFX        000C 00000031
FRMPSCT        0006
FRMPSLST       000A
FRMPS1ST       0008
FRMPTE         0008
FRMRELSE       000F 20
FRMRFRSH       000E 20
FRMRONLY       000D 08
FRMSHARE       000D 10
FRMSTEAL       000F 10
FRMSTO         0008
FRMSUSER       000C 00000081
FRMSUTIL       000C 00000083
FRMSVDSK       000C 000000C3
FRMTCSTE       0004
FRMTRACE       000C 00000021
FRMTRANS       000F 40
FRMUSER        000C 00000080
FRMVCB         000C 0000006B
FRMVMFRG       0004
FRMVR          000C 00000040
TCHASPAC       0007 C0
TCHIXMSK       0007 3F

This information is based on z/VM V4R1.0.
Last updated on 5 Jun 2001 at 13:41:00 EDT.
Copyright IBM Corporation, 1990, 2001