Patch Name: PHKL_26004 Patch Description: s700 10.20 Audio driver repair and support patch Creation Date: 02/01/02 Post Date: 02/01/07 Hardware Platforms - OS Releases: s700: 10.20 Products: N/A Filesets: OS-Core.CORE-KRN ProgSupport.C-INC Automatic Reboot?: Yes Status: General Release Critical: Yes PHKL_26004: PANIC CORRUPTION 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_26004 Symptoms: PHKL_26004: (SR: 8606228492 CR: JAGad97549) System panics with a data page fault when beep is set to a very short duration. The panic messsage and stack trace can vary, but, for systems other than the B2600, it may include audio3_isr on the stack. This panic has been seen on both a B2600 with a plug-in audio card and a C3600 with built-in audio. The defect could be found on any system with either the PCI 128 plug-in card (found only on the B2600) or the AD1819 card (found on the B1000, B2000, C3000, C3600, J5000, J5600, J6000, and J7000). Note that it may not have any audio functions on the stack. Here is a sample stack trace from a B2600: panic+0x10 report_trap_or_int_and_panic+0xe8 trap+0x1314 $RDB_trap_patch+0x20 spinlock_usav_patched_to_nop+0xc lock_write+0x1c findpreg+0xb0 pfault+0x174 trap+0xd9c $RDB_trap_patch+0x20 Here is a sample stack trace from a C3600: panic+0x10 report_trap_or_int_and_panic+0xe8 interrupt+0x458 ihandler+0x868 audio3_isr+0x4f4 elroy_isr+0x104 external_interrupt+0x44c add_cycles+0x8 thread_ticks+0x3c USERTICKS+0x1c otimes+0x28 syscall+0x75c syscallinit+0x320 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_26004: (SR: 8606228492 CR: JAGad97549) When a lot of beeps were generated very close together, there was the possibility that the pointers to buffers could get moved beyond the end of the buffer before the initial beep could finish. When the buffers were then subsequently filled with beep data, it overwrote other data in the kernel, leading to memory corruption. Resolution: Problem occured in audio subsystem function. Solution was to check pointers on entrance to the function and to store local pointers to use in the function. 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 8606187687 8606188289 8606188861 8606199154 8606228492 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: 2002/01/02 13:31:05 $ $Revisio n: 1.2.98.5 $ PATCH_10.20 (PHKL_26004) /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) 246598566 30112 /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 PHKL_24409 Equivalent Patches: None 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_26004 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_26004.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_26004. 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_26004.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_26004.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None