Patch Name: PHNE_23881 Patch Description: s700_800 10.20 PCI Mux driver/utilities cumulative patch Creation Date: 02/04/10 Post Date: 02/05/01 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: PCI-MUX B.10.20.00 PCI-MUX B.10.20.01 PCI-MUX B.10.20.02 PCI-MUX B.10.20.03 PCI-MUX B.10.20.04 PCI-MUX B.10.20.05 PCI-MUX B.10.20.06 PCI-MUX B.10.20.07 PCI-MUX B.10.20.09 PCI-MUX B.10.20.11 Filesets: PCI-MUX.PCI-MUX-KRN,B.10.20.00 PCI-MUX.PCI-MUX-KRN,B.10.20.01 PCI-MUX.PCI-MUX-KRN,B.10.20.02 PCI-MUX.PCI-MUX-KRN,B.10.20.03 PCI-MUX.PCI-MUX-KRN,B.10.20.04 PCI-MUX.PCI-MUX-KRN,B.10.20.05 PCI-MUX.PCI-MUX-KRN,B.10.20.06 PCI-MUX.PCI-MUX-KRN,B.10.20.07 PCI-MUX.PCI-MUX-KRN,B.10.20.09 PCI-MUX.PCI-MUX-KRN,B.10.20.11 PCI-MUX.PCI-MUX-RUN,B.10.20.00 PCI-MUX.PCI-MUX-RUN,B.10.20.01 PCI-MUX.PCI-MUX-RUN,B.10.20.02 PCI-MUX.PCI-MUX-RUN,B.10.20.03 PCI-MUX.PCI-MUX-RUN,B.10.20.04 PCI-MUX.PCI-MUX-RUN,B.10.20.05 PCI-MUX.PCI-MUX-RUN,B.10.20.06 PCI-MUX.PCI-MUX-RUN,B.10.20.07 PCI-MUX.PCI-MUX-RUN,B.10.20.09 PCI-MUX.PCI-MUX-RUN,B.10.20.11 Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_23881: PANIC HANG CORRUPTION Path Name: /hp-ux_patches/s700_800/10.X/PHNE_23881 Symptoms: PHNE_23881: 1. { SR: 8606227010 CR: JAGad96072 } Mux initialization is not robust. 2. { SR: 8606215957 CR: JAGad85129 } Terminal cross talk when using A6749A PCI-MUX 64 port with 25 feet cable. 3. { SR: 8606220546 CR: JAGad89684 } The system panics with Data Page Fault, after logging the following diagnostic message in the system buffers, "q_data_count >= q_size, possibly corrupting memory" The stack trace is as follows: panic+0x10 report_trap_or_int_and_panic+0xe8 0x1 0xf 0x7ffe6ec0 trap+0xa48 $RDB_trap_patch+0x20 delay+0x44 0xa eisa_mux0_sst_write+0x414 0x182a310 0x7ffe6a88 eisa_mux0_write+0x68 0xef022100 0x7ffe6a88 spec_rdwr+0x7bc vno_rw+0xb8 0x10f2590 0x2 0x7ffe6a88 rwuio+0xc4 0x7ffe6a88 0x2 0x1 write+0x58 0x7ffe6268 $syscall+0x1a4 $syscallrtn+0x0 4. { SR: 8606223851 CR: JAGad92948 } Symbolic debugging functionality for PCI-MUX does not exist. 5. { SR: 8606201501 CR: JAGad70677 } System panics with the following diagnostic message, "Mux timed out waiting for flow control to clear." The stack trace is as follows: panic+0x14 0'005caae8 settimeout_for_cpu+0x174 timeout+0x3c 0'005b6688 EQNX_sst_close+0xe8 0'403d4650 pci_mux0_close+0x74 call_open_close+0x1f8 0'00000002 closed+0xb0 n/a 0'00002000 0'00000003 spec_close+0x54 0'437db808 0'00000003 vn_close+0x48 vno_close+0x20 0'03762828 closef+0x64 exit+0x1108 psig+0x244 syscall+0x74c $syscallrtn+0x0 6. { SR: 8606233790 CR: JAGae03014 } Killing a process sometimes leaves hung ports. 7. { SR: 8606173669 CR: JAGad42926 ) Occasionally, writes of data larger than 4k cause the system to panic. 8. { SR: 8606233791 CR: JAGae03015 } Using 25 feet cable causes Mux board to fail during initialization. 9. { SR: 8606233792 CR: JAGae03016 } Invoking emux_diag(1M) will occasionally close window. 10. { SR: 5003419994 CR: JAGaa20658 } System panics with "Data Page Fault" in function EQNX_sst_proc() for Mux. 11. { SR: 1653262006 CR: JAGaa20669 } Read(2) does not read data although select(2) returns value (true),indicating data exists. 12. { SR: 5003434316 CR: JAGaa24032 } Data flow does not resume when tcflow() is called for Mux port. 13. { SR: 5003434274 CR: JAGaa23975 } ioctl() call with FIONREAD as argument does not work on Mux. 14. Modem hangs due to garbage output from Mux port . Defect Description: PHNE_23881: 1. { SR: 8606227010 CR: JAGad96072 } The initialization code for the mux product has to be made more robust. This involves enhancing ring initialization patterns and resetting registers that could have been corrupted in the case of a card reset. Resolution: The initialization process has been modified to pre-set all necessary registers with appropriate values and the ring initialization has been made more robust. 2. { SR: 8606215957 CR: JAGad85129 } A6749A, PCI mux products have terminal I/O problems such as "cross talk" (data is being displayed on the wrong terminal). This is due to corrupt memory addresses being saved in the event of a reset. Resolution: Code has been fixed to re-initialize corrupt memory addresses which could lead to crosstalk. 3. { SR: 8606220546 CR: JAGad89684 } The "delay()" function call in function eqnx_mux0_sst_write() causes the system to panic. The panic is a result of argument mismatch. Resolution: The "delay()" function call has now been fixed to pass appropriate arguments hence fixing the panic. 4. { SR: 8606223851 CR: JAGad92948 } Enhance Mux product to include PCI-MUX code symbols and hence allow Mux data structures to be displayed using q4. This would help faster analysis of crash dumps. Resolution: A new file libpci_muxdbg.o has been added to the product. This file contains the necessary symbolic information required for kernel debugging. 5. { SR: 8606201501 CR: JAGad70677 } Coding error prevented untimeout() from being called. This function removes the timeout interrupt handler from the callout table. Hence the callout table overflowed causing the panic. Resolution: Changes have been made to call the untimeout() routine appropriately and prevent the callout table from overflowing. 6. { SR: 8606233790 CR: JAGae03014 } Defect with SR: 8606201501, prevented the close routine from flushing the output buffers and hence leaving the driver in a flow-controlled or hung state. Resolution: Changes have been made to call the close routine and hence change the state back to normal. 7. { SR: 8606173669 CR: JAGad42926 ) A hardware register is being corrupted and set to -1 during a write. This in turn causes the driver to uiomove() all the remaining data (uio_resid) into the driver's internal buffer (uio_hack). If the size of the data moved is > 4k, memory beyond uio_hack is overwritten. Resolution: Appropriate changes have been made to avoid writing beyond the 4k limit of uio_hack and also, to handle conditions of hardware register corruption. 8. { SR: 8606233791 CR: JAGae03015 } State machine gets incorrectly initialized when the board is reset due to timing issues related to 25 feet cables. Resolution: Initialization code has been further enhanced to handle the above 25 feet cable problem. 9. { SR: 8606233792 CR: JAGae03016 } emux_diag(1M) was compiled with the wrong curses library. Resolution: The appropriate curses library is now being used for compilation. 10. { SR: 5003419994 CR: JAGaa20658 } The panic was caused by an error in the mux code that was resulting in a bad pointer being accessed. Resolution: Code has been modified to access valid pointers. 11. { SR: 1653262006 CR: JAGaa20669 } Read(2) did not read data due to an error in the Mux driver's RAW mode processing logic. Resolution: Appropriate changes have been made in the RAW mode processing code to rectify the read(2) problem. 12. { SR: 5003434316 CR: JAGaa24032 } Data flow does not resume due to an error in the flow control logic of the Mux driver. Resolution: Appropriate changes have made to rectify flow control errors. 13. { SR: 5003434274 CR: JAGaa23975 } The option FIONREAD was not being processed by the Mux driver when set to RAW mode. Resolution: Appropriate changes have been made in the driver to process the FIONREAD option. 14. A logical error in the driver's code, disabled processing of the OPOST command in the Mux hardware resulting in transmission of garbage characters. Resolution: Appropriate changes have been made to enable OPOST processing in the Mux hardware. SR: 5003434274 5003434316 1653262006 5003419994 8606233792 8606233791 8606173669 8606233790 8606201501 8606227010 8606215957 8606220546 8606223851 Patch Files: /usr/conf/lib/libpci_mux.a /usr/conf/lib/libpci_muxdbg.o /usr/conf/master.d/pci_mux /usr/bin/emux_diag /usr/bin/emux_stty what(1) Output: /usr/conf/lib/libpci_mux.a: HP PCI Mux Driver, FILESET PCI-MUX-KRN Version B.10. 20.14 PHNE_23881 Copyright (c) 1997 Hewlett-Packard Company HP PCI Mux Driver, FILESET PCI-MUX-KRN Version B.10. 20.14 PHNE_23881 Copyright (c) 1997 Hewlett-Packard Company /usr/conf/lib/libpci_muxdbg.o: HP PCI Mux Dbg Lib, FILESET PCI-MUX-KRN Version B.10 .20.14 PHNE_23881 Copyright (c) 1997 Hewlett-Packard Company /usr/conf/master.d/pci_mux: $Revision: 1.1.71.6 $ /usr/bin/emux_stty: HP PCI/EISA Mux stty (emux_stty), Version B.10.20.14 PHNE_23881 /usr/bin/emux_diag: HP PCI/EISA Mux diagnostic (emux_diag), Version B.10 .20.14 PHNE_23881 cksum(1) Output: 3392385380 104692 /usr/conf/lib/libpci_mux.a 270874485 184260 /usr/conf/lib/libpci_muxdbg.o 4011965082 4296 /usr/conf/master.d/pci_mux 2858049178 156153 /usr/bin/emux_diag 289618334 36924 /usr/bin/emux_stty Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: PHNE_25491: s700: 11.11 s800: 11.11 PHNE_25489: s700: 11.00 s800: 11.00 Patch Package Size: 530 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 PHNE_23881 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHNE_23881.depot By default swinstall will archive the original software in /var/adm/sw/patch/PHNE_23881. 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 PHNE_23881.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/PHNE_23881.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None