Patch Name: PHKL_30073 Patch Description: s700_800 11.00 dyn semphores; big data space; msgmn; msgsnd Creation Date: 03/12/03 Post Date: 04/02/04 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: N/A Filesets: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_30073: CORRUPTION HANG PHKL_29080: HANG Application hang. Category Tags: defect_repair enhancement general_release critical halts_system corruption Path Name: /hp-ux_patches/s700_800/11.X/PHKL_30073 Symptoms: PHKL_30073: ( SR:8606322599 CR:JAGae85067 ) An application making use of the system V message queue facility (see msgget(2)) may hang. In addition, messages reported by the system to have been properly sent to a particular system V message queue may be lost. PHKL_29080: ( SR:8606306960 CR:JAGae69995 ) Applications may hang using Sys V message sends. PHKL_26136: ( SR:8606229781 CR:JAGad98832 ) Can not allocate new semaphores despite enough space being available. PHKL_25417: ( SR:8606198599 CR:JAGad67788 ) Can not allocate new semaphores despite enough space being available. PHKL_21039: The maximum number of IPC semaphores per set (SEMMSL) is presently a hard-coded value with a limit of 2048 in ./sys/sem.h.; it is not a kernel tunable. PHKL_21518: ( SR: 5003460949 DTS: JAGab15326 ) This is an enhancement for increasing the SysV IPC MSGMNB message queue capacity from a 16bit(ushort) limit to a 32bit(int) limit for re-compiled applications which are designed specifically to take advantage of this feature. The enhancement is contained in three patches; this one (SysV IPC changes) plus PHKL_21684 (pstat(2) support) and PHKL_21778 (new tunables range limits, used by SAM). PHKL_21684 must be installed for this patch to be enabled and it is strongly advised that all three patches be installed if this feature is desired. Without installing this patch and PHKL_21684, this change will have no impact on the system. PHKL_20901: (SR: 8606110995 CR: JAGab83745) Call to semget() with number of semaphores (nsems) set to zero correctly returns EINVAL but still allocates semaphore. PHKL_20229: ( SR: 8606107525 DTS: JAGab77768 ) This patch is one of 8 patches necessary to add support for the 3 Gb private address space feature. Defect Description: PHKL_30073: ( SR:8606322599 CR:JAGae85067 ) There is a race within the system V message queue facility wherein a given message queue can be used when it is allocated but before it is fully initialized. This may result in the corruption of the kernel control data for that particular message queue, as the initialization of a particular message queue can occur concurrently with its use. This corruption of kernel data fields for that particular message queue can cause the calling application to hang, as the message queue can be placed into an inconsistent state. Messages can be lost similarly: the kernel control data containing the number of messages on the queue can become corrupted. These conditions are quite rare and can only occur if the application passes into the message queue facility (via msgsnd(2), msgrcv(2), or msgctl(2)) a message queue id that is not the result of a matching msgget(2) call. Resolution: Proper synchronization is performed to ensure that a message queue must be fully initialized before it can be used. PHKL_29080: ( SR:8606306960 CR:JAGae69995 ) If during the usage of message operations, an application erroneously attempts a message send that is too large, the application can hang and become unkillable. This can happen only if the system and the application are setup in the following manner: Patches PHKL_26136, PHKL_26008 and PHKL_24487 need to be installed on the system to allow the tuning of the msgmnb >65535 (enable big message queues) and msgmax >65535 (allow big individual messages). The application must be compiled without the -D__BIGMSGQUEUE_ENABLED option and it attempts to enqueue a large single message >65535 bytes. Resolution: The application hang is due to the code not releasing the semaphore lock in the error reporting code. The resolution is to release this lock when reporting the error. PHKL_26136: ( SR:8606229781 CR:JAGad98832 ) The space allocated for use by semaphores becomes fragmented under heavy use of semaphores. Semaphore allocation may be prevented due to this fragmentation. Resolution: System V IPC semaphore allocation has been replaced by full dynamic allocation, so the memory space for semaphores is no longer limited to that allocated at boot time. PHKL_25417: ( SR:8606198599 CR:JAGad67788 ) The space allocated for use by semaphores becomes fragmented under heavy use of semaphores. Semaphore allocation may be prevented due to this fragmentation. Resolution: The semmap[] structure originally used to allocate a new semaphore is maintained unless there is no longer a memory chunk that can fit it due to fragmentation. At that point the needed chunk is dynamically allocated through malloc(). PHKL_21039: ( SR: 8606126584 DTS: JAGac57149 ) Description: Enhancement to the IPC semaphore sub-system: changes the SEMMSL hard-coded value of 2048 to a kernel tunable with a default value of 2048. Resolution: SEMMSL, the hard-coded max number of semaphores per ID, has been superceded by a new 'semmsl_override' kernel tunable which will have a minimum (and default) value of 2048. SAM can increase the value of the new tunable up to a maximum of 10240. The value of SEMMSL read by pstat() will still correctly reflect the value set in semmsl_override. PHKL_21518: ( SR: 5003460949 DTS: JAGab15326 ) This patch, PHKL_21518, is the primary patch of a three-patch-set which, all together, increase the SysV IPC MSGMNB message queue capacity from the 16bit(ushort) limit of 65Kbytes to a 32bit(int) (64Mbyte core-hpux limit) maximum. The following patches are required: o PHKL_21518 (this patch): providing the core functionality for the enhancement o PHKL_21684, providing pstat(2) support o PHKL_21778, providing the new tunables limit values for SAM The following patch will make maintenence of the patch-set enhancement possible via SAM: o PHCO_21187 providing the necessary SAM upgrades To enable this enhancement after installing all of the above patches, user applications are required to either include a #define __BIGMSGQUEUE_ENABLED in every application or use a -D__BIGMSGQUEUE_ENABLED flag and then re-compile. Without this patch set, applications are limited to <=64k of message queue space. With this patch set installed, the limit is increased to <=64M. Not installing the PHKL_21518 (sysV_msg.o) patch will mean that the large message queue enhancement is not available. Resolution: After the above patch set is installed, the following guidelines, rules and issues will apply: Note; in this context: o 'small-queue' refers queues <=64Kbytes o 'big-queue' refers queues >64Kbytes o 'patch-set' refers to at least the minimum patch set of PHKL_21518 plus PHKL_21684 o Old 'small-queue' apps will run unaffected whether they are re-compiled or not. o New 'big-queue' apps can ignore the patch and run with the old 'small-queue' model and remain unaffected by the patches Application guidelines: ----------------------- o Read all applicable text in /usr/include/sys/ipc.h, /usr/include/sys/msg.h and the patch documents o New 'big-queue' apps can enable 32bit queues by #define __BIGMSGQUEUE_ENABLED PRIOR to ipc.h and msg.h #includes -OR- use -D__BIGMSGQUEUE_ENABLED when compiling o If an application attempts to use message queues larger than 64K (by defining __BIGMSGQUEUE_ENABLED) and the PHKL_21684 (pstat.o) patch is missing, an EINVAL error code will be returned (from msgget(2)) and a message will be placed into the system log (just on first occurrence). o Messages can be passed between new 'big-queue' apps and old 'small-queue' apps but with some restrictions o If a new 'big-queue' app (as root) expands its queue from less-than max ushort [created as a 'small-queue'] to greater-than maxushort, that queue will then automatically be re-tagged as a 'big-queue'. o Old apps using msgctl(IPC_STAT) will report msg_qbytes and msg_cbytes as 'full' for any real value of msg_qbytes/msg_cbytes => max ushort; thus the msgctl(IPC_STAT) result can 'under-report' msg_qbytes and/or msg_cbytes. However, pstat results will always correctly report msg_cbytes. It is not known how apps may interpret this condition. o Applications using queues >64k may misbehave where that queue is used in common with a client or other application that was not re-compiled with the #define __BIGMSGQUEUE_ENABLED. o There is no effect on any program if the admin keeps the max queue size <=64K. Even where the admin configures the message queue size >64K, there is no effect as long as no programs sharing a common message queue have been recompiled with the special symbol __BIGMSGQUEUE_ENABLED. o A program compiled with __BIGMSGQUEUE_ENABLED defined (and the patch-set installed) which is later executed on a system without the patch-set may: o fail a msgget(IPC_CREAT) with errno set to ENOENT o or succeed in the msgget() if the queue already exists, but it will not grow beyond MSGMNB/64K in size or return zero for queue sizes from msgctl(IPC_STAT) o or set the queue size via msgctl(IPC_SET) to some arbitrary size (<=64K) because the new fields were not initialized int the old structure. o The "GROUP", "CBYTES", "QNUM" and "QBYTES" fields listed by the 'ipcs' command may "run together" when the queue size exceeds 999,999 PHKL_20901: (SR: 8606110995 CR: JAGab83745) An uninitialized variable (sem_perm.mode) caused the semaphore to still remain allocated after calling procedure ipcgetperm(). Resolution: This variable is now correctly being reset to 0 after calling ipcgetperm(). PHKL_20229: ( SR: 8606107525 DTS: JAGab77768 ) This is one of 8 patches necessary to add support for the 3 Gb private address space feature. This feature allows a process to have a private 3rd quadrant (normally the 3rd quadrant, which is a 1 Gb range of address space from 0x80000000 to 0xC0000000, is used for shared objects). The chatr command must be used to enable this feature for an executable (chatr +q3p enable ). Note that this feature is only enabled for 32 bit processes running on the 64 bit version of HP-UX. The other 7 patches necessary to enable this feature are PHKL_20222, PHKL_20223, PHKL_20224, PHKL_20225, PHKL_20226, PHKL_20227 and PHKL_20228. Each patch may be installed independently of the others - if enabling the 3 Gb private address space feature is not desired. If fewer than all 8 patches are installed, the 3 Gb private address space feature will not be enabled. The code in this patch that is part of this feature will not have any impact on the system until all 8 patches are installed. Resolution: A subset of the code to support the 3 Gb private address space feature was added. When all 8 patches are installed the following code changes to support this feature will have been added: 1) Code to recognize the request for a private 3rd quadrant (Q3) during exec() of an executable. An executable that requests a private 3rd quadrant will be referred to as a q3p process below. 2) Code to prevent allocation of shared objects in q3p processes. 3) Code to allow data to extend over the 2nd/3rd quadrant boundary for q3p processes. 4) Code to put the stack for the primary thread in the 3rd quadrant for q3p processes. 5) Code to map a shared library into the private address space if there is no more room in the 4th shared quadrant for q3p processes. Enhancement: No (superseded patches contained enhancements) PHKL_29080: Enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 5003460949 8606107525 8606110995 8606126584 8606198599 8606229781 8606306960 8606322599 Patch Files: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/conf/h/ipc.h /usr/conf/h/msg.h ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/ipc.h /usr/include/sys/msg.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libhp-ux.a(sysV_ipc.o) /usr/conf/lib/libhp-ux.a(sysV_msg.o) /usr/conf/lib/libhp-ux.a(sysV_sem.o) /usr/conf/lib/libhp-ux.a(sysV_shm.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/master.d/sysvipc-tune /usr/conf/space.h.d/sysvipc-tune.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libhp-ux.a(sysV_ipc.o) /usr/conf/lib/libhp-ux.a(sysV_msg.o) /usr/conf/lib/libhp-ux.a(sysV_sem.o) /usr/conf/lib/libhp-ux.a(sysV_shm.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/master.d/sysvipc-tune /usr/conf/space.h.d/sysvipc-tune.h what(1) Output: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/conf/h/ipc.h: ipc.h $Date: 2000/06/05 13:48:46 $Revision: r11ros/4 PATCH_11.00 (PHKL_21518) MSGMNB /usr/conf/h/msg.h: msg.h $Date: 2000/06/22 10:02:44 $Revision: r11ros/4 PATCH_11.00 (PHKL_21518) MSGMNB ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/ipc.h: ipc.h $Date: 2000/06/05 13:48:46 $Revision: r11ros/4 PATCH_11.00 (PHKL_21518) MSGMNB /usr/include/sys/msg.h: msg.h $Date: 2000/06/22 10:02:44 $Revision: r11ros/4 PATCH_11.00 (PHKL_21518) MSGMNB OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libhp-ux.a(sysV_ipc.o): sysV_ipc.c $Date: 2003/12/02 11:09:31 $Revision: r11 ros/3 PATCH_11.00 (PHKL_30073) /usr/conf/lib/libhp-ux.a(sysV_msg.o): sysV_msg.c $Date: 2003/12/02 11:09:31 $Revision: r11 ros/10 PATCH_11.00 (PHKL_30073) /usr/conf/lib/libhp-ux.a(sysV_sem.o): sysV_sem.c $Date: 2002/01/18 15:11:40 $Revision: r11 ros/11 PATCH_11.00 (PHKL_26136) /usr/conf/lib/libhp-ux.a(sysV_shm.o): sysV_shm.c $Date: 2000/06/05 13:48:46 $Revision: r11 ros/7 PATCH_11.00 (PHKL_21518) MSGMNB OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/master.d/sysvipc-tune: sysvipc-tune $Date: 2000/09/13 17:03:15 $Revision: r 11ros/1 PATCH_11.00 (PHKL_21039) /usr/conf/space.h.d/sysvipc-tune.h: sysvipc-tune.h $Date: 2000/09/13 17:03:15 $Revision: r11ros/1 PATCH_11.00 (PHKL_21039) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libhp-ux.a(sysV_ipc.o): sysV_ipc.c $Date: 2003/12/02 11:09:31 $Revision: r11 ros/3 PATCH_11.00 (PHKL_30073) /usr/conf/lib/libhp-ux.a(sysV_msg.o): sysV_msg.c $Date: 2003/12/02 11:09:31 $Revision: r11 ros/10 PATCH_11.00 (PHKL_30073) /usr/conf/lib/libhp-ux.a(sysV_sem.o): sysV_sem.c $Date: 2002/01/18 15:11:40 $Revision: r11 ros/11 PATCH_11.00 (PHKL_26136) /usr/conf/lib/libhp-ux.a(sysV_shm.o): sysV_shm.c $Date: 2000/06/05 13:48:46 $Revision: r11 ros/7 PATCH_11.00 (PHKL_21518) MSGMNB OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/master.d/sysvipc-tune: sysvipc-tune $Date: 2000/09/13 17:03:15 $Revision: r 11ros/1 PATCH_11.00 (PHKL_21039) /usr/conf/space.h.d/sysvipc-tune.h: sysvipc-tune.h $Date: 2000/09/13 17:03:15 $Revision: r11ros/1 PATCH_11.00 (PHKL_21039) cksum(1) Output: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1417744864 5980 /usr/conf/h/ipc.h 1462845435 9015 /usr/conf/h/msg.h ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1417744864 5980 /usr/include/sys/ipc.h 1462845435 9015 /usr/include/sys/msg.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 750926768 2080 /usr/conf/lib/libhp-ux.a(sysV_ipc.o) 340104672 16568 /usr/conf/lib/libhp-ux.a(sysV_msg.o) 2264803177 21220 /usr/conf/lib/libhp-ux.a(sysV_sem.o) 1112282698 11048 /usr/conf/lib/libhp-ux.a(sysV_shm.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 1530785713 349 /usr/conf/master.d/sysvipc-tune 1858305369 246 /usr/conf/space.h.d/sysvipc-tune.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 2471732212 4280 /usr/conf/lib/libhp-ux.a(sysV_ipc.o) 715852933 43976 /usr/conf/lib/libhp-ux.a(sysV_msg.o) 293780355 48648 /usr/conf/lib/libhp-ux.a(sysV_sem.o) 4076208488 26728 /usr/conf/lib/libhp-ux.a(sysV_shm.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 1530785713 349 /usr/conf/master.d/sysvipc-tune 1858305369 246 /usr/conf/space.h.d/sysvipc-tune.h Patch Conflicts: None Patch Dependencies: s700: 11.00: PHKL_18543 s800: 11.00: PHKL_18543 Hardware Dependencies: None Other Dependencies: PHKL_21518: PHKL_21684, PHKL_21778, and PHKL_21518 together provide an enhancement to increase the SysV IPC MSGMNB message queue capacity. To enable the enhancement, both PHKL_21684 and PHKL_21518 must be installed, and PHKL_21778 is required if SAM support is desired to modify system tunables. Each may be installed independently of the others. Supersedes: PHKL_20901 PHKL_20229 PHKL_29080 PHKL_26136 PHKL_25417 PHKL_21518 PHKL_21039 Equivalent Patches: None Patch Package Size: 150 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHKL_30073 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_30073.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_30073. If you do not wish to retain a copy of the original software, include the patch_save_files option in the swinstall command above: -x patch_save_files=false WARNING: If patch_save_files is false when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. For future reference, the contents of the PHKL_30073.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_30073.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_30073.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: Max number of semas per ID -------------------------- For the PHKL_21039 patch, SAM is used to change the maximum number of semas per ID (previously SEMMSL) by adjusting the new 'semmsl_override' tunable. The SEMMNS (max number of semas in the system) tunable value MUST be greater than or equal to 'semmsl_override' otherwise applications will be limited to the smaller of the two values. SEMMNS MAX # of semas in the system [must be >= SEMMSL] SEMMSL MAX # of semas per ID [presently 64 IDs MAX] To make the semas-per-ID (previously SEMMSL) adjustable, the 'semmsl_override' kernel tunable has been added. The value can be set and adjusted up from (the minimum and default value of 2048) to an arbitrary maximum of 10240 (0x2800). This global 'semmsl_override', is the only way to adjust the maximum number of semas per ID and the changes take effect only after re-boot. Because a new tunable is being added, it is highly reccommended that you install patch PHCO_19047, which has the necessary SAM upgrades. Without the upgrades, SAM will still be aware of the new tunable but will not be aware of the new range limitations for that tunable. Therefore, SAM will show a warning message to this effect when attempting to access the tunable. With PHCO_19047 installed, SAM will automatically update the range values. The tunable can still be set by SAM using values within the range limits specified in the /usr/conf/master.d/sysvipc-tune file but it is not the reccommended procedure as SAM will not perform the necessary checks and SAM will not guarantee a successful kernel creation if the tunable is modified. SysV IPC MSGMNB message queue capacity -------------------------------------- o The PHKL_21518 (sysV_msg.o) (or superseding) patch and the pstat.o patch (PHKL_21684 or superseding patch) MUST BOTH be installed on the system together to enable the MSGMNB enhancement. o It is also highly recommended that patches PHKL_21778 (core-hpux) PHCO_21187 (with the necessary SAM enhancements) also be installed. o Installing only the PHKL_21778 (core-hpux) patch will allow the admin to set MSGMNB >64k but the change will have no effect as the kernel will hard-limit the value to 64k. o Applications compiled with __BIGMSGQUEUE_ENABLED will not run on systems which do not have the appropriate patches installed. o Not having either the PHKL_21518 (sysV_msg.o) patch or the PHKL_21684 (pstat.o) patch installed means that applications compiled with the #define __BIGMSGQUEUE_ENABLED may not run or may not run correctly. o Not installing PHKL_21778 (core-hpux) and PHCO_21187 (SAM) patches will make it more difficult to adjust the kernel message tunables. o If an application attempts to use message queues larger than 64K (by defining __BIGMSGQUEUE_ENABLED) and the PHKL_21684 (pstat.o) companion patch is missing, an EINVAL error code will be returned (from msgget(2)) and a message will be placed into the system log (but only on the first occurrence). Kernel Tunables: ---------------- o Follow the procedures below for setting the kernel tunables and tunable ranges using SAM. o Follow these guidelines for setting new message queue kernel tunables: o MSGMNB [max number of bytes per queue] Set >= the largest queue required. If single large messages are expected, also set >= the largest single message expected. o MSGMAX [max message size in bytes] Set <= MSGMNB dependent on the need to use single large messages which may fill the queue. o MSGTQL [max number of message headers] Set >= the largest number of messages expected. o MSGSSZ [number of bytes in one "segment"] MSGSEG [number of segments] MSGSSZ*MSGSEG [total message storage space] o Set MSGSSZ*MSGSEG >= at least to the maximum a single large message queue can hold. o If multiple large queues are expected, that will need to be factored in. o MSGSSZ is the "granularity" for message storage. If MSGSSZ=256 then a 257-byte message will consume two segments. o Note that MSGSEG must be < 32768 so that if 32M were allocated, the segment size MSGSSZ would need to be set to 1K bytes. Updating MSGMNB/MSGMAX Tunable Ranges: -------------------------------------- Presently, the "range" values in master/core-hpux will prevent users of SAM from configuring MSGMNB and MSGMAX to >64K. In order to allow larger queues, the admin should install PHCO_21187 (SAM) patch as a companion to PHKL_21778 (core-hpux) which will automatically update SAM's range values. If that is not desired, the admin can follow the following special procedure outlined below: SAM, as installed on customer systems, may prevent the administrator from selecting queue (and message) sizes in excess of 64Kbytes. This is due to the range values in /usr/conf/master.d/core-hpux or SAM's "params.tx" file (significant in older versions of SAM). We are providing the PHKL_21778 (core-hpux) patch for the "core-hpux" files (for both 32bit and 64bit kernels). However, due to SAM version differences, the customer has several procedural options, as described below. o If installation of the PHKL_21778 (core-hpux) patch to /usr/conf/master.d/core-hpux is desired, follow these steps: make a backup copy of /usr/conf/master.d/core-hpux install the patch inspect changes to /usr/conf/master.d/core-hpux o Note that installation of this patch will overwrite any local changes, these should be merged back in. o This particular patch will make the following changes: Old: *range msgmax<=64*1024 *range msgmnb<=64*1024 New: *range msgmax<=64*1024*1024 *range msgmnb<=64*1024*1024 o Any other changes are due to: having not been previously up-to-date with superseded patches to this file; superseding patches to this file; or prior local changes to this file. o Once statisfied with /usr/conf/master.d/core-hpux, perform one of the following procedures. a) If the PHCO_21187 (SAM) patch is installed, the procedure is: - make backup copy of /var/sam/boot.config - execute /usr/sam/lbin/getkinfo -b - inspect changes made to /var/sam/boot.config o The "KC_PARAM_MAX" values for "msgmax" and "msgmnb" should have change from 65536 (64Kbytes) to 67108863 (64Mbytes). If there are any other changes to this file, they represent additional core-hpux changes from superseding patches, or changes which from superseded patches, but not rolled into SAM. o Start SAM, change MSGMAX/MSGMNB kernel parameters to desired values. These values will depend upon the application's needs. You may also need to adjust the MSGSEG/MSGSSZ parameters to allocate more memory for total message storage (the upper limits for these do not change). Then regenerate and reboot the kernel in the usual manner. or: b) If the PHCO_21187 (SAM) patch is not installed, install it then follow procedure for "a". or: c) If installing the PHCO_21187 (SAM) patch is not desired, first: o Edit the /usr/sam/lib/kc/params.tx file to change the upper limits: Old: msgmax:65536:0:Message:8192:Message Max Size... msgmnb:0x10000:0:Message:16384:Max Number ... New: msgmax:67108863:0:Message:8192:Message Max Size... msgmnb:67108863:0:Message:16384:Max Number... o Do not change any other message queue parameters. o After editing, follow the procedure under "a", as if the patch was installed. o If installation of the PHKL_21778 (core-hpux) patch is not desired (despite the recommendation that it be installed), then the administrator will need to edit /usr/conf/master.d/core-hpux directly to change the upper limits: Old: *range msgmax<=64*1024 *range msgmnb<=64*1024 New: *range msgmax<=64*1024*1024 *range msgmnb<=64*1024*1024 o Once this is done, follow one of the above procedures, "a", "b", or "c", as appropriate. o If SAM is not the means for kernel configuration at the site, the PHKL_21778 (core-hpux) patch (or editing core-hpux may not be needed. In this case the tunables for MSGMNB, MSGMAX, MSGSEG, and MSGSSZ should be modified, and the kernel regenerated and rebooted, in the usual manner for the site. (For example: edit the /stand/system file then build a new kernel via 'mk_kernel -s /stand/system'). The maximum for MSGMNB and MSGMAX is now 67108863 rather than 65536. 3GB Private Address Space ------------------------- This patch contains part of the enhancement to enable the 3 Gb private address space feature. It is one of 8 patches. The other 7 patches necessary to enable this feature are PHKL_20222, PHKL_20223, PHKL_20224, PHKL_20225, PHKL_20226, PHKL_20227 and PHKL_20228. Each patch may be installed independently of the others - if enabling the 3 Gb private address space feature is not desired. If fewer than all 8 patches are installed, the 3 Gb private address space feature will not be enabled. The code in this patch that is part of this feature will not have any impact on the system until all 8 patches are installed. In order to be able to use this feature you will need to reconfigure the kernel with a larger value for the kernel configurable variable "maxdsiz". In order to do this with SAM, you will also need to install patch PHKL_20174. Without PHKL_20174 installed SAM will not allow maxdsiz to exceed ~1.9 Gb. Note that if PHKL_20174 is not installed it is still possible to manually configure a kernel with a larger value of maxdsiz (up to 3 Gb) using config(1M).