Patch Name: PHKL_25010

Patch Description: s700_800 11.00 Cumulative USB Driver patch

Creation Date: 01/10/05

Post Date: 01/10/05

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_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_25010

Symptoms:
	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_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.

SR:
	8606103321 8606103322 8606107476 8606107507 8606110469
	8606125786 8606126863 8606186053 8606197569

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: 2001/08/23 12:52:29 $Revision: r11ros/3 
			PATCH_11.00 (PHKL_25010)
	/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: 2001/08/23 12:53:23 $Revision: r11ros/3
			 PATCH_11.00 (PHKL_25010)
	/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: 2001/08/23 12:53:51 $Revision: r
			11ros/3 PATCH_11.00 (PHKL_25010)
	/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: 2001/08/23 12:52:29 $Revision: r11ros/3 
			PATCH_11.00 (PHKL_25010)
	/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: 2001/08/23 12:53:23 $Revision: r11ros/3
			 PATCH_11.00 (PHKL_25010)
	/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: 2001/08/23 12:53:51 $Revision: r
			11ros/3 PATCH_11.00 (PHKL_25010)
	/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:
	1333478209 28116 /usr/conf/lib/libpci.a(hc.o)
	2525470805 28272 /usr/conf/lib/libpci.a(hcd.o)
	747973904 42228 /usr/conf/lib/libpci.a(hid.o)
	1361998397 13328 /usr/conf/lib/libpci.a(hub.o)
	2709371617 18420 /usr/conf/lib/libpci.a(usb.o)
	3448845952 11268 /usr/conf/lib/libpci.a(usb_config.o)
	3616377467 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:
	1292433324 47848 /usr/conf/lib/libpci.a(hc.o)
	869881601 61568 /usr/conf/lib/libpci.a(hcd.o)
	1509365920 87088 /usr/conf/lib/libpci.a(hid.o)
	2205853720 30408 /usr/conf/lib/libpci.a(hub.o)
	2639475472 48176 /usr/conf/lib/libpci.a(usb.o)
	339242841 23072 /usr/conf/lib/libpci.a(usb_config.o)
	3143530030 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_20478 PHKL_20156

Equivalent Patches:
	PHKL_24626:
	s700: 11.11
	s800: 11.11

Patch Package Size: 550 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_25010

	5. Run swinstall to install the patch:

		swinstall -x autoreboot=true -x patch_match_target=true \
			  -s /tmp/PHKL_25010.depot

	By default swinstall will archive the original software in 
	/var/adm/sw/save/PHKL_25010.  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_25010.text file is 
	available in the product readme:

		swlist -l product -a readme -d @ /tmp/PHKL_25010.depot

	To put this patch on a magnetic tape and install from the
	tape drive, use the command:

		dd if=/tmp/PHKL_25010.depot of=/dev/rmt/0m bs=2k

Special Installation Instructions: None

