PJ37995: Allow 64-bit programs to run in 2-4GB address range to improve system performance.

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

APAR status

  • Closed as program error.

Error description

  • See Problem Summary.
    

Local fix

  • na
    

Problem summary

  • APAR NUMBER:  PJ37995
    PRODUCT:  z/TPF
    FUNCTIONAL AREA:  INITIALIZATION
    SHIPPED IN PUT:  10
    
    ABSTRACT:
    Allow 64-bit programs to run in 2-4GB address range to improve
    system performance.
    
    PACKAGE CONTENTS:
    Source Segments:
    (C) base/cp/chsz.cpy
    (C) base/cp/cpse.cpy
    (C) base/cp/cpsl.cpy
    (C) base/cp/ct38.cpy
    (C) base/cp/ct40.cpy
    (C) base/cp/cth4.cpy
    (C) base/cp/ctin.cpy
    (C) base/cp/cudu.cpy
    (C) base/exp/CTAL.exp
    (C) base/include/tpf/c_eb0eb.h
    (C) base/include/tpf/sysapi.h
    (C) base/macro/ieqce2.mac
    (C) base/ol/ib01.cpy
    (C) base/rt/collatetrace.c
    (C) base/rt/cudapt.cpp
    (C) base/rt/cudask.cpp
    (C) base/rt/cvxs.c
    (C) base/rt/cvzi.asm
    (C) base/rt/trap_write.c
    
    Object Only Binaries:
    None.
    
    Configuration Independent Binaries:
    (C) base/lib/libCTPW.so
    (C) base/lib/libCUDA.so
    (C) base/lib/libCVXS.so
    (C) base/load/CTPW.so
    (C) base/load/CUDA.so
    (C) base/load/CVXS.so
    (C) base/load/CVZI.so
    (C) base/obj/cudapt.o
    (C) base/obj/cudask.o
    (C) base/obj/cvxs.o
    (C) base/obj/cvzi.o
    (C) base/obj/trap_write.o
    
    Support Files:
    base/lst/cudapt.lst
    base/lst/cudask.lst
    base/lst/cvxs.lst
    base/lst/cvzi.lst
    base/lst/CTPW.map
    base/lst/CUDA.map
    base/lst/CVXS.map
    base/lst/CVZI.map
    base/lst/trap_write.lst
    
    OTHER BINARIES TO BUILD: YES
    (C) <sys>/load/CPS0.so
    (C) <sys>/load/IPLB.so
    (C) <sys>/obj/cccpse.o
    (C) <sys>/obj/ccctin.o
    (C) <sys>/obj/ccnucl.o
    (C) <sys>/obj/ccthds.o
    (C) <sys>/obj/ccvage.o
    (C) <sys>/obj/collatetrace.o
    (C) <sys>/obj/iplb.o
    (C) <sys>/stdlib/libCTAL.so
    (C) <sys>/stdload/CTAL.so
    (C) os390/bin/ppcp.pds
    (C) os390/obj/ccmcdc.o
    (C) os390/obj/stpp.o
    
    COMMENTS:
    Address the following issues:
    
    1.Placing z/TPF 64-bit programs in the 2-4GB virtual address
    range allows certain systems to see a performance gain from
    improved branch prediction processing for programs executing
    within either of the 64-bit CRPAs.
    
    2.Update the following support areas that have specific checks
    that assume all addresses in 2-4GB range are not valid program
    addresses:
    
    Debugger support
    Performance Analyzer support
    Software Profiler support
    ZIDOT CREATE command processing
    ZDECB NEST command processing
    Online ECB trace formatting
    
    3.Remove the following obsolete ECB page 2 fields: CE2SGCRP64,
    CE2PGCRP64, CE2SG1MB, CE2PGH31, CE2SGH64, CE2PGH64, CE2SDPGS,
    CE2SDTIM, CE2SDCNT, and CE2SDRESV. The information previously
    held in these fields was moved to the ECB process block fields
    such as IPROC_SGCRPA64 and IPROC_PGCRPA64.
    
    4.Update various parts of dump processing to handle program
    addresses in the 2-4GB address range. Correct bug in dump
    override extensions processing that incorrectly sets up
    PFXERSVA (ECB SVM and EVM address fields) from ECB page 1 when
    the required information is actually in ECB page 2.
    

Problem conclusion

  • SOLUTION:
    In order to allow for valid virtual addresses from 2-4GB the
    following changes were required:
    
    ib01.cpy (IPLB) - Build a SVM segment table for addresses 2-4GB.
    
    ctin.cpy - After calling CT38 routine, check if 64-bit CRPAs
    were allocated in 2-4GB range. If not, issue warning message to
    console.
    
    ct38.cpy (CCCTIN csect) - Check if the combined size of the 2
    64-bit CRPAs fits in the 2-4GB address range. There will be no
    overlap of 31-bit CRPA addresses and 64-bit CRPA addresses in
    terms of their offset into their specific 2GB range. To
    guarantee no overlap, the 64-bit CRPAs will be placed in the
    2-4GB range starting at an offset that equals then ending
    address of the 31-bit copy-on-write CRPA. This means that the
    combined size of the 64-bit CRPAs must be less than or equal to
    the following: 2GB - <ending address of 31-bit copy-on-write
    CRPA>.
    
    The 64-bit standard CRPA is allocated first in the 2-4GB range,
    followed by the 64-bit c-o-w CRPA. Memory configuration storage
    calculations in routine MCMEMREQ has been updated to include
    storage required for all ECBs having an additional 16KB segment
    table to map addresses in the 2-4GB range.
    
    ct40.cpy (CCCTIN csect) - Allocate additional segment table for
    2-4GB EVM address range. If 64-bit CRPAs are in 2-4GB range,
    handle setting up EVM 64-bit copy-on-write CRPA page tables.
    Update DSTOC macro service routine to handle putting 64-bit
    CRPAs in 2-4GB range. Update INITEVMDAT routine to set up each
    ECB's EVM second region third entry with segment table address
    for 2-4GB.
    
    cth4.cpy (CCTHDS csect) - Update CTH4CLHV routine to handle
    initializing 64-bit copy-on-write DAT table entries, if the
    CRPA is in the 2-4GB range, for an ECB that was previously a
    thread ECB.
    
    cpse.cpy (CCCPSE csect) - Update dump formatting to eliminate
    bit 32 being set in last 10 branch trace entries display when
    branch address actually resides in 0-2GB address range. Now bit
    32 is only set for branch addresses in the 2-4GB address range.
    
    cpsl.cpy (CCCPSE csect) - Update dump formatting for ECB stack
    frame formatting to detect program linkage addresses in the
    2-4GB address range. Update macro trace entry pre-formatting
    routine CPSLMFMT to handle program
    addresses in the 2-4GB address range. Update dump extension
    processing to correct an error below label DECBOK that was
    incorrectly setting up PFXERVAS fields from ECB page 1 rather
    than ECB page 2 field CE2VAS.
    
    cudu.cpy (CCVAGE csect) - Update performance analyzer routine
    CUDPAWR to detect an event address in the 2-4GB address range.
    
    cvxs.c (ZDECB NEST) - Update ZDECB NEST processing to detect
    program linkage addresses that are in the 2-4GB address range.
    
    cvzi.asm (ZIDOT CREATE) - Allow creation of a dump override
    that resides in 2-4GB address range if the dump override
    addresses reside in 64-bit CRPAs.
    
    cudapt.cpp (Debugger support) - Update debugger support routine
    UDUT_VerifyPatAddress() to detect program address in 2-4GB
    address range when 64-bit CRPAs are in that address range.
    
    cudask.cpp (Debugger support) - Update debugger support routine
    UDSK_GetReturnAddr() to handle program return address that
    resides in the 2-4GB address range.
    
    trap_write.c (Software Profiler support) - Update profiler
    support code to detect program linkage addresses in the 2-4GB
    address range.
    
    cformattrace.cpp (Trace formatting) - Update tracing support
    code to detect program linkage addresses in the 2-4GB address
    range.
    
    COREQS: NO
    None.
    
    MIGRATION CONSIDERATIONS: YES
    Functional, automation, and operation changes:
    New message: CT380001W
    
    Performance or tuning changes:
    This SPE can provide performance improvement on systems that
    have a high amount of program execution within either of the
    64-bit CRPAs (typically C/C++ programs).
    
    
    
    BUILD COMMANDS AND INSTRUCTIONS: YES
    #maketpf commands for linux
    maketpf -f CTAL collatetrace.o
    maketpf -f CPS0 cccpse.o ccctin.o ccnucl.o ccthds.o ccvage.o
    maketpf -f IPLB iplb.o
    maketpf -f CVZI cvzi.o
    maketpf -f CVXS cvxs.o
    maketpf -f CUDA cudapt.o cudask.o
    maketpf -f CTPW trap_write.o
    maketpf CTAL link TPF_VERIFY_LINK_REFS=NO
    maketpf CPS0 link
    maketpf IPLB link
    maketpf CVZI link
    maketpf CVXS link
    maketpf CUDA link TPF_VERIFY_LINK_REFS=NO
    maketpf CTPW link TPF_VERIFY_LINK_REFS=NO
    maketpf CTAL link
    maketpf CUDA link
    maketpf CTPW link
    #maketpf commands for z/OS
    maketpf -f ppcp ccmcdc.o stpp.o
    maketpf ppcp link
    
    UPDATED INFORMATION UNITS: YES
    z/TPF and z/TPFDF Migration Guide
    z/TPF and z/TPFDF Migration Guide: PUT 2 and Later
    z/TPF and z/TPFDF System Generation
    z/TPF Concepts and Structures
    z/TPF Main Supervisor Reference
    z/TPF Messages (Online, SQLCODEs, and errno Values)
    z/TPF Program Development Support Reference
    
    See your IBM representative if you need additional information.
    
    DOWNLOAD INSTRUCTIONS:
    http://www.ibm.com/software/htp/tpf/maint/maintztpf.html
    
    APAR URL:
    http://www.ibm.com/software/htp/tpf/ztpfmaint/put10/PJ37995.htm
    

Temporary fix

Comments

APAR Information

  • APAR number

    PJ37995

  • Reported component name

    Z/TPF

  • Reported component ID

    5748T1501

  • Reported release

    110

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-07-22

  • Closed date

    2013-01-17

  • Last modified date

    2013-01-21

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Publications Referenced
SK2T8062        

Fix information

  • Fixed component name

    Z/TPF

  • Fixed component ID

    5748T1501

Applicable component levels

  • R110 PSY

       UP



Rate this page:

(0 users)Average rating

Document information


More support for:

TPF
z/TPF

Software version:

110

Reference #:

PJ37995

Modified date:

2013-01-21

Translate my page

Machine Translation

Content navigation