A fix is available
APAR status
Closed as program error.
Error description
Incompatible results may result from VSMLIST when non-executable memory is allocated. Two subpool descriptors may be returned for the same subpool/key/TCB, but the VSMLIST invoker might not be set up to process it.
Local fix
Problem summary
**************************************************************** * USERS AFFECTED: Users of HBB77E0 * **************************************************************** * PROBLEM DESCRIPTION: VSMLIST was incompatibly changed at * * HBB77C0. * **************************************************************** Instruction execution protection (IEP) was introduced in z/OS V2R2 for machines that support it. VSMLIST was changed at V2R4 to report on storage areas that are subject to IEP. When VSMLIST SPACE=ALLOC/FREE is invoked for private area storage it is possible that two subpool descriptors will be returned for the same subpool/key/task, one for the non-IEP allocated blocks and a second for the IEP allocated blocks. This may cause an application to fail to process areas of storage if the application was designed to only expect a single subpool descriptor.
Problem conclusion
To address this incompatibility, the following new keywords are introduced on VSMLIST: MERGE=YES|NO and ATTRBITS. When MERGE=YES is specified or defaulted, VSMLIST returns at most one subpool descriptor per subpool/key/task. When ATTRBITS is specified, additional information is included in the low order 3 bits and high order bit of the allocated block descriptor and size. Bit 29 of the allocated block address contains the IEP status of the block. Bits 0, 30 and 31 are set as described under REALPGFMSIZE. The VSMLIST invoker is responsible for using VSMD_Area_Mask and VSMD_Size_Mask to mask the allocated block address and size prior to use. z/OS MVS Programming Reference VOL 4 SA23-1375-xx | MERGE=YES | MERGE=NO | Indicates whether there should only be one | subpool descriptor per | subpool/key/task. When MERGE=NO is specified, | if there are some | storage blocks associated with a subpool/key/task that are | subject to Instruction Execution Protection (IEP) and | some that are not, then two subpool descriptors will | be generated. VSMDIEP in the IGVVSMD data area will be | set in the subpool descriptor | associated with the blocks subject to IEP. | When MERGE=YES is specified | (or defaulted) only one subpool descriptor will be generated. | In this case, the invoker can distinguish IEP from | non-IEP blocks by specifying ATTRBITS on the VSMLIST | invocation and testing bit 29 of the address field of | the allocated block descriptor. REAL31 ,REAL64 ,REALPGFMSZ | ,ATTRBITS | Indicates that the high order bit and the 3 lower order bits of the address field of the allocated block descriptor should be set to show the value | specified on the LOC and EXECUTION parameter of the GETMAIN, STORAGE, or CPOOL macro invocation used to obtain that storage area. If the storage block was allocated using any LOC specification of GETMAIN or STORAGE, except for LOC=(*,24), one or more of these indicators are turned on. If the storage block was allocated using the LOC=(*,24) specification of |GETMAIN or STORAGE, the indicators (other than bit 29) are turned off. Note: The asterisk character (*) indicates that any of the allowable values for the first suboperand of the LOC keyword. REAL31 If the storage block is backed in real 31-bit or 64-bit storage, the high bit indicator is on (one). If the storage block is backed in real 24-bit storage, the high bit indicator is off (zero). The low bit and second lowest bit indicators are always off. REAL64 If the storage block is backed in real 64-bit storage, the low bit indicator is on (one) and the high bit indicator is off (zero). If the storage block is backed in real 31-bit storage, the high bit indicator is on (one) and the low bit indicator is off (zero). If the storage block is backed in real 24-bit storage, the high bit indicators are off (zero). The 2nd lowest bit indicator is always off (zero). REALPGFMSZ Specifies the following indicators: - If the storage block was obtained with the PAGEFRAMESIZE1MB parameter, the second lowest bit indicator is on (one), the low bit indicator is on (one) and the high bit indicator is off (zero). - If the storage block is backed in real 64-bit storage but was not obtained with the PAGEFRAMESIZE1MG parameter, the low bit indicator is on, the 2nd lowest bit indicator is off (zero) and the high bit indicator is off (zero). - If the storage block is backed in real 31-bit storage, the high bit indicator is on (one), the low bit indicator is off (zero) and the 2nd lowest bit indicator is off (zero). - If the storage block is backed in real 24-bit storage, the high bit indicator, the low bit indicator and the second lowest bit indicators are off (zero). | ATTRBITS | Returns information regarding whether the allocated block | is subject to Instruction Execution Protection (IEP) | by setting bit 29 in the address field of the allocated | block descriptor. Additionally, bits 0,29-31 of the | allocated block size may be set in the future to indicate | additional attributes of the allocated block. The invoker | is responsible for clearing bits 0, 29-31 of both | the allocated | block address and size in order to get the address | and size of the block. The behavior of the REALPGFMSIZE | keyword is obtained when ATTRBITS is specified, namely bits | 0, 30 and 31 in the allocated block address are set as | described under REALPGFMSIZE. Note: | 1. If REAL31, REAL64, REALPGFMSZ and ATTRBITS are not specified, then none of these indicators are turned on. 2. The REAL31 parameter provides the same function as the deprecated REAL parameter, which is still supported by VSMLIST. z/OS Data Areas Volume 4 GA32-0938-xx VSMD Mapping 3 (3) ADDRESS 1 VSMDKEY STORAGE KEY (BITS 0 - 3) 3 (3) BITSTRING 1 VSMDFLGS MISCELLANEOUS FLAGS .... 1... VSMDOWN X'08' IF ONE, THE SUBPOOL IS OWNED .... .1.. VSMDSHR X'04' IF ONE, THE SUBPOOL IS SHARED .... ..1. VSMDINV X'02' IF ONE, THE SUBPOOL IS INVALID | .... ...1 VSMDIEP X'01' IF ONE, THE STORAGE IS NON | EXECUTABLE. Only generated when MERGE=NO | is specified 4 (4) ADDRESS 4 VSMDTCBP ADDRESS OF OWNING ... 0 (0) ADDRESS 4 VSMDAREA Address of block | (0) BITSTRING | 1... .... VSMDR31 Real 31 indicator | (1) BITSTRING | .... .... | (2) BITSTRING | .... .... | (3) BITSTRING | .... .1.. VSMDAIEP Non-executable | .... ..1. VSMDLGPG 1M page | .... ...1 VSMDR64 Real 64 z/OS MVS Data Areas Volume 1 GA32-0935-xx GDA Mapping Only the following fields are part of the programming interface information: ... | Gda_VSMLISTMergeAttrBits_Supported 424 (1A8) BITSTRING 1 GDAFLAGS0 Flags ... .... 1... GDA_RUCSA_PROCESSED X'08' Indicates whether the RUCSA keyword was processed yet. Only off during early IPL/NIP | .... .1.. Gda_VSMLISTMergeAttrBits_Supported X'04'x | Indicates | whether VSMLIST MERGE= and ATTRBITS | ATTRBITS are available. Note that | the feature is available POST HBB77E0 GA.
Temporary fix
Comments
APAR Information
APAR number
OA64875
Reported component name
VSM - VIRT STOR
Reported component ID
5752SC1CH
Reported release
7E0
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2023-05-15
Closed date
2023-07-26
Last modified date
2023-09-01
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UJ93310
Modules/Macros
BPXPRFVE CSVFORKM IEAIPL04 IEWLFORK IGVSLIS1 IGVSLIST IGVVSMD IHAGDA VSMLIST
| SA231375xx | GA320938xx | GA320935xx |
Fix information
Fixed component name
VSM - VIRT STOR
Fixed component ID
5752SC1CH
Applicable component levels
R7E0 PSY UJ93310
UP23/08/16 P F308
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU011","label":"Systems - zSystems software"},"Product":{"code":"SG19O"},"Platform":[{"code":"PF054","label":"z Systems"}],"Version":"7E0"}]
Document Information
Modified date:
01 September 2023