Patch Name: PHKL_24409

Patch Description: s700 10.20 Audio driver repair and support patch

Creation Date: 01/07/16

Post Date:  01/07/25

Hardware Platforms - OS Releases:
	s700: 10.20

Products: N/A

Filesets:
	OS-Core.CORE-KRN ProgSupport.C-INC

Automatic Reboot?: Yes

Status: General Superseded

Critical:
	Yes
	PHKL_24409: PANIC
	PHKL_21724: PANIC
	PHKL_11578: PANIC
	PHKL_9580: PANIC
		Currently all audio applications shipped by HP
		use Aserver, which will not exhibit the problem.
		The problem is only possible when running non HP
		audio applications. Of course any user can load
		such an application.

Path Name: /hp-ux_patches/s700/10.X/PHKL_24409

Symptoms:
	PHKL_24409:
	(SR: 8606185626   CR: JAGad54828)
	When the beep duration is set to a very small value there
	is the possibility of getting a "callout table overflow"
	panic if a lot of beeps are generated close together.
	The panic stack trace may be similar to:

	        panic+0x14
	        settimeout_for_cpu+0x174
	        timeout+0x3c
	        beep_fill+0x58
	        audio3_beeper+0x5e8
	        audio_beeper+0x12c
	        beep_ioctl+0x100
	        spubind_cdev_ioctl+0x94
	        spec_ioctl+0xac
	        vno_ioctl+0x90
	        ioctl+0x1f4
	        syscall+0x6f8
	        $syscallrtn+0x0

	(SR: 8606188289   CR: JAGad57497)
	With the sound card for the B2600 system, if the audio
	driver gets an unexpected interrupt, it panics the system.
	There is no example stack trace for the panic, but
	audio4_isr would be on the stack.

	(SR: 8606188861   CR: JAGad58077)
	With the sound card for the B2600 system, when the driver
	reaches the end of a transmit buffer the metering count
	may be off.

	(SR: 8606199154   CR: JAGad68341)
	PHKL_23387 leaves audio unconfigured when installed.

	PHKL_23387:
	(SR: 8606187687   CR: JAGad56896)
	Enable support for the new sound card for B2600 system.

	PHKL_22348:
	(SR: 4701232991   CR: JAGad03762)
	The audio output on 745/50, 745/100, 747/50, and 747/100
	workstations will produce static instead of normal audio
	output.  This bug does NOT exist on 745/132L and 745/165L
	workstations, nor on other workstations with different audio
	hardware.

	PHKL_21724:
	(SR: 8606126493 CR: JAGac57058)
	Under certain circumstances, the audio driver could cause an
	HPMC.  The console and PIM output may show something like
	this pointing to the audio device:

	"A Data I/O Fetch Timeout occurred while CPU 0 was
	requesting information from a device at the path 10/0/15/1
	(built-in PCI device)"

	PHKL_17837:
	This patch enables new functionality that is part of the
	10.20 ACE (Additional Core Enhancements) Workstation bundle,
	which adds new I/O drivers to support the B1000, C3000 and
	J5000 systems.

	PHKL_11578:
	The system will panic with an "Audio hardware clock dead"
	message. This will most likely only be seen on the newer
	(180 Mhz and up PA8000) processors. This panic will
	usually occur just after a beep.

	PHKL_9580:
	A direct audio application (an application that does not
	use the Audio server, e.g. a common freeware unix
	application called rplay) can panic the system.

Defect Description:
	PHKL_24409:
	(SR: 8606185626   CR: JAGad54828)
	Near the end of each beep a timeout is scheduled to
	restore the audio state.  When beeps were very short and
	spaced very close together the timeout would be scheduled
	repeatedly.  If enough timeouts were generated before any
	timeouts expired, a callout table overflow panic occurs.

	Resolution:
	Before scheduling a timeout, verify that no timeouts were
	already scheduled.  If a timeout has already been scheduled,
	untimeout the previous timeout and schedule a new timeout.

	(SR: 8606188289   CR: JAGad57497)
	With the sound card for the B2600 system, if the audio
	driver gets an interrupt that it does not know how to
	handle it panics the system.

	Resolution:
	Instead of generating a panic, the driver prints out a
	warning message, clears the interrupt, and returns.

	(SR: 8606188861   CR: JAGad58077)
	With the sound card for the B2600 system, when a transmit
	buffer wraps around, the metering count is updated by the
	amount the buffer has wrapped around by.  The count ignores
	the amount that remained in the buffer prior to wrapping
	around.

	Resolution:
	Add the amount remaining in the buffer as well as the
	amount that the buffer wrapped around by.

	(SR: 8606199154   CR: JAGad68341)
	The previous patch to this, PHKL_23389, did not configure
	audio when installed.  This meant that on a system that was
	ignited without audio, the user had to manually configure
	audio

	Resolution:
	Add control scripts to the patch to configure audio.

	PHKL_23387:
	(SR: 8606187687   CR: JAGad56896)
	Enable support for the new sound card for B2600 system.

	Resolution:
	Add code to support the new sound card.

	PHKL_22348:
	(SR: 4701232991   CR: JAGad03762)
	A long standing timing related defect was exposed in the
	10.20 release when configuring the PSB2160 audio codec found
	in the 745/50, 745/100, 747/50, and 747/100 workstations.
	After sending configuration information to the codec, the
	driver was not waiting for the configuration to complete.
	Other older workstations with this codec (705/710) do not
	exhibit this defect because the processor speed on those
	workstations was not great enough for the driver to access
	the codec again before configuration was complete.  Note
	that the majority of HP workstations use a different codec
	and do not exhibit this defect.

	Resolution:
	The audio driver now properly waits for configuration to
	complete before accessing the audio hardware.

	PHKL_21724:
	(SR: 8606126493 CR: JAGac57058)
	The problem was that if all the data fit into one DMA buffer
	it was possible that the "next" DMA buffer information was
	set for a buffer which had since been deallocated. If that
	happened, an HPMC would occur when the current DMA buffer
	was completed.
	Resolution:
	The "next" DMA buffer will always be set up, even if all of
	the data will fit into one buffer.

	PHKL_17837:
	New functionality to support the B1000, C3000 and J5000
	systems on HP-UX 10.20.

	Resolution:
	New support added for new audio hardware on the above
	mentioned systems.

	PHKL_11578:
	A hardware design change opened up a timing dependency in
	the audio driver that was not exposed until the newer
	PA8000 processors were made available. The problem occurs
	when switching sampling rates. The problem usually occurs
	after a "beep" since the driver changes sampling rates to
	do the beep, and then switches back.

	PHKL_9580:
	One way of reproducing the problem is to run a common
	freeware unix application called rplay. Any application
	that calls the AUDIO_GET_STATUS ioctl of the audio
	driver before allocating a transmit buffer will cause
	the system to panic. This problem will not occur on
	a 705,710 or 74x series machine. Any machine with CD
	quality audio hardware will exhibit the problem.

SR:
	1653214379 4701232991 4701341545 4701398263 8606126493
	8606185626 8606188289 8606188861 8606199154 8606187687

Patch Files:
	/usr/conf/lib/libhp-ux.a(audio.o)
	/usr/conf/lib/libhp-ux.a(audio1.o)
	/usr/conf/lib/libhp-ux.a(audio2.o)
	/usr/conf/lib/libhp-ux.a(audio3.o)
	/usr/conf/lib/libhp-ux.a(audio4.o)
	/usr/conf/lib/libhp-ux.a(audio_shared.o)
	/usr/include/sys/audio.h

what(1) Output:
	/usr/conf/lib/libhp-ux.a(audio.o):
		audio.c $Date: 2001/07/16 10:00:15 $ $Revision: 1.7.
			98.13 $ PATCH_10.20 (PHKL_24409)
	/usr/conf/lib/libhp-ux.a(audio1.o):
		audio1.c $Date: 2001/07/16 10:00:23 $ $Revision: 1.2
			.98.5 $ PATCH_10.20 (PHKL_24409)
	/usr/conf/lib/libhp-ux.a(audio2.o):
		audio2.c $Date: 2001/07/16 10:00:24 $ $Revision: 1.2
			.98.5 $ PATCH_10.20 (PHKL_24409)
	/usr/conf/lib/libhp-ux.a(audio3.o):
		audio3.c $Date: 2001/07/16 10:00:26 $ $Revision: 1.2
			.98.5 $ PATCH_10.20 (PHKL_24409)
	/usr/conf/lib/libhp-ux.a(audio4.o):
		audio4.c $Date: 2001/07/16 10:00:28 $ $Revision: 1.2
			.98.5 $ PATCH_10.20 (PHKL_24409)
	/usr/conf/lib/libhp-ux.a(audio_shared.o):
		audio_shared.c $Date: 2001/07/16 09:46:50 $ $Revisio
			n: 1.2.98.4 $ PATCH_10.20 (PHKL_24409)
	/usr/include/sys/audio.h:
		audio.h    $Date: 2001/07/16 10:00:22 $ $Revision: 1
			.10.98.6 $ PATCH_10.20 (PHKL_24409)

cksum(1) Output:
	2214862336 23208 /usr/conf/lib/libhp-ux.a(audio.o)
	3483084729 14952 /usr/conf/lib/libhp-ux.a(audio1.o)
	1607859505 22056 /usr/conf/lib/libhp-ux.a(audio2.o)
	525345642 31168 /usr/conf/lib/libhp-ux.a(audio3.o)
	3277274181 48456 /usr/conf/lib/libhp-ux.a(audio4.o)
	3617220648 29852 /usr/conf/lib/libhp-ux.a(audio_shared.o)
	3630083078 30465 /usr/include/sys/audio.h

Patch Conflicts: None

Patch Dependencies: None

Hardware Dependencies: None

Other Dependencies:
	All machines except 9000/705,710,74x with audio h/w.

Supersedes:
	PHKL_9580 PHKL_11578 PHKL_17837 PHKL_21724 PHKL_22348 PHKL_23387

Equivalent Patches:
	PHKL_24296:
	s700: 11.00

	PHKL_24408:
	s700: 11.11

Patch Package Size: 270 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_24409

	5a. For a standalone system, run swinstall to install the
	    patch:

		swinstall -x autoreboot=true -x match_target=true \
			-s /tmp/PHKL_24409.depot

	By default swinstall will archive the original software in
	/var/adm/sw/patch/PHKL_24409.  If you do not wish to retain a
	copy of the original software, you can create an empty file
	named /var/adm/sw/patch/PATCH_NOSAVE.

	WARNING: If this file exists when a patch is installed, the
	         patch cannot be deinstalled.  Please be careful
		 when using this feature.

	It is recommended that you move the PHKL_24409.text file to
	/var/adm/sw/patch for future reference.

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

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

Special Installation Instructions: None