Patch Name: PHKL_30280 Patch Description: s700_800 11.00 New audio h/w support + cumulative fixes Creation Date: 04/01/21 Post Date: 04/02/02 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.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_26031: PANIC CORRUPTION PHKL_24296: PANIC PHKL_21750: PANIC PHKL_20899: PANIC PHKL_20158: PANIC Audio application, mpeg3play, can cause kernel to panic. Also kernel panics on 710/705 machines. PHKL_18503: PANIC CORRUPTION Category Tags: defect_repair hardware_enablement general_release critical panic corruption Path Name: /hp-ux_patches/s700_800/11.X/PHKL_30280 Symptoms: PHKL_30280: ( SR:8606333675 CR:JAGae94763 ) /etc/rc.config.d/audio is modified to start the Aserver automatically regardless of the previous settings. PHKL_26031: ( SR:8606228492 CR:JAGad97549 ) Defect is a timing issue with beep that causes a system panic. Although it is possible to get the panic in any environment, it is far more likely to happen when beep is set to a very short duration and a series of beeps are generated closely together. This is the only scenario where the panic has been seen. The panic message and stack trace can vary, but, for systems other than the B2600, it may include audio3_isr on the stack. The 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_25609: ( SR:8606225240 CR:JAGad94328 ) Genius-Kye Sound Maker 5.1 unsupported in hpux audio driver. ( SR:8606230038 CR:JAGad99089 ) The AUDIO_GET_INPUT ioctl reports that the input is always AUDIO_IN_MIKE no matter what the actual input is. ( SR:8606230035 CR:JAGad99086 ) Potential sound distortion when using Open Sound Software. PHKL_25026: ( SR:8606215184 CR:JAGad84372 ) Normal user builds that include audio.h fail to compile PHKL_24296: ( 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 ( SR: 8606188289 CR: JAGad57497 ) With the sound card for the B2600 system, if the audio driver gets an unexpected interrupt, it panics the system. ( 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: 8606207155 CR: JAGad76330 ) Audio beep may fail to sound. PHKL_23388: ( SR: 8606187687 CR: JAGad56896 ) Enable support for the new sound card for B2600 systems. PHKL_21750: ( SR: 8606139774 CR: JAGad09086 ) 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_20899: ( SR: 8606124950 DTS: JAGac40342 ) Under some circumstances, the audio driver could cause a data page fault. Since this is dependent on the address of a buffer, it would not occur for all users. PHKL_20158: ( SR: 8606107870 DTS: JAGab78174 ) No audio support on B1000, C3000, J5000 and J7000 ( SR: 8606105699 DTS: JAGab73929 ) install kernel panic's on a 710/705 ( SR: 8606106631 DTS: JAGab75904 ) Audio application, mpeg3play, causes kernel panic PHKL_18503: (SR: 4701423210 DTS: JAGaa95627 ) System panic playing audio files on 64-bit kernels. Defect Description: PHKL_30280: ( SR:8606333675 CR:JAGae94763 ) The postinstall script for the patch modifies /etc/rc.config.d/audio to start the Aserver Resolution: The configuration files in /etc/rc.config.d should not be changed by the patch. A NOTE is printed about the status of the Aserver but the configuration file is not changed. PHKL_26031: ( SR:8606228492 CR:JAGad97549 ) When beeps are generated, beep data is put into the beep buffer by the audio driver. The beep buffer is basically a circular buffer that is always filled with beep data. The audio driver tries to ensure that the beep data in the buffer is current by staying ahead of the audio hardware. If the audio hardware is playing the first page of beep data, the audio driver should be filling the second page of beep data. In order to do this, it keeps a pointer to the current position in the buffer that should be filled. The pointer (usually) toggles between the beginnning and the middle of the beep buffer. If an interrupt comes in as a new beep is being generated (after all of the pointers have been checked by the function generating the beep) there is the chance that the interrupt will then move the pointer up so that the driver will start filling up the next page of beep data. When the function that was generating the beep gets re-entered after the interrupt, it is unaware that the pointer location has changed. It proceeds to fill the beep buffer up from the location of the pointer. Since the pointer is now pointing to the end of the buffer, the driver writes the beep data out to a random page of kernel memory, corrupting that kernel memory (user memory is unaffected) and causing a panic. 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_25609: ( SR:8606225240 CR:JAGad94328 ) Genius-Kye Sound Maker 5.1 audio card not supported in current versions of the audio driver Resolution: Add support for the Genius-Kye Sound Maker 5.1 ( SR:8606230038 CR:JAGad99089 ) When AUDIO_SET_INPUT ioctl is called, the input is changed in the hardware but is not saved in the audio driver. This means that the driver will always report that the input is AUDIO_IN_MIKE no matter what the actual input is. Resolution: Update the input in the audio driver. ( SR:8606230035 CR:JAGad99086 ) When OSS does a write, the write routine does not initialize one of the variables, causing the data to be potentially put into the wrong area in the write buffers. Resolution: Initialize the variable. PHKL_25026: ( SR:8606215184 CR:JAGad84372 ) audio.h references wsio/pci.h instead of sys/pci.h. wsio/pci.h is only used for kernel builds, making normal user builds that included audio.h fail. Resolution: Remove the reference to wsio/pci.h for normal user builds since a normal user build does not need any pci.h (both sys/pci.h or wsio/pci.h are unneeded). PHKL_24296: ( SR: 860685626 CR: JAGad54828 ) Near the end of each beep, a timeout was scheduled to restore the audio state. When beeps were very short and spaced very close together, the timeout would get scheduled repeatedly. If enough timeouts got generated before any timeouts expired, a callout table overflow panic occurs. Resolution: Before scheduling a timeout, verify that no timeouts were already schedule. 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: 8606207155 CR: JAGad76330 ) Fields in the audio descriptor were rearranged, causing the "flag" field to get moved. When other, non-audio kernel files tried to directly access the flag field, they obtained was invalid. This caused them to think that beep was unavailable and they, therefore, did not initiate the beep. Resolution: Restore audio descriptor to original state. PHKL_23388: ( SR: 8606187687 CR: JAGad56896 ) Enable support for the new sound card for B2600 systems. Resolution: Add code to support the new sound card. PHKL_21750: ( SR: 8606139774 CR: JAGad09086 ) 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_20899: ( SR: 8606124950 DTS: JAGac40342 ) When audio3 support was added to HP-UX 11.00, a fix from HP-UX 10.20 was inadvertently omitted. In addition, under some circumstances the driver would access a buffer using incorrect pointer logic. Resolution: Restore the missing HP-UX 10.20 fix, and rework the logic that uses the buffer pointers to always use the correct pointers. PHKL_20158: ( SR: 8606107870 DTS: JAGab78174 ) B1000, C3000, J5000 and J7000 use a new audio chip which is not supported by the audio driver. Resolution: Add code to support the Analog devices chip. ( SR: 8606105699 DTS: JAGab73929 ) There is a missing break statement in the code which causes audio2 driver code to be run on a machine that uses audio1 driver. Resolution: Add the missing break statement. ( SR: 8606106631 DTS: JAGab75904 ) Incorrect pointer being passed to a routine causes a bad pointer dereference. Resolution: Correct the parameters being passed to the routine. PHKL_18503: ( SR: 4701423210 DTS: JAGaa95627 ) When a play underflow was received, 64-bit pointer arithmetic was done incorrectly, causing a memory corruption. Resolution: Cast the pointer value to the correct data type. Enhancement: No SR: 4701423210 8606105699 8606106631 8606107870 8606124950 8606139774 8606185626 8606187687 8606188289 8606188861 8606207155 8606215184 8606225240 8606228492 8606230035 8606230038 8606333675 Patch Files: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/audio.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /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(audio5.o) /usr/conf/lib/libhp-ux.a(audio_shared.o) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /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(audio5.o) /usr/conf/lib/libhp-ux.a(audio_shared.o) what(1) Output: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: /usr/include/sys/audio.h: audio.h $Date: 2001/12/07 10:02:53 $Revision: r11ros /7 PATCH_11.00 (PHKL_25609) */ OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libhp-ux.a(audio.o): audio.c $Date: 2004/01/21 09:33:04 $Revision: r11ros /9 PATCH_11.00 (PHKL_30280) /usr/conf/lib/libhp-ux.a(audio1.o): audio1.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio2.o): audio2.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio3.o): audio3.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio4.o): audio4.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio5.o): audio5.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/1 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio_shared.o): audio_shared.c $Date: 2002/03/25 11:08:09 $Revision: r11ros/4 PATCH_11.00 (PHKL_26031) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libhp-ux.a(audio.o): audio.c $Date: 2004/01/21 09:33:04 $Revision: r11ros /9 PATCH_11.00 (PHKL_30280) /usr/conf/lib/libhp-ux.a(audio1.o): audio1.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio2.o): audio2.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio3.o): audio3.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio4.o): audio4.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/3 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio5.o): audio5.c $Date: 2001/12/07 10:02:53 $Revision: r11ro s/1 PATCH_11.00 (PHKL_25609) /usr/conf/lib/libhp-ux.a(audio_shared.o): audio_shared.c $Date: 2002/03/25 11:08:09 $Revision: r11ros/4 PATCH_11.00 (PHKL_26031) cksum(1) Output: ProgSupport.C-INC,fr=B.11.00,fa=HP-UX_B.11.00_32/64,v=HP: 1999372672 31001 /usr/include/sys/audio.h OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_32,v=HP: 1936132997 25348 /usr/conf/lib/libhp-ux.a(audio.o) 2382045733 15780 /usr/conf/lib/libhp-ux.a(audio1.o) 3488791183 25124 /usr/conf/lib/libhp-ux.a(audio2.o) 4196859292 35340 /usr/conf/lib/libhp-ux.a(audio3.o) 3556945948 52836 /usr/conf/lib/libhp-ux.a(audio4.o) 2929104109 43164 /usr/conf/lib/libhp-ux.a(audio5.o) 1662304123 34180 /usr/conf/lib/libhp-ux.a(audio_shared.o) OS-Core.CORE2-KRN,fr=B.11.00,fa=HP-UX_B.11.00_64,v=HP: 1536092737 58392 /usr/conf/lib/libhp-ux.a(audio.o) 889485691 38584 /usr/conf/lib/libhp-ux.a(audio1.o) 3518607195 56864 /usr/conf/lib/libhp-ux.a(audio2.o) 1716668515 79048 /usr/conf/lib/libhp-ux.a(audio3.o) 2969004683 111728 /usr/conf/lib/libhp-ux.a(audio4.o) 3800245156 93040 /usr/conf/lib/libhp-ux.a(audio5.o) 1315634960 58168 /usr/conf/lib/libhp-ux.a(audio_shared.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_18503 PHKL_26031 PHKL_25609 PHKL_25026 PHKL_24296 PHKL_23388 PHKL_21750 PHKL_20899 PHKL_20158 Equivalent Patches: None Patch Package Size: 330 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_30280 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_30280.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_30280. 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_30280.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_30280.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_30280.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None