Patch Name: PHKL_30977 Patch Description: s700_800 11.11 vPars panic;Syscall cumulative;FSS;msem_lock Creation Date: 04/05/26 Post Date: 04/07/28 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: OS-Core.CORE-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_27172: PANIC Category Tags: defect_repair enhancement general_release critical panic manual_dependencies Path Name: /hp-ux_patches/s700_800/11.X/PHKL_30977 Symptoms: PHKL_30977: ( SR:8606352915 CR:JAGaf13710 ) The msem_lock(2) function intermittently fails with EFAULT. PHKL_30539: ( SR:8606275342 CR:JAGae39417 ) This product update is a member of a set needed to enable the optional HP-UX VFS-AdvSysCall and HP-UX FUSER-Enh features. Upon installation, the HP-UX VFS-AdvSysCall and HP-UX FUSER-Enh bundle (NEWFUSER11i) will install the full set of product update (including this one) to enable the VFS-AdvSysCall and FUSER-Enh features. If the HP-UX VFS-AdvSysCall or HP-UX FUSER-Enh product is not installed, this product update will have no impact on your system. PHKL_29628: ( SR:8606319246 CR:JAGae81736 ) Fair Share Scheduler (FSS) capping does not always work. PHKL_28475: ( SR:8606278471 CR:JAGae42529 ) Programs using swapcontext() or setcontext() can fail in a non-deterministic manner, due to incorrect values in general registers gr3-gr18 (the "callee-save" registers), if passing a context generated by a call to getcontext(). PHKL_27172: ( SR:8606258396 CR:JAGae22696 ) Applications that use system calls that pass more than four (4) arguments which worked on an earlier release of HP-UX may improperly return an EFAULT error. This only affects 32-bit applications running on 64-bit operating systems. ( SR:8606253687 CR:JAGae18035 ) The system can panic during boot when Virtual Partitions (vPars) are enabled. Note that this panic does not occur if the HP-UX Virtual Partitions product is not installed and in use. The stack trace looks like the following: panic: Data page fault panic+0x6c report_trap_or_int_and_panic+0x94 trap+0xedc nokgdb+0x8 PHKL_26467: ( SR:8606231620 CR:JAGae00858 ) Enhancement: This product update is a member of a set needed to enable "Release mode" functionality for PTHREAD_PROCESS_SHARED mutexes. The full list of product updates required for this feature are: PHKL_26467, PHKL_26468, PHKL_26469 and PHCO_26466. If any member of this set of product updates is not installed, this product update will have no impact on your system. PHKL_26240: ( SR:8606178913 CR:JAGad48138 ) Obtaining complete filesystem mount information can be a performance problem for some applications on systems having a large number of mounts. ( SR:8606232147 CR:JAGae01383 ) Enhancement: This product update is member of a set needed to improve the performance of application using shared mutexes. Performance of a PTHREAD_PROCESS_SHARED mutex unlock operation is slower than that of a PTHREAD_PROCESS_PRIVATE mutex, even in the non-contended (i.e., no waiters) case. The full list of product updates required for this feature are: PHKL_26316, PHKL_26240, and PHCO_25751. If any member of this set of product updates is not installed, this product update will have no impact on your system. PHKL_26042: ( SR:8606230908 CR:JAGae00146 ) This change provides pre-enablement of the Direct Register Access feature. This change will have no impact on your system until Direct Register Access is fully enabled. Defect Description: PHKL_30977: ( SR:8606352915 CR:JAGaf13710 ) The msem_lock(2) function will fail if protections in the TLB lose write access, or the protection id of the page does not match with the one in the control register. Resolution: Two lines of code were added in the 'msem_lock(2)' path that pre-reads the page before the failing instruction. A pre-read page fault will trap and cause a re-try instead of returning with error. PHKL_30539: ( SR:8606275342 CR:JAGae39417 ) This product update contains minor enhancements required to enable the HP-UX VFS-AdvSysCall and HP-UX FUSER-Enh. Resolution: This patch enables new functions that will be called by the HP-UX VFS-AdvSysCall and HP-UX FUSER-Enh. PHKL_29628: ( SR:8606319246 CR:JAGae81736 ) If an application is in a tight loop making many light weight system calls, this erroneously prevents the capping ability of teh Fair Share Scheduler from working properly. Resolution: The issue here is that light weight system calls ignore or don't handle the scheduler interrupt and continue to run. The fix is to acknowledge the scheduler interrupt faithfully and this is done by calling its heavy weight equivalent when appropriate which prevents this type of "runaway". PHKL_28475: ( SR:8606278471 CR:JAGae42529 ) According to the C runtime rules, the callee-save registers will always have their original values upon return from the kernel system call. However, these values are not copied into the kernel where they can be provided to getcontext(). Consequently, getcontext() cannot place the correct values in the user ucontext structure, and setcontext()/swapcontext() cannot restore them. The program proceeds with incorrect values and fails in a non-deterministic manner. Resolution: The system call entry path now copies these register values so that getcontext() can retrieve them. The system call return path now reloads these registers for setcontext() (or swapcontext()) calls. This ensures these registers have the same value as at the time the application called getcontext(), and resolves the failures. PHKL_27172: ( SR:8606258396 CR:JAGae22696 ) When 32-bit applications invoke system calls having more than four arguments on 64-bit kernels, these fifth, sixth, etc., arguments are stored in the outgoing parameters area of the caller's stack frame. There are situations where a register used to calculate the pointer to the arguments could have some residual left over bits in the high order 32-bits that will result in problems when attempting to retrieve those arguments. These extraneous bits create an address that is outside the range of the 32-bit address space causing the EFAULT. Resolution: Mask off the upper 32-bits of the system call's argument(s) pointer. ( SR:8606253687 CR:JAGae18035 ) The system can panic upon invoking the first 32-bit system call after the kernel is booted because the system call initialization path attempts to reference the per-processor data before the processor is set to wide mode. Resolution: Enable the wide 64-bit address mode before any data reference is done. PHKL_26467: ( SR:8606231620 CR:JAGae00858 ) This product update contains minor enhancements required to enable the "Release mode" functionality for PTHREAD_PROCESS_SHARED mutexes. Resolution: This product update provides support for a new system call interface, used internally by the POSIX thread library to support release mode for PTHREAD_PROCESS_SHARED mutexes. PHKL_26240: ( SR:8606178913 CR:JAGad48138 ) The existing system call to obtain lists of filesystems mounted returns information for one mount at a time. The overhead in making this call, and obtaining kernel locks, can be quite high, and contend with other system activity. Resolution: Provide a new system call which returns information for multiple mounts with each call (rather than one per call). This patch provides the new system call hooks. (Patch PHKL_26239, also required for this performance improvement, provides the new system call content.) ( SR:8606232147 CR:JAGae01383 ) In the PTHREAD_PROCESS_SHARED mutex case, the unlock operation always makes a system call to synchronize with threads in other processes which may be waiting for the mutex. This makes the code path significantly longer. Resolution: To increase shared mutex performance in the non-contended (i.e., no waiters) case, this change adds a new light weight system call to be used in place of the regular system call in the unlock operation. This is entirely transparent to the applications. It greatly reduces the transition time between kernel and user space. If waiters are detected, the light weight call will transfer into the regular system call path for proper handling. Thus, this performance enhancement is effective only for shared mutexes which do not experience heavy contention. (PHKL_26316, also required for this enhancement, adapts the existing system call which handles waiters of shared mutexes to coordinate with the light weight call. PHCO_25751, also required for this enhancement, adapts the libpthread library to use the new light weight system call.) PHKL_26042: ( SR:8606230908 CR:JAGae00146 ) This change contains minor enhancements required to pre-enable the Direct Register Access feature. Resolution: Provide a new Light Weight System call providing Direct Register Access. Enhancement: No (superseded patches contained enhancements) PHKL_30539: Support added for VFS-AdvSysCall and FUSER-Enh. PHKL_28475: Enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 8606178913 8606230908 8606231620 8606232147 8606253687 8606258396 8606275342 8606278471 8606319246 8606352915 Patch Files: OS-Core.CORE-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/conf/sys/scall_define.h ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/include/sys/scall_define.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libscall-pdk.a(asm_scall.o) /usr/conf/lib/libscall-pdk.a(gateway.o) /usr/conf/lib/libscall-pdk.a(lw_scall.o) /usr/conf/lib/libscall-pdk.a(pdk_syscall.o) /usr/conf/lib/libscall-pdk.a(scall_stubs.o) /usr/conf/lib/libscall.a(init_sent.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libscall-pdk.a(asm_scall.o) /usr/conf/lib/libscall-pdk.a(gateway.o) /usr/conf/lib/libscall-pdk.a(lw_scall.o) /usr/conf/lib/libscall-pdk.a(pdk_syscall.o) /usr/conf/lib/libscall-pdk.a(scall_stubs.o) /usr/conf/lib/libscall.a(init_sent.o) what(1) Output: OS-Core.CORE-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/conf/sys/scall_define.h: None ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/include/sys/scall_define.h: None OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libscall-pdk.a(asm_scall.o): asm_scall.s $Date: 2003/01/08 11:46:45 $Revision: r1 1.11/3 PATCH_11.11 (PHKL_28475) /usr/conf/lib/libscall-pdk.a(gateway.o): gateway.s $Date: 2004/03/15 18:24:29 $Revision: r11. 11/4 PATCH_11.11 (PHKL_30539) /usr/conf/lib/libscall-pdk.a(lw_scall.o): lw_scall.s $Date: 2004/05/26 12:20:33 $Revision: r11 .11/9 PATCH_11.11 (PHKL_30977) /usr/conf/lib/libscall-pdk.a(pdk_syscall.o): pdk_syscall.c $Date: 2002/06/24 11:20:45 $Revision: r11.11/2 PATCH_11.11 (PHKL_27172) /usr/conf/lib/libscall-pdk.a(scall_stubs.o): scall_stubs.s $Date: 2004/03/22 06:14:27 $Revision: r11.11/4 PATCH_11.11 (PHKL_30539) /usr/conf/lib/libscall.a(init_sent.o): init_sent.c $Date: 2004/03/15 18:15:25 $Revision: r1 1.11/4 PATCH_11.11 (PHKL_30539) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libscall-pdk.a(asm_scall.o): asm_scall.s $Date: 2003/01/08 11:46:45 $Revision: r1 1.11/3 PATCH_11.11 (PHKL_28475) /usr/conf/lib/libscall-pdk.a(gateway.o): gateway.s $Date: 2004/03/15 18:24:29 $Revision: r11. 11/4 PATCH_11.11 (PHKL_30539) /usr/conf/lib/libscall-pdk.a(lw_scall.o): lw_scall.s $Date: 2004/05/26 12:20:33 $Revision: r11 .11/9 PATCH_11.11 (PHKL_30977) /usr/conf/lib/libscall-pdk.a(pdk_syscall.o): pdk_syscall.c $Date: 2002/06/24 11:20:45 $Revision: r11.11/2 PATCH_11.11 (PHKL_27172) /usr/conf/lib/libscall-pdk.a(scall_stubs.o): scall_stubs.s $Date: 2004/03/22 06:14:27 $Revision: r11.11/4 PATCH_11.11 (PHKL_30539) /usr/conf/lib/libscall.a(init_sent.o): init_sent.c $Date: 2004/03/15 18:15:25 $Revision: r1 1.11/4 PATCH_11.11 (PHKL_30539) cksum(1) Output: OS-Core.CORE-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 4289018432 21766 /usr/conf/sys/scall_define.h ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 4289018432 21766 /usr/include/sys/scall_define.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 3170895400 9524 /usr/conf/lib/libscall-pdk.a(asm_scall.o) 777056158 7336 /usr/conf/lib/libscall-pdk.a(gateway.o) 3803940532 6572 /usr/conf/lib/libscall-pdk.a(lw_scall.o) 27594256 2384 /usr/conf/lib/libscall-pdk.a(pdk_syscall.o) 2440878219 1500 /usr/conf/lib/libscall-pdk.a(scall_stubs.o) 4166416037 36920 /usr/conf/lib/libscall.a(init_sent.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 2900885645 11576 /usr/conf/lib/libscall-pdk.a(asm_scall.o) 2704343406 46848 /usr/conf/lib/libscall-pdk.a(gateway.o) 113949088 11496 /usr/conf/lib/libscall-pdk.a(lw_scall.o) 524442972 5848 /usr/conf/lib/libscall-pdk.a(pdk_syscall.o) 3606252044 142952 /usr/conf/lib/ libscall-pdk.a(scall_stubs.o) 3359626128 142096 /usr/conf/lib/libscall.a(init_sent.o) Patch Conflicts: None Patch Dependencies: s700: 11.11: PHKL_28474 s800: 11.11: PHKL_28474 Hardware Dependencies: None Other Dependencies: PHKL_26467: To enable the process shared mutex performance, the following must be installed: PHKL_26467, PHKL_26468, PHKL_26469 and PHCO_26466. These product updates may be installed in any order. If any of these product updates are not installed, this product update will have no impact on your system. PHKL_26240: To enable the pthread shared mutex performance enhancement related to JAGae01383, the following must be installed: PHKL_26240, PHKL_26316, and PHCO_25751 In order to realize a performance improvement in obtaining mount information related to JAGad48138, PHKL_26239 must also be installed. Supersedes: PHKL_30539 PHKL_29628 PHKL_28475 PHKL_27172 PHKL_26467 PHKL_26240 PHKL_26042 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_30977 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_30977.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_30977. 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_30977.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_30977.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_30977.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None