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 .*
          00000051       FRMNPGM1       FRMNPGM First frame of an ESAME
                                        non-pageable PGMBK
          00000055       FRMNPGM2       X'55' Second fame of and ESAME
                                        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
                                        .*
          000000D1       FRMPPGM1       FRMPPGM First frame of an ESAME
                                        pageable PGMBK
          000000D5       FRMPPGM2       X'D5' Second fame of and ESAME
                                        pageable PGMBK .*
          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
          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.
     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 '*RFT' Host Region First
                                        Table frame '*RST' Host Region
                                        Second Table frame '*RTT' Host
                                        Region Third Table frame '*SEG'
                                        Host Segment Table frame
     Eyecatchers *RTF, *RST, *RTT, and *SEG are only used in the ESAME build
     of CP.
     Note that FRMCSB0 still == FRMCP for FRMTEs marked with *RTF, *RTS,
     *RTT, and *SEG eyecatchers
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
     Redefinition for host DAT (region/segment) table frames
0000    0 Signed       4 *              FRMID: eyecatcher, see FRMID
                                        definition above
0004    4 Signed       4 FRMHDPBK       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.
0008    8 Signed       4 *              FRMCHN: for multi-frame host DAT
                                        tables, contains the number of
                                        contiguous frames starting at and
                                        including this frame, by
                                        ascending address
000C   12 Signed       4 *              FRMCSWRD: as above

 

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
          
*** Overlay for FRMORGIN in FRMTE
*
*     +---------------------------+---------------------------+
*   0 |///////////////////////////|         FRMHDPBK          |
*     +---------------------------+---------------------------+
*   8 |///////////////////////////|///////////////////////////|
*     +---------------------------+---------------------------+
*  10
*
*** Overlay for FRMORGIN in FRMTE

 

FRMTE Cross Reference

Symbol         Dspl Value
-------------- ---- -----
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
FRMHDPBK       0004
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
FRMNPGM1       000C 00000051
FRMNPGM2       000C 00000055
FRMOFFLN       000C 00000010
FRMONQUE       000D 02
FRMORGIN       0000
FRMOWNED       000D 20
FRMPDISO       000C 0000007D
FRMPERSY       000C 0000006F
FRMPPGM        000C 000000D1
FRMPPGM1       000C 000000D1
FRMPPGM2       000C 000000D5
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 V4R2.0. Last updated on 30 Oct 2001 at 15:38:58 EDT.
Copyright IBM Corporation, 1990, 2001