//* //*++ USERMOD(TMVT819) /* REWORK(20100715) */ . //*++ VER (S218) //* FMID(EBB2218) //* PRE (US04999,US06401,US06958) //* /* //* PROBLEM DESCRIPTION(S): //* TMVT819 - //* Unable to log on to TSO if time sharing region extends //* above 8 MB (X'800000'). Logon attempts fail with //* msgIKJ601I, msgIEA701I, msgIEA702I, abend305-1, //* abend30A-3, abend806-1 and other errors. After logon //* failure, the TSO time sharing controller may be hung //* and will not shut down. //* //* TSO region control task quiesce routine IKJEAR02 saves //* time sharing region storage allocation address and //* length information for a user being swapped out in the //* user storage map (UMSM). Each 24-bit address and length //* is divided by 256 (shifted right eight bits). The //* resulting 16-bit value is stored into a two-byte entry //* in the UMSM; for each allocation address/length pair, //* there is a pair of two-byte UMSM entries. //* //* When a TSO user is swapped back in, the region control //* task restore routine IKJEAR03 rebuilds FBQEs from free //* space information saved in the UMSM. Each two-byte UMSM //* entry is retrieved by IKJEAR03 using a load halfword //* (LH) instruction. This is not a problem as long as //* addresses are less than X'800000'. Once an address is //* X'800000' or greater, however, the two-byte value saved //* in the UMSM becomes X'8000' or greater, which looks to //* LH like a negative number. As a result, the presumed //* "sign" bit is propagated leftward, so a value that //* should have been X'00008000' becomes X'FFFF8000'. This //* value is shifted left eight bits to restore the original //* 24 bit address, becoming X'FF800000'. Address //* references using the reconstructed value produce the //* expected result, but arithmetic operations that assume //* X'00' in the high-order byte generate incorrect output. //* Reconstructed main storage supervision control blocks //* built with arithmetic using the defective values are //* invalid, leading to the abend305 and other main storage //* supervision errors. //* //* When a time sharing region is started, the region //* controller attaches a copy of the logon scheduler and //* swaps out the the region as a logon image, which is used //* to initialize the region when a new user attempts to log //* on. Invalid MSS control blocks built during restore of //* this logon image result in the abend305 during logon. //* //* In addition to IKJEAR03, IKJEAS02 (swap mainline) and //* IKJEAT07 (out of core abnormal termination) also use //* LH to retrieve UMSM fields without zeroing the high-order //* byte of the resulting 24-bit value. //* //* IKJEAR03 (restore), IKJEAS02 (swap mainline) and //* IKJEAT07 (out of core abnormal termination) are changed //* to ensure that spurrious sign propagation resulting from //* retrieving unsigned two-byte UMSM fields using LH is //* prevented by zeroing the high-order bits of resulting //* values. //* //* COMPONENT: 360S-CI555-EBB2218 //* //* APARS FIXED: TMVT819 //* //* SPECIAL CONDITIONS: //* ACTION: The TSO time sharing controller region must be //* stopped and restarted after installation of this user //* modification. //* //* DEPENDENCY: //* The OS/VS linkage editor HEWLF064 must be available //* to permit IKJEAR03, IKJEAS02 and IKJEAT07 to be expanded //* with a patch area. //* //* COMMENTS: //* LAST CHANGE: 2010/07/15 //* //* THE FOLLOWING MODULES AND/OR MACROS ARE AFFECTED BY THIS USERMOD: //* //* MODULES //* IKJEAR03 //* IKJEAS02 //* IKJEAT07 //* */. //*