Patch Name: PHKL_23057 Patch Description: s700_800 11.04 (VVOS) Fix VM page read-ahead panics Creation Date: 01/01/02 Post Date: 01/03/17 Hardware Platforms - OS Releases: s700: 11.04 s800: 11.04 Products: N/A Filesets: OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_32,v=HP OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_23057: PANIC Based on HP-UX patch PHKL_22792: PANIC Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHKL_23057 Symptoms: PHKL_23057: Ported HP-UX Patch PHKL_22792 to VVOS. Based upon PHKL_22792: ( SR: 8606147554 CR: JAGad16896 ) Customer will see a data-page-fault panic in pdprotget(). A typical panic stack would look like: panic+0x14 report_trap_or_int_and_panic+0x80 trap+0xdb8 nokgdb+0x8 pdprotget+0xa0 process_read_ahead_pages+0x1a8 hdl_pfault+0x6a0 pfault+0x104 copyin+0x170 uiomove+0xc0 rwip+0x398 ufs_rdwr+0x124 vno_rw+0x84 writev+0x17c syscall+0x480 $syscallrtn+0x0 ( SR: 8606170083 CR: JAGad39347 ) Customer will see a data-page-fault panic in pdprotget(). A typical panic stack would look like: panic+0x14 assfail+0x3c _assfail+0x2c sl_pre_check+0x120 spinlock+0x18 vfault+0xd8 trap+0x10e4 nokgdb+0x8 pdprotget+0x224 process_read_ahead_pages+0x36c hdl_vfault+0x518 vfault+0x2b8 trap+0x1370 nokgdb+0x8 copyin+0xbc uiomove+0x4a4 rw3vp+0x7ec nfs3_write+0x140 nfs3_rdwr+0x8c vno_rw+0xa4 4_2fa4_cl_rwuio+0x298 write+0x78 syscall+0x5fc $syscallrtn+0x0 ( SR: 8606156441 CR: JAGad25776 ) pfd corruption -- manifests as data-page-fault in pdv_modset2_0 or pdv_protaccset2_0. A typical panic stack would look like: panic+0x14 report_trap_or_int_and_panic+0x84 interrupt+0x1d4 $ihndlr_rtn+0x0 pdv_modset2_0+0x27c pdmodset+0x14c hdl_unsetbits+0x264 pageiocleanup+0x11c pageiodone+0x2c biodone+0x1f0 lv_complete+0xc0 lv_terminate+0xd4 lv_parwrite_done+0x148 lv_end+0x128 biodone+0x1f0 scsi_fast_cbfn+0x260 c720_isr+0x52c sapic_interrupt+0x2c up_ext_interrupt+0x2c8 ivti_patch_to_nop2+0x0 idle+0x1c4 swidle_exit+0x0 Based upon PHKL_21511: ( SR: 8606130257 CR: JAGac95128 ) System panics with a data page fault due to various reasons, such as virtual address not mapped, allocation of page zero, or using a page of size zero. In most cases, the system is doing heavy I/O across NFS mounts. A typical panic stack would look like: panic+0x14 allocate_page+0x12c allocpfd+0x24 vfdfill+0x58 vm_fill_in_pages+0x64 vm_prepare_io+0x28 nfs_pagein+0x20c virtual_fault+0x1c4 vfault+0xf4 trap+0x714 Defect Description: PHKL_23057: Ported HP-UX Patch PHKL_22792 to VVOS. Based upon PHKL_22792: ( SR: 8606147554 CR: JAGad16896 ) process_read_ahead_pages() both in its forward and backward loops, does not correctly check for the presence of translation. Resolution: Check both for the existence of an address translation for the physical page, and make sure it is translated to our address. ( SR: 8606170083 CR: JAGad39347 ) Incorrect parameter passed to pdprotget() call. Resolution: Pass the updated virtual address instead of the starting address again and again. ( SR: 8606156441 CR: JAGad25776 ) We were freeing the pfd at the granularity of the superpage instead of the 4K sub-page. Resolution: Use freepfd_one() to release a single 4K sub-page, instead of freepfd(). Based upon PHKL_21511: ( SR: 8606130257 CR: JAGac95128 ) For better performance, the user data access pattern is tracked and read-ahead is implemented for sequential I/O's. A defect in the read-ahead code decrements the reference count of pages within a large page incorrectly. This results in freeing still in-use pages and corrupting the memory freelist. When invalid pages are returned to the allocation routines, the system panics with data page fault. Resolution: Decrement reference count of large pages correctly. SR: 8606130257 8606147554 8606156441 8606170083 Patch Files: OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_32,v=HP: /usr/conf/lib/libhp-ux.a(vfs_vm.o) OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_64,v=HP: /usr/conf/lib/libhp-ux.a(vfs_vm.o) what(1) Output: OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_32,v=HP: /usr/conf/lib/libhp-ux.a(vfs_vm.o): vfs_vm.c $Date: 2000/11/20 22:58:36 $Revision: r11ro s/9 PATCH_11.00 (PHKL_22792) OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_64,v=HP: /usr/conf/lib/libhp-ux.a(vfs_vm.o): vfs_vm.c $Date: 2000/11/20 22:58:36 $Revision: r11ro s/9 PATCH_11.00 (PHKL_22792) cksum(1) Output: OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_32,v=HP: 97209200 43468 /usr/conf/lib/libhp-ux.a(vfs_vm.o) OS-Core.CORE2-KRN,fr=B.11.04,fa=HP-UX_B.11.04_64,v=HP: 3285172743 94056 /usr/conf/lib/libhp-ux.a(vfs_vm.o) Patch Conflicts: None Patch Dependencies: s700: 11.04: PHKL_19142 s800: 11.04: PHKL_19142 Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: PHKL_22792: s700: 11.00 s800: 11.00 Patch Package Size: 170 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_23057 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_23057.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_23057. If you do not wish to retain a copy of the original software, use the patch_save_files option: swinstall -x autoreboot=true -x patch_match_target=true \ -x patch_save_files=false -s /tmp/PHKL_23057.depot 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_23057.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_23057.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_23057.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch depends on base patch PHKL_19142. For successful installation please insure that PHKL_19142 is already installed, or that PHKL_19142 is included in the same depot with this patch and PHKL_19142 is selected for installation.