Patch Name: PHKL_31164 Patch Description: s700_800 11.00 kmadmin;autoload;DLKM load;8K MO;eventport Creation Date: 04/07/28 Post Date: 04/08/10 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 OS-Core.CORE2-KRN,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 Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_27145: CORRUPTION Potential data loss when performing ioctl(2) DP_POLL on /dev/poll. PHKL_23329: PANIC PHKL_22968: PANIC PHKL_16807: PANIC Category Tags: defect_repair hardware_enablement enhancement general_release critical panic corruption Path Name: /hp-ux_patches/s700_800/11.X/PHKL_31164 Symptoms: PHKL_31164: ( SR:8606360431 CR:JAGaf21125 ) Cannot mount a filesystem written on a Magneto Optical (MO) device with a 8192 bytes/sector media. The following error message will be reported: #mount /dev/dsk/c6t0d0 /testmount /dev/dsk/c6t0d0: unrecognized file system PHKL_28172: ( SR:8606267999 CR:JAGae32238 ) Significant increase in user memory usage after installing PHKL_25098, PHKL_26737, or PHKL_27145. PHKL_27145: ( SR:8606257768 CR:JAGae22071 ) When using the Event Port feature and issuing an ioctl(2) DP_POLL on the file descriptor for /dev/poll, if there is no data in the pipe, the ioctl(2) will correctly return 0 (zero). From that time forward, any ioctl(2) DP_POLL on the file descriptor for /dev/poll will return 0, even if there is data in the pipe. This only occurs when the kernel tunable streampipes is set to 0. This defect was introduced in product update PHKL_25098 which introduced the Event Port feature. PHKL_27356: ( SR:8606242408 CR:JAGae09659 ) Shared memory segment cannot be removed even after all processes using it no longer exist. PHKL_26737: ( SR:8606246033 CR:JAGae12489 ) During module unload, because of incorrect locking of the module entry, the module state may change and the unload operation may not succeed. ( SR:8606231066 CR:JAGae00304 ) Graphics driver cannot unload module from kernel. PHKL_25098: ( SR:8606195573 CR:JAGad64777 ) This patch is a member of a set of patches needed to enable the eventport pseudo driver feature delivered in PHKL_24064. The eventport driver patch specifies the full set of required patches for this new feature. If the eventport pseudo driver patch (or superseding patch) is not installed, this change will have no impact on your system. PHKL_23329: ( SR: 8606165604 CR: JAGad34895 ) system panic with the following stack trace: 0) panic+0x14 1) report_trap_or_int_and_panic+0x4c 2) trap+0xea8 3) $RDB_trap_patch+0x38 4) psema+0xc 5) reaquire_semas+0x28 6) fifo_open+0x2a4 PHKL_23072: ( SR:8606168368 CR:JAGad37649 ) Can not mount the Magneto Optical (MO) device with a 4096 bytes/sector media. An "unrecognized file system" error message will be received when attempting to mount such a device. PHKL_22968: ( SR:8606162678 CR:JAGad31994 ) A DLKM load failure on automatic loading by open(2) can result in non-standard error codes being returned by open(2). ( SR:8606170779 CR:JAGad40043 ) The system will panic if the text and data size of a module hits a certain window. ( SR:8606154498 CR:JAGad23815 ) None. ( SR:8606137247 CR:JAGad06365 ) None ( SR:8606171142 CR:JAGad40406 ) If a customer were to use a load/stress script to repeatedly register, load, unload, and unregister a single module, AND if the customer were to run several copies of this script asynchronously, the customer might hit a window in which (for WSIO modules) the system panicked. PHKL_21029: (SR: 8606128506 CR: JAGaa52779) When a driver with a long (>15 characters) name is configured on the system, kmadmin -k will truncate the name while displaying it ("strtelnet_included" is one such driver). SAM uses kmadmin -k to assemble the list of drivers configured into the system for reconfiguration of the kernel, so the user is unable to reconfigure a kernel using SAM if a driver with a long name is built into the current running kernel. PHKL_16807: The system may panic. PHKL_15552: Optimization helps eliminate excess I-cache pre-fetch which reduces performance. Defect Description: PHKL_31164: ( SR:8606360431 CR:JAGaf21125 ) When mounting a filesystem, the drive is considered as a block device and is accessed via specfs using a fixed block I/O size of 4K. This works fine for all drives with less than or equal to 4K bytes/sector. But it does not suffice for devices with sector size greater than 4K. Resolution: The block I/O size for specfs has been increased to 8192 bytes. PHKL_28172: ( SR:8606267999 CR:JAGae32238 ) Superpage pool fragmentation after installing PHKL_25098, PHKL_26737, or PHKL_27145. The member f_bufp of structure fifo_exbuf was declared as an array of character pointers. The size of the structure amounted to 65552 bytes, equivalent to 17 pages of kernel memory. These 17 pages were carved out from a 32 page supepage pool bucket, returning 15 pages as fragments of 8, 4, 2, 1 page respectively. On a busy system these pages might not coalesce back to give 32 page superpage pool bucket. Resolution: Appropriate code changes were made to change an array of character pointers to an array of characters. Thus reducing the kernel memory requirement. PHKL_27145: ( SR:8606257768 CR:JAGae22071 ) When an ioctl(2) DP_POLL is used to read the number of events in a pipe (i.e. /dev/poll), and the pipe is empty, the file descriptor for the pipe is unregistered with the Event Port driver. The write(2) system call does not re-activate event services on the file descriptor. Thus, subsequent ioctl(2) calls will continue to return 0 (an empty pipe), even if there is data in the pipe. Resolution: The write(2) system call always checks if the file descriptor is registered with the Event Port driver, and if so, re-activates the services. PHKL_27356: ( SR:8606242408 CR:JAGae09659 ) Shared memory segment may remain on the system due to a race condition that exists between the function that opens and closes the device. The only way to remove it is to reboot the system. Resolution: The device open/close code was rewritten to avoid the race condition. PHKL_26737: ( SR:8606246033 CR:JAGae12489 ) Incorrect locking protection while checking the module state in the unload path. Resolution: Corrected the locking sequence in the unload path. ( SR:8606231066 CR:JAGae00304 ) The DLKM infrastructure does not provide an interface kernel internal functions can use to unload a module. Resolution: Provided an unload interface to be used by kernel internal functions. PHKL_25098: ( SR:8606195573 CR:JAGad64777 ) This change contains minor enhancements required to support the eventport feature. Resolution: Enhancements added include a fifo and pipe subsytem interface used by the eventport driver and respective eventport driver callbacks. PHKL_23329: ( SR: 8606165604 CR: JAGad34895 ) Two different internal functions usually called by different syscalls were instead called sequentially by one syscall. Because the first internal function changed a global variable but did not restore it before it returned, the second function (which referenced the same global variable) jumped to an invalid place. This causes a system panic. Resolution: Have each internal function restore the global variable before it returns. PHKL_23072: ( SR:8606168368 CR:JAGad37649 ) When mounting a file system, the drive is considered as a block device and is accessed via specfs using fixed block io size of 2K. This is ok for all the drives with less or equal to 2K bytes sectors. But it is not big enough for the devices with the sector size greater then 2K. Resolution: The block io size for specfs has been changed to 4096 bytes. PHKL_22968: ( SR:8606162678 CR:JAGad31994 ) DLKM load failure as part of automatic loading when open(2) is called results in possibly returning non-standard error return codes to open(2). Resolution: Print errors returned to automatic loading code by modld(), then mask the errors by returning ENODEV. ( SR:8606170779 CR:JAGad40043 ) If the text and data size of the module combine to be just slightly under an integral number of pages, AND the module has enough text to require a second long-branch stubs table, and the module has a zero-length PROGBITS section (such as millicode) before the .text section in the ELF image file, an (erroneous) additional second long-branch stubs table will be placed after the correct one, overflowing the allocated memory and causing a system panic when an address in the erroneous additional table is dereferenced. Resolution: Avoid performing actions for zero-length sections of the ELF image file. ( SR:8606154498 CR:JAGad23815 ) In the debug kernel, the assert treats 0 as an invalid major number. Resolution: Treat 0 as a valid major number. ( SR:8606137247 CR:JAGad06365 ) We don't test for a NULL return after a memory allocation with M_NOWAIT specified. Resolution: Check for NULL. This is largely a non-problem, since, if the allocation were to fail, we would have been in severe trouble long before reaching this point. ( SR:8606171142 CR:JAGad40406 ) There is a window in which it is possible to invalidate the drv_info_t structure while another process is using it. Resolution: Close the window by copying the drv_info_t information while the device switch table (and hence, the drv_info_t) is locked. There is a kmalloc with the M_NOWAIT flag set without a check for a NULL return. Since this is a small allocation that occurs early in the boot sequence, any memory shortage here would have caused a panic long before this point. PHKL_21029: (SR: 8606128506 CR: JAGaa52779) kmadmin -k truncates the names of long (>15 chars) driver names. Several HP driver names are too long. This patch, when used with the commands patch to kmadmin (PHCO_21040), will allow the system to have driver names of up to 40 characters, with support in the kernel (NOT at the command level) for names of up to 50 characters (51 with terminating NULL included). Resolution: Define a new structure in modadm.c (to avoid header file changes) that is identical to struct mod_smod, except that the character array for the module name is 51 characters rather than 15. The same structure must be defined in the command file kmtools/kmadmin.c as part of a commands patch (PHCO_21040). PHKL_16807: 1) Unloading problem due to incorrect hold count: Some drivers may not be unloaded when they do mount/umount operations. The hold count is increased by mount, but not decreased by umount. In this case, the module unregistration fails, but the module is no longer in the registered list. If the system admin attempted to unregister the driver again, (because they saw the failure), the system may panic. 2) Open failure with autoloading May run into a problem when autoloading some drivers. The gio_mod_cdev_open() function ignores 2 of the 4 arguments that drivers can get on open. If the driver being autoloaded was expecting the third or fourth argument to be a valid pointer to be used for cloning, the driver may dereference an invalid pointer leading to a system panic. PHKL_15552: I-cache pre-fetching beyond end of procedures creates unnecessary load on the bus. Enhancement: No (superseded patches contained enhancements) PHKL_28172: Enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 4701394890 4701402479 8606128506 8606137247 8606154498 8606162678 8606165604 8606168368 8606170779 8606171142 8606195573 8606231066 8606242408 8606246033 8606257768 8606267999 8606360431 Patch Files: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/conf/h/mod_k.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libdlkm.a(mod_objmd.o) /usr/conf/lib/libdlkm.a(modadm.o) /usr/conf/lib/libdlkm.a(modctl.o) /usr/conf/lib/libdlkm.a(modinit.o) /usr/conf/lib/libhp-ux.a(fifo_vnops.o) /usr/conf/lib/libhp-ux.a(gio_modfuncs.o) /usr/conf/lib/libhp-ux.a(pipe_vnops.o) /usr/conf/lib/libhp-ux.a(spec_vnops.o) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libdlkm.a(mod_objmd.o) /usr/conf/lib/libdlkm.a(modadm.o) /usr/conf/lib/libdlkm.a(modctl.o) /usr/conf/lib/libdlkm.a(modinit.o) /usr/conf/lib/libhp-ux.a(fifo_vnops.o) /usr/conf/lib/libhp-ux.a(gio_modfuncs.o) /usr/conf/lib/libhp-ux.a(pipe_vnops.o) /usr/conf/lib/libhp-ux.a(spec_vnops.o) what(1) Output: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/conf/h/mod_k.h: mod_k.h $Date: 2002/04/10 14:33:10 $Revision: r11ros /1 PATCH_11.00 (PHKL_26737) */ OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libdlkm.a(mod_objmd.o): mod_objmd.c $Date: 2000/12/14 08:25:50 $Revision: r1 1ros/3 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libdlkm.a(modadm.o): modadm.c $Date: 2000/12/14 08:25:50 $Revision: r11ro s/4 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libdlkm.a(modctl.o): modctl.c $Date: 2002/04/10 14:33:10 $Revision: r11ro s/3 PATCH_11.00 (PHKL_26737) /usr/conf/lib/libdlkm.a(modinit.o): modinit.c $Date: 2000/12/14 08:25:50 $Revision: r11r os/2 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libhp-ux.a(fifo_vnops.o): fifo_vnops.c $Date: 2002/11/17 21:29:37 $Revision: r 11ros/4 PATCH_11.00 (PHKL_28172) /usr/conf/lib/libhp-ux.a(gio_modfuncs.o): gio_modfuncs.c $Date: 2000/12/14 08:25:50 $Revision: r11ros/2 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libhp-ux.a(pipe_vnops.o): pipe_vnops.c $Date: 2002/11/17 21:29:37 $Revision: r 11ros/2 PATCH_11.00 (PHKL_28172) /usr/conf/lib/libhp-ux.a(spec_vnops.o): spec_vnops.c $Date: 2004/07/05 02:48:42 $Revision: r 11ros/9 PATCH_11.00 (PHKL_31164) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libdlkm.a(mod_objmd.o): mod_objmd.c $Date: 2000/12/14 08:25:50 $Revision: r1 1ros/3 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libdlkm.a(modadm.o): modadm.c $Date: 2000/12/14 08:25:50 $Revision: r11ro s/4 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libdlkm.a(modctl.o): modctl.c $Date: 2002/04/10 14:33:10 $Revision: r11ro s/3 PATCH_11.00 (PHKL_26737) /usr/conf/lib/libdlkm.a(modinit.o): modinit.c $Date: 2000/12/14 08:25:50 $Revision: r11r os/2 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libhp-ux.a(fifo_vnops.o): fifo_vnops.c $Date: 2002/11/17 21:29:37 $Revision: r 11ros/4 PATCH_11.00 (PHKL_28172) /usr/conf/lib/libhp-ux.a(gio_modfuncs.o): gio_modfuncs.c $Date: 2000/12/14 08:25:50 $Revision: r11ros/2 PATCH_11.00 (PHKL_22968) /usr/conf/lib/libhp-ux.a(pipe_vnops.o): pipe_vnops.c $Date: 2002/11/17 21:29:37 $Revision: r 11ros/2 PATCH_11.00 (PHKL_28172) /usr/conf/lib/libhp-ux.a(spec_vnops.o): spec_vnops.c $Date: 2004/07/05 02:48:42 $Revision: r 11ros/9 PATCH_11.00 (PHKL_31164) cksum(1) Output: OS-Core.CORE-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 637427704 7483 /usr/conf/h/mod_k.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 690055616 13360 /usr/conf/lib/libdlkm.a(mod_objmd.o) 1683636088 6120 /usr/conf/lib/libdlkm.a(modadm.o) 1703928165 17412 /usr/conf/lib/libdlkm.a(modctl.o) 1469633980 5012 /usr/conf/lib/libdlkm.a(modinit.o) 3624579223 16288 /usr/conf/lib/libhp-ux.a(fifo_vnops.o) 1424864992 13312 /usr/conf/lib/libhp-ux.a(gio_modfuncs.o) 2981185301 6184 /usr/conf/lib/libhp-ux.a(pipe_vnops.o) 2301380753 20948 /usr/conf/lib/libhp-ux.a(spec_vnops.o) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 2074442614 30448 /usr/conf/lib/libdlkm.a(mod_objmd.o) 3257028217 14096 /usr/conf/lib/libdlkm.a(modadm.o) 2900946542 40920 /usr/conf/lib/libdlkm.a(modctl.o) 2635290223 10240 /usr/conf/lib/libdlkm.a(modinit.o) 3239161267 40464 /usr/conf/lib/libhp-ux.a(fifo_vnops.o) 4209569389 29800 /usr/conf/lib/libhp-ux.a(gio_modfuncs.o) 3697246618 15400 /usr/conf/lib/libhp-ux.a(pipe_vnops.o) 3717816072 49680 /usr/conf/lib/libhp-ux.a(spec_vnops.o) Patch Conflicts: None Patch Dependencies: s700: 11.00: PHKL_18543 s800: 11.00: PHKL_18543 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_25098 PHKL_23329 PHKL_23072 PHKL_22968 PHKL_21029 PHKL_16807 PHKL_15552 PHKL_28172 PHKL_27356 PHKL_27145 PHKL_26737 Equivalent Patches: PHKL_30992: s700: 11.11 s800: 11.11 Patch Package Size: 180 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_31164 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_31164.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_31164. 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_31164.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_31164.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_31164.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None