Patch Name: PHKL_29529 Patch Description: s700_800 11.11 new audio h/w support + cumulative fixes Creation Date: 03/10/09 Post Date: 03/11/03 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: N/A Filesets: ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP Automatic Reboot?: Yes Status: General Release Critical: No (superseded patches were critical) PHKL_28253: PANIC PHKL_26032: PANIC CORRUPTION PHKL_24408: PANIC Category Tags: defect_repair hardware_enablement general_release critical panic corruption Path Name: /hp-ux_patches/s700_800/11.X/PHKL_29529 Symptoms: PHKL_29529: ( SR:8606322568 CR:JAGae85036 ) Unclaimed PCI audio device will be present in ioscan output. The PCI device and vendor id is (13f60111). Audio applications will not work. PHKL_28253: ( SR:8606285309 CR:JAGae49254 ) When booting an install kernel on a system with an IPMI device on it, an HPMC may occur early in the boot process. PHKL_26032: ( 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_25610: ( SR:8606225240 CR:JAGad94328 ) Genius-Kye Sound Maker 5.1 unsupported in hpux audio driver. ( SR:8606230038 CR:JAGad99089 ) Potential sound distortion when using Open Sound Software. ( SR:8606230035 CR:JAGad99086 ) The AUDIO_GET_INPUT ioctl reports that input is always AUDIO_IN_MIKE no matter what the actual input is. PHKL_24408: ( SR:8606200591 CR:JAGad69767 ) Under certain circumstances, the audio driver could panic the system with a data page fault panic. The panic stack trace may be similar to: panic+0x6c report_trap_or_int_and_panic+0x94 interrupt+0x208 $ihndlr_rtn+0x0 audio3_isr+0x7ac sapic_interrupt+0x2c mp_ext_interrupt+0x2f0 ivti_patch_to_nop3+0x0 b_pcxu_loop+0x58 copyout+0x98 hpstreams_read_int+0x2d4 streampipe_rdwr+0x48 vno_rw+0x1ac read+0x10c syscall+0x204 $syscallrtn+0x0 ( 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: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:8606194714 CR:JAGad63922 ) On a cold install with PHKL_23389, the postinstall script will leave two error messages in the log and leave an audio.tmp file in root. ( 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. PHKL_23389: ( SR:8606187687 CR:JAGad56896 ) Enable support for the new sound card for B2600 systems. Defect Description: PHKL_29529: ( SR:8606322568 CR:JAGae85036 ) The Phillips sound card PSC-1602 is not supported in HP-UX. Resolution: Add support for the Phillips PSC-1602 audio card. PHKL_28253: ( SR:8606285309 CR:JAGae49254 ) There was a conflict between the id used by the IPMI driver to claim the IPMI device and an id used by the audio driver to claim a certain audio device. Because of this conflict, the audio driver attempted to claim the IPMI device and write to invalid registers on the device. Resolution: Change the audio driver so it will not longer claim devices with the id used by the IPMI device. PHKL_26032: ( 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 beginning 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 the 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_25610: ( 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 SoundMaker 5.1 ( SR:8606230038 CR:JAGad99089 ) When OSS does a write, the write routine does not initlize one of the variables, causing the data to be potentially put into the wrong area in the write buffers. Resolution: Initialize the variable. ( SR:8606230035 CR:JAGad99086 ) When AUDIO_SET_INPUT is called, the input is changed in the hardware but is not saved in the aduio driver. This means that the input is AUDIO_IN_MIKE no matter what the actual input is. Resolution: Update the input in the audio driver. PHKL_24408: ( SR:8606200591 CR:JAGad69767 ) All audio hardware except for the hardware found in the B2600 system requires that the buffers' physical addresses be mapped. The function that allocates and maps these buffers is passed in a flag that indicates that the buffers need to be mapped. When calling the ioctl AUDIO_SET_RXBUFSIZE, the flag is set to allow mapping only within an if clause. If that clause is not entered, the buffers are not mapped. Resolution: Set the flag outside of the if clause. ( SR:8606188861 CR:JAGad58077 ) With the sound card for the B2600 system, when a transmit buffer wraps around the metering count is update 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: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 occurred. 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:8606194714 CR:JAGad63922 ) The postinstall script in PHKL_23389 assumed the presence of /etc/rc.config.d/audio, which is installed by the audio subsystem. On a cold install, the audio subsystem is installed after the patch PHKL_23389, so the audio file is not yet present at the time the patch is installed. Resolution: Verify the existence of /etc/rc.config.d/audio prior to attempting to access it. ( 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. PHKL_23389: ( SR:8606187687 CR:JAGad56896 ) Enable support for the new sound card for B2600 systems. Resolution: Add code to support the new sound card. Enhancement: No SR: 8606185626 8606187687 8606188289 8606188861 8606194714 8606200591 8606225240 8606228492 8606230035 8606230038 8606285309 8606322568 Patch Files: ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/include/sys/audio.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libgraf.a(beep.o) /usr/conf/lib/libgraf.a(kbd_code.o) /usr/conf/lib/libgraf.a(s_hil_drv.o) /usr/conf/lib/libwsio.a(audio.o) /usr/conf/lib/libwsio.a(audio1.o) /usr/conf/lib/libwsio.a(audio2.o) /usr/conf/lib/libwsio.a(audio3.o) /usr/conf/lib/libwsio.a(audio4.o) /usr/conf/lib/libwsio.a(audio5.o) /usr/conf/lib/libwsio.a(audio6.o) /usr/conf/lib/libwsio.a(audio_shared.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libgraf.a(beep.o) /usr/conf/lib/libgraf.a(kbd_code.o) /usr/conf/lib/libgraf.a(s_hil_drv.o) /usr/conf/lib/libwsio.a(audio.o) /usr/conf/lib/libwsio.a(audio1.o) /usr/conf/lib/libwsio.a(audio2.o) /usr/conf/lib/libwsio.a(audio3.o) /usr/conf/lib/libwsio.a(audio4.o) /usr/conf/lib/libwsio.a(audio5.o) /usr/conf/lib/libwsio.a(audio6.o) /usr/conf/lib/libwsio.a(audio_shared.o) what(1) Output: ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: /usr/include/sys/audio.h: audio.h $Date: 2003/07/30 13:35:37 $Revision: r11.11 /4 PATCH_11.11 (PHKL_29529) */ OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libgraf.a(beep.o): beep.c $Date: 2001/07/09 07:28:35 $Revision: r11.11/ 2 PATCH_11.11 (PHKL_24408) /usr/conf/lib/libgraf.a(kbd_code.o): kbd_code.c $Date: 2003/08/29 14:20:35 $Revision: r11 .11/3 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libgraf.a(s_hil_drv.o): s_hil_drv.c $Date: 2001/07/09 07:28:35 $Revision: r1 1.11/2 PATCH_11.11 (PHKL_24408) /usr/conf/lib/libwsio.a(audio.o): audio.c $Date: 2003/07/30 13:35:37 $Revision: r11.11 /5 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libwsio.a(audio1.o): audio1.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio2.o): audio2.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio3.o): audio3.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio4.o): audio4.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio5.o): audio5.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/1 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio6.o): audio6.c $Date: 2003/07/30 13:35:37 $Revision: r11.1 1/1 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libwsio.a(audio_shared.o): audio_shared.c $Date: 2002/04/03 11:39:43 $Revision: r11.11/4 PATCH_11.11 (PHKL_26032) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libgraf.a(beep.o): beep.c $Date: 2001/07/09 07:28:35 $Revision: r11.11/ 2 PATCH_11.11 (PHKL_24408) /usr/conf/lib/libgraf.a(kbd_code.o): kbd_code.c $Date: 2003/08/29 14:20:35 $Revision: r11 .11/3 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libgraf.a(s_hil_drv.o): s_hil_drv.c $Date: 2001/07/09 07:28:35 $Revision: r1 1.11/2 PATCH_11.11 (PHKL_24408) /usr/conf/lib/libwsio.a(audio.o): audio.c $Date: 2003/07/30 13:35:37 $Revision: r11.11 /5 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libwsio.a(audio1.o): audio1.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio2.o): audio2.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio3.o): audio3.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio4.o): audio4.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/3 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio5.o): audio5.c $Date: 2001/12/04 07:23:18 $Revision: r11.1 1/1 PATCH_11.11 (PHKL_25610) /usr/conf/lib/libwsio.a(audio6.o): audio6.c $Date: 2003/07/30 13:35:37 $Revision: r11.1 1/1 PATCH_11.11 (PHKL_29529) /usr/conf/lib/libwsio.a(audio_shared.o): audio_shared.c $Date: 2002/04/03 11:39:43 $Revision: r11.11/4 PATCH_11.11 (PHKL_26032) cksum(1) Output: ProgSupport.C-INC,fr=B.11.11,fa=HP-UX_B.11.11_32/64,v=HP: 1558992042 31044 /usr/include/sys/audio.h OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_32,v=HP: 3915310780 3264 /usr/conf/lib/libgraf.a(beep.o) 3768431661 14508 /usr/conf/lib/libgraf.a(kbd_code.o) 894911094 11156 /usr/conf/lib/libgraf.a(s_hil_drv.o) 1800719184 25360 /usr/conf/lib/libwsio.a(audio.o) 2341921494 15432 /usr/conf/lib/libwsio.a(audio1.o) 2348626561 24328 /usr/conf/lib/libwsio.a(audio2.o) 3555323947 34792 /usr/conf/lib/libwsio.a(audio3.o) 2821064672 52300 /usr/conf/lib/libwsio.a(audio4.o) 789286838 41976 /usr/conf/lib/libwsio.a(audio5.o) 2835574375 39572 /usr/conf/lib/libwsio.a(audio6.o) 1136360620 34044 /usr/conf/lib/libwsio.a(audio_shared.o) OS-Core.CORE2-KRN,fr=B.11.11,fa=HP-UX_B.11.11_64,v=HP: 1891550521 7896 /usr/conf/lib/libgraf.a(beep.o) 3478478802 24680 /usr/conf/lib/libgraf.a(kbd_code.o) 2027312641 26296 /usr/conf/lib/libgraf.a(s_hil_drv.o) 367078098 57792 /usr/conf/lib/libwsio.a(audio.o) 799436268 35968 /usr/conf/lib/libwsio.a(audio1.o) 938583648 52552 /usr/conf/lib/libwsio.a(audio2.o) 1555087707 74728 /usr/conf/lib/libwsio.a(audio3.o) 1809606825 105672 /usr/conf/lib/libwsio.a(audio4.o) 3642661180 86600 /usr/conf/lib/libwsio.a(audio5.o) 3436286724 93168 /usr/conf/lib/libwsio.a(audio6.o) 1926817826 57080 /usr/conf/lib/libwsio.a(audio_shared.o) Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_28253 PHKL_26032 PHKL_25610 PHKL_24408 PHKL_23389 Equivalent Patches: None Patch Package Size: 410 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_29529 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHKL_29529.depot By default swinstall will archive the original software in /var/adm/sw/save/PHKL_29529. 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_29529.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHKL_29529.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHKL_29529.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None