Patch Name: PHKL_28800 Patch Description: s700_800 11.00 Cumulative USB Driver patch Creation Date: 03/04/02 Post Date: 03/06/16 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: N/A Filesets: ProgSupport.C-INC,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.KERN2-RUN,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 OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_28800: PANIC PHKL_25010: PANIC PHKL_20478: PANIC CORRUPTION HANG Category Tags: defect_repair hardware_enablement enhancement general_release critical panic halts_system corruption Path Name: /hp-ux_patches/s700_800/11.X/PHKL_28800 Symptoms: PHKL_28800: ( SR:8606299069 CR:JAGae62565 ) Data page fault in the routine usb_enum_dev() preceeded by the kernel message "ERROR usb_enum_dev_end: Could not assign an address to the device." or the message "ERROR usb_probe: Device enumeration failed." ( SR:8606243369 CR:JAGae10599 ) The hub daemon may fail to open the device /dev/hub if multiple hubs are present. The hub daemon is started by rc (see the manpage rc(1M)) as the system boots. The hub daemon supports the hot attach and detach for usb devices. It must be running in order to reconfigure USB devices when they are added to or removed from the system. The hub daemon may be stopped or started when the init run level is changed. PHKL_25010: ( SR:8606186053 CR:JAGad55258 ) The kernel build for the 32bit HP-UX kernel will fail if any of the USB driver components are configured into the kernel. The build will fail with the following error: /usr/ccs/bin/ld: Unsatisfied symbols: wsio_get_service (code) ( SR:8606197569 CR:JAGad66762 ) The kernel will panic with "unselect:null thread". The kernel functions involved are hid_unblock, selwakeup and unselect. PHKL_20478: ( SR: 8606130102 DTS: JAGac94862 ) The patch PHKL_20156 will not install the USB drivers on L-class systems with USB PCI plugin cards. Without patch PHKL_20478, the customer must manually add the usb drivers to the kernel and reboot the system. ( SR: 8606107476 DTS: JAGab77705 ) If an application issues the HID_IDENT ioctl cmd to the hid driver (see /usr/include/sys/hidio.h), data corruption or a system panic may occur. The symptoms of the panic may vary. The hidio.h file was not included in PHKL_20156. ( SR: 8606103321 DTS: JAGab69968 ) panic: data page fault in the kernel function process_done_queue. This is often accompanied by a "pipe failed to close" message appearing in the dmesg system buffer. ( SR 8606103322 DTS: JAGab69969 ) panic: data page fault in the kernel function usb_handle_irp. This is often accompanied by a "pipe failed to close" message appearing in the dmesg system buffer. The panic can occur when performing a command login from CDE login screen, but may occur at other times as well. ( SR: 8606126863 DTS: JAGac59704 ) The insf command will return a non-zero return value when creating device special files for the hid driver. insf does not issue an error message, however the non-zero return code may cause other commands/scripts to issue error messages. The script /sbin/rc1.d/S112kminit will issue a failure code when insf returns a non-zero return value. The script will complete its work sucessfully even though the failure message is issued. The error message e will be logged in /var/adm/rc.log and will also be ouput to the system console during the boot process. The S112kminit script only issues the error when dynamically loadable kernel modules are registered. ( SR: 8606125786 DTS: JAGac42729 ) The usb keys "n", "o", and "v" do not repeat in the HP-UX 11.00. This is true for both the ITE and the X server. ( SR: 8606110469 DTS: JAGab83172 ) panic: usb: no room in virtual<->physical lookup table for HC instance 0 PHKL_20156: ( SR: 8606107507 DTS: JAGab77743 ) This patch enables new functionality and adds new I/O drivers to support the B1000, C3000, and J5000 systems. This patch includes the Universal Serial Bus (USB) OHCI interface driver, the USB HUB class device driver, and the USB HID class device driver. USB HID class devices include USB keyboards and mice. Defect Description: PHKL_28800: ( SR:8606299069 CR:JAGae62565 ) When a new device is initialized, the usb driver must assign an address to the device. If that request fails, then the driver would corrupt the device zero endpoint which would then lead to a kernel panic. It is not known why the set address control request has failed. The keyboard may not be responding after a reset. The USB connection for all USB devices should be checked to ensure that they are secure. Resolution: If the request to set the device address fails then the kernel will recover without corrupting the device zero endpoint. At this point the USB keyboard or mouse may not be configured on the system. The customer must unplug the device and plug it back in to re-establish a connection to that device. ( SR:8606243369 CR:JAGae10599 ) When the /dev/hub device file is closed by the hub daemon, a linked list structure may become invalid. More than one hub or root hub must be present in order for this condition to occur. Resolution: The code which manages the linked list was changed to eliminate the problem. PHKL_25010: ( SR:8606186053 CR:JAGad55258 ) The USB driver requires that the superio cdio be configured into the kernel. However the superio cdio is not available for 32 bit kernels. Resolution: The USB driver dependency on the superio cdio was eliminated. ( SR:8606197569 CR:JAGad66762 ) The USB keyboard HID driver could call the selwakeup routine with a NULL thread pointer. This is a rare condition which may occur when an data interrupt occurs for that device while the driver is performing a keyrepeat operation. Resolution: The thread pointer is captured in a local variable to ensure that an interrupt condition won't set it to NULL before it can be passed to the selwakeup routine. A code change to the HID driver was made. PHKL_20478: ( SR: 8606130102 DTS: JAGac94862 ) The postinstall script for PHKL_20156 did not recognize USB plugin cards. Resolution: The postinstall script will add the USB drivers to the system file when the patch is installed on a system with a USB plugin card. ( SR: 8606107476 DTS: JAGab77705 ) If an application issues the HID_IDENT ioctl cmd to the hid driver (see /usr/include/sys/hidio.h), the hid driver will overwrite system memory resulting in either data corruption or a system panic. Resolution: Only return the amount of data requested by the HID_IDENT command. ( SR: 8606103321 DTS: JAGab69968 ) panic: data page fault in the kernel function process_done_queue. USB transfer descriptors were being accessed after they were deallocated. Resolution: Only deallocate USB transfer descriptors when the host controller is through with them. ( SR 8606103322 DTS: JAGab69969 ) panic: data page fault in the kernel function usb_handle_irp. USB transfer descriptors were being accessed after they were deallocated. Resolution: Only deallocate USB transfer descriptors when the host controller is through with them. ( SR: 8606126863 DTS: JAGac59704 ) The /usr/include/sys/hidio.h header file contains an ioctl called HID_NUM_DEVICES. On 64 bit HP-UX systems, the hid driver did not recognize the ioctl command. This was a result of a difference in size between pointers on 32 bit applications and 64 bit pointers in the kernel. Resolution: Change the definition of the HID_NUM_DEVICES ioctl to remove the use of pointers. ( SR: 8606125786 DTS: JAGac42729 ) The usb keys "n", "o", and "v" do not repeat in the HP-UX 11.00. This is true for both the ITE and the X server. An incorrect mapping of the keys failed to turn on key repeat for those keys. Resolution: Properly turn on key repeat for the "n", "o" and "v" keys. ( SR: 8606110469 DTS: JAGab83172 ) panic: usb: no room in virtual<->physical lookup table for HC instance 0. The host controller would sometimes not report completed transfer descriptors. This could occur on systems under heavy load. Resolution: Reduce the probability that the host controller will not report completed transfer descritors by turning of list processing at specific points in time. PHKL_20156: ( SR: 8606107507 DTS: JAGab77743 ) USB support is missing from the B1000, C3000, and J5000 systems. Resolution: Add support for the Universal Serial Bus. Enhancement: No (superseded patches contained enhancements) PHKL_28800: Enhancements were delivered in a patch this one has superseded. Please review the Defect Description text for more information. SR: 8606103321 8606103322 8606107476 8606107507 8606110469 8606125786 8606126863 8606186053 8606197569 8606243369 8606299069 Patch Files: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/hidio.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libpci.a(hc.o) /usr/conf/lib/libpci.a(hcd.o) /usr/conf/lib/libpci.a(hid.o) /usr/conf/lib/libpci.a(hub.o) /usr/conf/lib/libpci.a(usb.o) /usr/conf/lib/libpci.a(usb_config.o) /usr/conf/lib/libpci.a(usbd.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/master.d/usb OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libpci.a(hc.o) /usr/conf/lib/libpci.a(hcd.o) /usr/conf/lib/libpci.a(hid.o) /usr/conf/lib/libpci.a(hub.o) /usr/conf/lib/libpci.a(usb.o) /usr/conf/lib/libpci.a(usb_config.o) /usr/conf/lib/libpci.a(usbd.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/master.d/usb what(1) Output: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/hidio.h: hidio.h $Date: 2001/08/23 12:53:16 $Revision: r11ros /3 PATCH_11.00 (PHKL_25010) */ OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libpci.a(hc.o): hc.c $Date: 2003/03/03 12:47:57 $Revision: r11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(hcd.o): hcd.c $Date: 2001/08/23 12:52:44 $Revision: r11ros/6 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(hid.o): hid.c $Date: 2001/08/23 12:53:04 $Revision: r11ros/3 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(hub.o): hub.c $Date: 2003/03/07 08:35:11 $Revision: r11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(usb.o): usb.c $Date: 2001/08/23 12:53:38 $Revision: r11ros/3 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(usb_config.o): usb_config.c $Date: 2003/03/03 12:25:02 $Revision: r 11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(usbd.o): usbd.c $Date: 2001/08/23 12:54:04 $Revision: r11ros/ 3 PATCH_11.00 (PHKL_25010) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/master.d/usb: usb $Date: 1999/10/18 11:24:19 $Revision: r11ros/1 P ATCH_11.00 (PHKL_20156) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libpci.a(hc.o): hc.c $Date: 2003/03/03 12:47:57 $Revision: r11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(hcd.o): hcd.c $Date: 2001/08/23 12:52:44 $Revision: r11ros/6 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(hid.o): hid.c $Date: 2001/08/23 12:53:04 $Revision: r11ros/3 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(hub.o): hub.c $Date: 2003/03/07 08:35:11 $Revision: r11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(usb.o): usb.c $Date: 2001/08/23 12:53:38 $Revision: r11ros/3 PATCH_11.00 (PHKL_25010) /usr/conf/lib/libpci.a(usb_config.o): usb_config.c $Date: 2003/03/03 12:25:02 $Revision: r 11ros/4 PATCH_11.00 (PHKL_28800) /usr/conf/lib/libpci.a(usbd.o): usbd.c $Date: 2001/08/23 12:54:04 $Revision: r11ros/ 3 PATCH_11.00 (PHKL_25010) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/master.d/usb: usb $Date: 1999/10/18 11:24:19 $Revision: r11ros/1 P ATCH_11.00 (PHKL_20156) cksum(1) Output: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1947677216 12982 /usr/include/sys/hidio.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 2617732091 28116 /usr/conf/lib/libpci.a(hc.o) 218720018 28272 /usr/conf/lib/libpci.a(hcd.o) 609231554 42228 /usr/conf/lib/libpci.a(hid.o) 1759080392 12848 /usr/conf/lib/libpci.a(hub.o) 1639751280 18420 /usr/conf/lib/libpci.a(usb.o) 84601808 11176 /usr/conf/lib/libpci.a(usb_config.o) 1721394350 10144 /usr/conf/lib/libpci.a(usbd.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 1893487715 4726 /usr/conf/master.d/usb OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 3826587449 47848 /usr/conf/lib/libpci.a(hc.o) 823025329 61568 /usr/conf/lib/libpci.a(hcd.o) 650425270 87088 /usr/conf/lib/libpci.a(hid.o) 3877806416 29616 /usr/conf/lib/libpci.a(hub.o) 2639475472 48176 /usr/conf/lib/libpci.a(usb.o) 1273761747 22728 /usr/conf/lib/libpci.a(usb_config.o) 985228498 22960 /usr/conf/lib/libpci.a(usbd.o) OS-Core.KERN2-RUN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 1893487715 4726 /usr/conf/master.d/usb Patch Conflicts: None Patch Dependencies: s700: 11.00: PHKL_20159 PHKL_20165 s800: 11.00: PHKL_20159 PHKL_20165 Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_25010 PHKL_20478 PHKL_20156 Equivalent Patches: PHKL_28197: s700: 11.11 s800: 11.11 Patch Package Size: 250 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_28800 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_28800.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_28800. 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_28800.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_28800.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_28800.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None