|
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
00000005 FRMLenSh 5 Shift amount equivalent to
multiplying by FRMLENTH
0000001F FRMAdrMk FRMLENTH-1 Mask to TMLL that the
FRMTE address is properly
aligned: TMLL Rx,FRMAdrMk BrNZ
NotAligned
Verify our requirements
0020 32 Dbl-Word 8 FRMNEXTG (0) Next sequential entry
0008 8 Signed 4 * 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' FRMALTMV Page in frame was
moved from a page found in an
alternate PGMBK
1111 111. FRMALTPG X'FE' FRMALTPG Page in frame was
PGIN'd from an XSTORE block found
in an alternate PGMBK
1111 1111 FRMFTPF X'FF' FRMFTPF 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' TCHASPAC These bits
identify the address space used
for caching Note: TCMALMSK and
TCMALSHF depend on these bits
..11 1111 TCHIXMSK X'3F' TCHIXMSK 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).
Redefinition for Emergency PGMBK Pool
0000 0 Address 8 *
0008 8 Address 8 *
0010 16 Address 8 FRMEMPGM A(next emergency PGMBK FRMTE)
0018 24 Address 8 *
End of redefinition for Emergency PGMBK Pool
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
Redefinition for IBR state information.
When a page is made IBR, the storage key of the frame is
saved in FRMIBKEY. While a page is IBR, the guest may
perform a keyop to modify the frame's key information
which will be stored in the PGSTE. If the page is
revalidated, FRMIBKEY will be used to determine if a SSKE
is needed to set the real storage key to match the PGSTE
value. FRMIBKEY is cleared during revalidation, and
also at frame reclaim time.
0018 24 Bitstring 1 FRMIBKEY Storage key from the frame at the
time page was made IBR.
0019 25 Bitstring 1 FRMIBFLG Flags associated with IBR state
..1. .... FRMRCPHC X'20' FRMRCPHC Backup of PGSRCPHC
(host change) when FRMTE is added
to the aging list. This flag is
reset when PGSRCPHC is reset,
after the page is early written.
.... ..1. FRMRecfg X'02' FRMRecfg IBR page on Global
Aging List has a reconfigurable
frame. Used to restore PGSPN on
revalidation. Bit is always off
for IBR pages on UFO (even if
frame is in reconfigurable zone).
.... ...1 FRMENCPT X'01' FRMENCPT Frame contents are
encrypted. This bit can be ON as
long as the frame is IBR on the
Global Aging List or in-flight.
It cannot be ON if the FRMTE is
IBR on the UFO. The bit goes ON
during early writes when a frame
is encrypted and written to
auxiliary storage. It goes OFF:
1. When pages are read in and
decrypted as part of a block
paging Read and put on the UFO.
2. When an IBR frame on the
Global Aging List is revalidated
and decrypted. 3. When a frame is
reclaimed for the frame manager.
Serialization for this bit is
Frame Serialization.
001A 26 Signed 2 FRMAGLSV For a frame on the Aging List
that is locked but not dequeued,
the high order 2 bytes of the
FRMFPNTG will be saved here
End of redefinition for IBR state information.
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 usually considered
to be CP frames.
The codes that include X'81' (FRMSUSER) in their definition
are pageable CP frames. As such, PTIL is not applicable and
IPTE must be used to invalidate the PTE.
The dynamic paging area (DPA) is comprised of any pageable
user or system frame, and all of the frames on the
available lists.
RSADmpCP is the count of CP frames to be included in a hard
abend dump.
Counted in Counted in
DPA? RSADmpCP?
---------- ----------
In general, when FRMCP ON: No Yes
Exceptions:
Crash-kernel frames (x01) No No
FRMNOTI (x05) No No
FRMSVDSK (xC3)* Yes No
FRMPPGM1/FRMPPGM2 (xD1/xD5)* Yes Yes
FRMSUSER (x81)* Yes Yes
* FRMUSER is ON for these pageable frames.
** Although FRMSUSER frames are included in RSADmpCP,
they are dumped only when we are certain they do not
contain CP Directory data.
Counted in Counted in
DPA? RSADmpCP?
---------- ----------
In general, when FRMCP OFF: Yes No
Exceptions:
FRMOFFLN (x10) No No
CP non-dumpable frames (x_4) No*** No
Non-specific usage (x00) Yes No
*** Will be included in DPA count when the FRMTE is on a
global available list.
Frame codes with x_4 (i.e. FRMCP is OFF, with a '4' in the
low nibble) are CP-use frames that are not counted in
RSADmpCP. However, because they contain CP data, they can
be included in a soft abend dump when the frame address is
in a register at the time of the soft abend, or the frame
address is specified in a snap list.
When a frame with FRMCP ON is added to a global available
list, the frame code is changed to FRMCPAvl (x'04'). There
are two exceptions: 1) a FRMSUSER frame is converted to
FRMUSER because once the frame is added to the available
list, we cannot determine whether it contains CP Directory
data; and 2) a FRMSVDSK is unchanged because it always
contains user data.
Crash-kernel frames (frame code = FRMCP) are allocated at
system initialization and are never released back to the
available list.
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.
When a new frame code is assigned, make sure the TSTFRAME
macro returns the expected output (see HCPUTRX3/XS).
001C 28 Signed 4 FRMCSWRD (0) Cover for the 4 state bytes
001C 28 Bitstring 1 FRMCSB0 (0)
00000004 FRMCPAvl X'04' FRMCPAvl Frame was in use
by CP, but is now on a global
available list.
00000005 FRMNOTI X'05' FRMNOTI Frame is not
initialized. TB/SSKE/ISKE has not
been issued against this frame.
00000009 FRMFTTBL X'09' FRMFTTBL Frame used for MDC
segment or page table.
0000000D FRMMDCHT X'0D' FRMMDCHT Frame used for MDC
hash table.
00000010 FRMOFFLN X'10' FRMOFFLN Frame is offline
and unavailable
00000011 FRMSXSTB X'11' FRMSXSTB SXS page mgt table
frame
00000014 FRMIOAT X'14' FRMIOAT IOAT frame
00000031 FRMPRFX X'31' FRMPRFX Prefix page frame
00000040 FRMVR X'40' FRMVR V=F user frame
00000041 FRMFRMTB X'41' FRMFRMTB Frame table frame
00000051 FRMNPGM X'51' FRMNPGM Frame is a
non-pageable pgmbk
00000051 FRMNPGM1 FRMNPGM FRMNPGM1 First frame of a
non-pageable PGMBK
00000055 FRMNPGM2 X'55' FRMNPGM2 Second frame of a
non-pageable PGMBK Refer to
FRMSXSTE to identify the SXSTE
that describes the page. free
storage
00000082 FRMDTSP X'82' FRMDTSP Frame used for a
user's data space page
00000083 FRMSUTIL X'83' FRMSUTIL Frame used for CP
utility address space page
00000088 FRMFTADD X'88' FRMFTADD Frame is part of
the MDC address space. It
contains user data.
000000C3 FRMSVDSK X'C3' FRMSVDSK Frame used for
VDISK System Utility address
space page
000000D1 FRMPPGM X'D1' FRMPPGM Frame is a pageable
PGMBK
000000D1 FRMPPGM1 FRMPPGM FRMPPGM1 First frame of a
pageable PGMBK
000000D5 FRMPPGM2 X'D5' FRMPPGM2 Second frame of a
pageable PGMBK
0000007D FRMPDISO X'7D' FRMPDISO 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' FRMNEVER Equate to reserve
a value which will never be a
valid frame usage code.
00000000 FRMINIT X'00' FRMINIT Frame has never
been used. Was only converted
from FRMNOTI. space 1
001C 28 Bitstring 1 FRMCSB4G (0) Compare and swap dword byte 4.
CSG not necessarily required to
alter these bits.
00000004 FRMCPAvl X'04' FRMCPAvl Frame was in use
by CP, but is now on a global
available list.
00000005 FRMNOTI X'05' FRMNOTI Frame is not
initialized. TB/SSKE/ISKE has not
been issued against this frame.
00000009 FRMFTTBL X'09' FRMFTTBL Frame used for MDC
segment or page table.
0000000D FRMMDCHT X'0D' FRMMDCHT Frame used for MDC
hash table.
00000010 FRMOFFLN X'10' FRMOFFLN Frame is offline
and unavailable
00000011 FRMSXSTB X'11' FRMSXSTB SXS page mgt table
frame
00000014 FRMIOAT X'14' FRMIOAT IOAT frame
00000031 FRMPRFX X'31' FRMPRFX Prefix page frame
00000040 FRMVR X'40' FRMVR V=F user frame
00000041 FRMFRMTB X'41' FRMFRMTB Frame table frame
00000051 FRMNPGM X'51' FRMNPGM Frame is a
non-pageable pgmbk
00000051 FRMNPGM1 FRMNPGM FRMNPGM1 First frame of a
non-pageable PGMBK
00000055 FRMNPGM2 X'55' FRMNPGM2 Second frame of a
non-pageable PGMBK Refer to
FRMSXSTE to identify the SXSTE
that describes the page. free
storage
00000082 FRMDTSP X'82' FRMDTSP Frame used for a
user's data space page
00000083 FRMSUTIL X'83' FRMSUTIL Frame used for CP
utility address space page
00000088 FRMFTADD X'88' FRMFTADD Frame is part of
the MDC address space. It
contains user data.
000000C3 FRMSVDSK X'C3' FRMSVDSK Frame used for
VDISK System Utility address
space page
000000D1 FRMPPGM X'D1' FRMPPGM Frame is a pageable
PGMBK
000000D1 FRMPPGM1 FRMPPGM FRMPPGM1 First frame of a
pageable PGMBK
000000D5 FRMPPGM2 X'D5' FRMPPGM2 Second frame of a
pageable PGMBK
0000007D FRMPDISO X'7D' FRMPDISO 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' FRMNEVER Equate to reserve
a value which will never be a
valid frame usage code.
00000000 FRMINIT X'00' FRMINIT Frame has never
been used. Was only converted
from FRMNOTI. space 1
001C 28 Bitstring 1 * The actual byte
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.
never been passed out for use.
001D 29 Bitstring 1 FRMCSB1 (0)
.1.. .... FRMAGING X'40' FRMAGING Frame is on the
global IBR aging list (mutually
exclusive with FRMOWNED bit)
..1. .... FRMOWNED X'20' FRMOWNED Frame is on a user
owned list
...1 .... FRMSHARE X'10' FRMSHARE Frame is shared
storage frame
.... 1... FRMRONLY X'08' FRMRONLY 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' FRMSXS 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' FRMONQUE 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' FRMERROR Frame is in error
(storage check)
001D 29 Bitstring 1 FRMCSB5G (0) Compare and swap dword byte 5
Compare and swap not necessarily
required to alter these bits.
.1.. .... FRMAGING X'40' FRMAGING Frame is on the
global IBR aging list (mutually
exclusive with FRMOWNED bit)
..1. .... FRMOWNED X'20' FRMOWNED Frame is on a user
owned list
...1 .... FRMSHARE X'10' FRMSHARE Frame is shared
storage frame
.... 1... FRMRONLY X'08' FRMRONLY 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' FRMSXS 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' FRMONQUE 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' FRMERROR Frame is in error
(storage check)
001D 29 Bitstring 1 * The actual byte
These bits are primarily static frame flag bits
001E 30 Bitstring 1 FRMCSB2 (0)
1... .... FRMFXASA X'80' FRMFXASA 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' FRMNOOWN Frame is no-owned.
..1. .... FRMRFRSH X'20' FRMRFRSH Frame data is
invalid. The frame must be
refreshed before being used.
...1 .... FRMCTG X'10' FRMCTG Frame resides on a
contiguous uncleared available
list
.... ...1 FRMLAVL X'01' FRMLAVL 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. Note:
FRMLAVL+FRMAVAIL+FRMSTEAL is used
by frame table scan to remember
that a frame was removed from an
available list. If the attempt is
aborted, FRMLAVL is turned off,
and the frame is returned to an
available list.
001E 30 Bitstring 1 FRMCSB6G (0) Compare and swap dword byte 6
Compare and swap not necessarily
required to alter these bits.
1... .... FRMFXASA X'80' FRMFXASA 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' FRMNOOWN Frame is no-owned.
..1. .... FRMRFRSH X'20' FRMRFRSH Frame data is
invalid. The frame must be
refreshed before being used.
...1 .... FRMCTG X'10' FRMCTG Frame resides on a
contiguous uncleared available
list
.... ...1 FRMLAVL X'01' FRMLAVL 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. Note:
FRMLAVL+FRMAVAIL+FRMSTEAL is used
by frame table scan to remember
that a frame was removed from an
available list. If the attempt is
aborted, FRMLAVL is turned off,
and the frame is returned to an
available list.
001E 30 Bitstring 1 * The actual byte
These bits denote dynamic frame states
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 FRMCSB3 (0)
1... .... FRMAVAIL X'80' FRMAVAIL Frame is on the
global available list, local
available list, or a
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 a processor
local processed list.
.1.. .... FRMTRANS X'40' FRMTRANS Frame is being
translated
..1. .... FRMRELSE X'20' FRMRELSE Frame is being
released
...1 .... FRMSTEAL X'10' FRMSTEAL 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. Note: This state
(FRMSTEAL) is used in situations
where a FRMTE has just been
removed from an available list,
or is about to be coalesced back
to the available lists, and is
not otherwise serialized. END OF
DEFINITION FOR FRAME TABLE
ENTRIES
001F 31 Bitstring 1 FRMCSB7G (0) Compare and swap dword byte 7
1... .... FRMAVAIL X'80' FRMAVAIL Frame is on the
global available list, local
available list, or a
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 a processor
local processed list.
.1.. .... FRMTRANS X'40' FRMTRANS Frame is being
translated
..1. .... FRMRELSE X'20' FRMRELSE Frame is being
released
...1 .... FRMSTEAL X'10' FRMSTEAL 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. Note: This state
(FRMSTEAL) is used in situations
where a FRMTE has just been
removed from an available list,
or is about to be coalesced back
to the available lists, and is
not otherwise serialized. END OF
DEFINITION FOR FRAME TABLE
ENTRIES
001F 31 Bitstring 1 * The actual byte
These bits are used to serialize frame state changes
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
00C6C6C3 FRMIDOFFC C'OFFC' Frame is offline
physically as a non-configured
hole. Either DSR UNASSIGNed, DEF
STOR CONFIG. DAT structures and
FRMTEs are "compressed" so that
many host logical addresses
translate to a single frame of
FRMTEs. The single frame of
FRMTEs has PAGGPROT set, so
attempting to alter any FRMTE in
the page will result in a PRG004.
'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 'MPWD' CP
frame in use by HCPDMP for a
contiguous ID-mapped buffer.
00C4D4D7 FRMIDSDMP C'SDMP' Stand-alone dump
crashkernel reserved area.
Note that FRMCSB4G still == FRMCP
for FRMTEs marked with *RTF,
*RTS, *RTT, *SEG, FRMT, SXST,
XDAT, MPWB, and SDMP 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 Bitstring 1 FRMFSFLG Free storage flag byte
1... .... FRMB2GANY X'80' FRMB2GANY Free storage page
<2G but was obtained for ANY
request
0009 9 Bitstring 1 * (3) 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). For this usage,
FRMCHN must be signed positive
value.
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 RSAFTOFTE and RSASTOFTE 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 Frame count into FRMTB in the SXS
address order. Frames that
contain FRMTEs for the FRMTB have
FRMTEs. Every frame is controlled
by a FRMTE. Say that the first
FRMTE is at HLA 300_00000000.
That FRMTE is somewhere in
storage. We can LRAG and get the
HRA. Let's say HLA 300_00000000
is backed by the real frame at
83283000. That's a frame in
storage, so there is a FRMTE that
describes it. That FRMTE is found
by AEFRM 83283000. Let's say that
AEFRM gives us 300_01065060.
300_01065060 is the FRMTE for the
1st frame of the FRMTB. Its
FRMPGNUM is 00000000. And where
is this FRMTE in the dump? LRAG
300_01065060 tells us. Let's
pretend that LRAG gives us
8279A060.
The 2nd frame of FRMTEs is at 300_00001000, the
next page HLA. LRAG can get us its HRA. Let's
say that HRA is 78987000. Notice there is no
connection to the HRA of the first frame. The
backing frames can be anywhere. 78987000 is
described by a FRMTE. AEFRM 78987000 gives us
its FRMTE, 300_00F130E0. 300_00F130E0 is the
FRMTE for the 2nd frame of the FRMTB. Its
FRMPGNUM is 00000001. And where is this FRMTE in
the dump? LRAG 300_00F130E0 tells us. Let's
pretend that LRAG gives us 82F450E0.
If the DAT tables are broken, then we can't use
LRAG. We might know from PFXFTBLG that the 1st
FRMTE is at HLA 300_00000000, but without LRAG
we'll never find it in the dump. That's where
RSAFTOFTE and FRMTENXT come in. When the FRMTB
was built, it was determined that the 1st frame
of FRMTEs was at HRA 83283000. Dump processing,
and the VM Dump Tool, can use RSAFTOFTE to find
that 1st frame of FRMTEs.
At initialization RSAFTOFTE is initialized:
LRAG 300_00000000 --> 83283000,
AEFRM 83283000 --> 300_01065060.
LRAG 300_01065060 --> 8279A060.
This value 8279A060 is stored in RSAFTOFTE.
At HRA 8279A060, 128 FRMTEs of the FRMTB can be
found. The next real frame of FRMTEs is found
from chained the 1st FRMTE of the FRMTB.
8279A060 points to the FRMTE for the 2nd frame of
the FRMTB, 82F450E0.
This is what these 2 FRMTEs would look like
R8279A060 00000000 00000000 00000000 82F450E0
00000000 83283000 00000000 41000000
R82F450E0 00000000 00000001 00000000 nxtFRMTE
00000000 78987000 00000000 41000000
The FRMTE at R8279A060 has HRA to the next FRMTE
00000000_82F450E0 as well as the HRA for the
original HLA (300_00000000 --> 00000000_83283000)
And so on.
So, if DAT does not work, one could chase the
chain anchored at RSAFTOFTE. To find the frame
of FRMTEs for some page of FRMTEs, say
300_01000000), one would determine how many of
these chained FRMTEs to chase:
300_01200000 - PFXFTBLG, which is probably
300_01200000 - 300_00000000 = 01200000
shift right 12 bits = x1200
So, one would chase x1200 FRMTENXT pointers to
get to the FRMTE with FRMPGNUM = x11FF.
RSASTOFTE anchors an analogous chain for the FRMTEs
of the frames that contain the SXSTB.
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' FRMKEY Mask to isolate key
from FRMDUMP. Bits 0-6 for key +
FRC bits.
.... ...1 FRMDUMPD X'01' FRMDUMPD 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.
Redefinition for stand-alone dump crashkernel memory FRMTEs
0000 0 Signed 4 * Reserved for IBM use.
0004 4 Signed 4 * FRMID=FRMIDSDMP 'SDMP'.
0008 8 Signed 4 * Reserved for IBM use.
000C 12 Signed 4 FRMSDMPPG Page index into the stand-alone
dump crashkernel reserved area.
0010 16 Address 8 * Reserved for IBM use.
0018 24 Signed 8 * FRMSTATEG: FRMCP only.
| |