Patch Name: PHKL_30837 Patch Description: s700_800 11.11 vPar, callout, abstime, shared sync perf Creation Date: 04/06/21 Post Date: 04/07/28 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: 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_26037: PANIC HANG The problem may happen only when using the HP-UX Virtual Partitions product with dynamic CPU migration. PHKL_25367: HANG Category Tags: defect_repair enhancement general_release critical panic halts_system manual_dependencies Path Name: /hp-ux_patches/s700_800/11.X/PHKL_30837 Symptoms: PHKL_30837: ( SR:8606338067 CR:JAGae99066 ) If the system time is changed explicitly while an application has a pthread_cond_timedwait(2) call with an absolute time specified in progress, this could in some situations cause the timeout to expire either too early or too late. PHKL_26037: ( SR:8606230908 CR:JAGae00146 ) This change provides pre-enablement of the Real Time Extensions to the HP-UX Processor Sets (PROCSETS) product. This change will have no impact on your system until the Real Time Extensions are fully enabled. ( SR:8606233949 CR:JAGae03172 ) A system panic or hang may result from the corruption of callout data structures. This may happen with the HP-UX Virtual Partitions product when dynamic CPU migration across virtual partitions is used. This defect was discovered through inspection, but due to timing issues involved with this defect, internal testing did not produce this panic. PHKL_24546: ( SR:8606197207 CR:JAGad66401 ) This patch is a member of a set of patches needed to enable the HP-UX Virtual Partitions product. When the HP-UX Virtual Partitions product (VPARSBASE or T1335AA) is installed, it will install the full set of required patches for that product, including this patch. If the HP-UX Virtual Partitions product is not installed, this change will have no impact on your system. PHKL_27316: ( SR:8606266056 CR:JAGae30309 ) This product update is a member of a set needed to enable the optional HP-UX Shared Synchronization Primitives Performance enhancement. Upon installation, the HP-UX Shared Synchronization Primitives Performance bundle (SSPP11i) will install the full set of product updates (including this one) to enable this performance enhancement. If the HP-UX Shared synchronization Primitives Performance product is not installed, this product update will have no impact on your system. PHKL_26468: ( 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_25367: ( SR:8606167399 CR:JAGad36685 ) Occasionally a thread would miss a timeout interrupt and sleep forever or until it was sent a signal. The sleeping thread could cause an application hang. ( SR:8606194815 CR:JAGad64021 ) Occasionally a thread holding a resource was starved for cpu time; this starvation in turn delayed other threads waiting for that resource. Defect Description: PHKL_30837: ( SR:8606338067 CR:JAGae99066 ) A timeout is registered for the delta between the absolute time specified to the pthread_cond_timedwait(2) call and current system time. This delta is not adjusted when the system time is changed. Resolution: Modify the code to adjust the pthread_cond_timedwait(2) timeout, if the system time is changed. PHKL_26037: ( SR:8606230908 CR:JAGae00146 ) This change contains minor enhancements required to pre-enable the Real Time Extensions to the HP-UX Processor Sets product. Resolution: Enable Callout Migration functionality for Real Time Extensions to Processor Sets product. This functionality was previously enabled only for the Virtual Partitions product. ( SR:8606233949 CR:JAGae03172 ) The HP-UX callout subsystem uses per-CPU-callout locks to protect callout data structures and synchronize callout operations. The operating system identifies and takes the callout lock based on the CPU assigned to the callout. If the callout gets migrated to another CPU after the function has read its CPU assignment, but before it can take the associated callout lock, the code may end up with an incorrect callout lock leading to potential race conditions and data structure corruption. Resolution: Handle the race condition in callout module by re-validating the assigned CPU of the callout after acquiring the per CPU callout lock. If we are not holding the callout lock for the assigned CPU, drop the lock and try again. PHKL_24546: ( SR:8606197207 CR:JAGad66401 ) This patch contains minor enhancements required to support the HP-UX Virtual Partitions product. Resolution: Enhancements added to support CPU migration. PHKL_27316: ( SR:8606266056 CR:JAGae30309 ) This product update contains enhancements that improve the performance of shared synchronization primitives such as LWP semaphores, pthread condition variables and pthread RW locks. Resolution: The solution provided with this product update will mitigate the contention for kernel internal synchronization by increasing the granularity. PHKL_26468: ( SR:8606231620 CR:JAGae00858 ) This product update contains minor enhancements required to enable the "Release mode" functionality for PTHREAD_PROCESS_SHARED mutexes. Resolution: The changes in this product update include support for new locking primitives introduced in the product update PHKL_26469 which also provides support for release mode in PTHREAD_PROCESS_SHARED mutexes. PHKL_25367: ( SR:8606167399 CR:JAGad36685 ) A timing window existed in the sleep routines such that if the timeout interrupt occurred before the thread had gone to sleep, the thread would miss the timeout and sleep forever or until it was sent a signal. Resolution: Modified the timeout interrupt routine to correctly handle the case where the thread is not yet asleep when the timeout interrupt occurs. ( SR:8606194815 CR:JAGad64021 ) A thread exiting ksleep() retained its normal low priority, leading to its starvation while holding the resource. Resolution: Modified ksleep() to temporarily boost the thread's user priority when the sleep ends. Enhancement: No (superseded patches contained enhancements) PHKL_30837: Enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. PHKL_27316: Enhancements added to improve performance of shared synchronization primitives. Additional enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 8606167399 8606194815 8606197207 8606230908 8606231620 8606233949 8606266056 8606338067 Patch Files: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm.a(pm_callout.o) /usr/conf/lib/libpm.a(subr_ksleep.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm.a(pm_callout.o) /usr/conf/lib/libpm.a(subr_ksleep.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libpm.a(pm_callout.o): pm_callout.c $Date: 2004/05/06 11:03:45 $Revision: r 11.11/3 PATCH_11.11 (PHKL_30837) /usr/conf/lib/libpm.a(subr_ksleep.o): subr_ksleep.c $Date: 2004/05/06 11:04:54 $Revision: r11.11/4 PATCH_11.11 (PHKL_30837) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libpm.a(pm_callout.o): pm_callout.c $Date: 2004/05/06 11:03:45 $Revision: r 11.11/3 PATCH_11.11 (PHKL_30837) /usr/conf/lib/libpm.a(subr_ksleep.o): subr_ksleep.c $Date: 2004/05/06 11:04:54 $Revision: r11.11/4 PATCH_11.11 (PHKL_30837) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 783474546 21120 /usr/conf/lib/libpm.a(pm_callout.o) 1102914596 11568 /usr/conf/lib/libpm.a(subr_ksleep.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 3435244189 51720 /usr/conf/lib/libpm.a(pm_callout.o) 2449910845 29944 /usr/conf/lib/libpm.a(subr_ksleep.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: PHKL_26468: 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. Supersedes: PHKL_27316 PHKL_26468 PHKL_26037 PHKL_25367 PHKL_24546 Equivalent Patches: PHKL_30578: s700: 11.00 s800: 11.00 Patch Package Size: 80 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_30837 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_30837.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_30837. 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_30837.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_30837.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_30837.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None