Patch Name: PHKL_24974 Patch Description: s700_800 11.20 Page table spinlock deadlock, vm performance Creation Date: 01/08/22 Post Date: 01/09/14 Hardware Platforms - OS Releases: s700: 11.20 s800: 11.20 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.20,fa=HP-UX_B.11.20_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_24974: PANIC Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHKL_24974 Symptoms: PHKL_24974: ( SR:8606205066 CR:JAGad74242 ) Poor scaling of applications that do numerous creations and deletions of virtual address translations may occur on systems with eight or more processors. ( SR:8606206213 CR:JAGad75388 ) System panics with a spinlock deadlock. The stack trace looks similar to the following: Stack Trace: IP Function Name 0xe0000000001fd450 too_much_time+0x3f0 0xe0000000001fcef0 wait_for_lock_ia+0x210 0xe000000000799e40 spinlock_errata_97+0x30 0xe0000000003e94b0 ptremap+0x160 ... "ptremap" may be "ptvpfn", "ptapage", "ptdpage", or another function name starting with "pt". Defect Description: PHKL_24974: ( SR:8606205066 CR:JAGad74242 ) There is a single linked list of free (unused) page table entries for the system. Only one processor at a time can be removing or returning an entry to this list. This becomes a bottleneck if there is a lot of activity on the free list. Additionally, there are only 32 locks protecting the page table entries that are in use. This can cause contention on an eight-way system or larger when each processor may be holding up to two locks. Resolution: Each processor now uses its own linked list of free page table entries and the number of locks for the page table entries in use was increased from 32 to 4096. ( SR:8606206213 CR:JAGad75388 ) There is a hashed look-up table to convert virtual addresses to physical addresses. The spinlock deadlock is a result of an entry in that table being linked to itself. This results in an infinite loop when that table entry is accessed and the page table entry spinlock is held for too long. A page table entry can be linked to itself if the old and new virtual addresses from a physical page remapping, an operation done often by network and disk I/O drivers, have the same hash result. This situation occurs because the remap functions add the page table entry to a hash chain that it is already on. Resolution: The functions which remap page translations now specifically check whether the hash values of the old and new virtual addresses are the same. If they are the same, the functions do not attempt to add a page table entry to a hash chain that it is already on. SR: 8606205066 8606206213 Patch Files: OS-Core.CORE2-KRN,fr=B.11.20,fa=HP-UX_B.11.20_64,v=HP: /usr/conf/lib/libinit-pdk.a(sysinit.o) /usr/conf/lib/libshutdown-pdk.a(machdep.o) /usr/conf/lib/libtest-pdk.a(exer_md_os_mca.o) /usr/conf/lib/libtest-pdk.a(exer_md_pte.o) /usr/conf/lib/libvm-pdk.a(mem.o) /usr/conf/lib/libvm-pdk.a(vm_vhpt.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.20,fa=HP-UX_B.11.20_64,v=HP: /usr/conf/lib/libinit-pdk.a(sysinit.o): sysinit.c $Date: 2001/08/18 15:04:13 $Revision: r11. 20/2 PATCH_11.20 (PHKL_24974) /usr/conf/lib/libshutdown-pdk.a(machdep.o): machdep.c $Date: 2001/08/18 15:04:13 $Revision: r11. 20/1 PATCH_11.20 (PHKL_24974) /usr/conf/lib/libtest-pdk.a(exer_md_os_mca.o): exer_md_os_mca.c $Date: 2001/08/18 15:04:13 $Revisio n: r11.20/1 PATCH_11.20 (PHKL_24974) /usr/conf/lib/libtest-pdk.a(exer_md_pte.o): exer_md_pte.c $Date: 2001/08/18 15:04:13 $Revision: r11.20/1 PATCH_11.20 (PHKL_24974) /usr/conf/lib/libvm-pdk.a(mem.o): mem.c $Date: 2001/08/18 15:04:13 $Revision: r11.20/1 PATCH_11.20 (PHKL_24974) /usr/conf/lib/libvm-pdk.a(vm_vhpt.o): vm_vhpt.c $Date: 2001/08/18 15:04:13 $Revision: r11. 20/1 PATCH_11.20 (PHKL_24974) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.20,fa=HP-UX_B.11.20_64,v=HP: 4035875051 25328 /usr/conf/lib/libinit-pdk.a(sysinit.o) 3227144929 22000 /usr/conf/lib/libshutdown-pdk.a(machdep.o) 1255851450 1344 /usr/conf/lib/ libtest-pdk.a(exer_md_os_mca.o) 3036369783 204344 /usr/conf/lib/libtest-pdk.a(exer_md_pte.o) 1971195516 34256 /usr/conf/lib/libvm-pdk.a(mem.o) 1754934641 220640 /usr/conf/lib/libvm-pdk.a(vm_vhpt.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: None Patch Package Size: 520 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_24974 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_24974.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_24974. 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_24974.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_24974.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_24974.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None