Patch Name: PHKL_13744 Patch Description: s700 10.20 SCSI, Intrpt stack overflow, EMC, PCI, CCIO perf Creation Date: 98/01/09 Post Date: 98/01/15 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_13744: PANIC PHKL_13014: PANIC PHKL_11545: PANIC PHKL_12306: HANG PHKL_11332: PANIC PHKL_11002: OTHER T600 will not BOOT PHKL_10769: PANIC PHKL_8908: PANIC CORRUPTION Panic should occur only if root volume is LVM on built-in SCSI in 710, 720, 715/50, 725/50. Corruption should only occur on QUANTUM LPS525S on built-in SCSI in 710, 720, 715/50, 725/50. PHKL_8187: HANG PHKL_7987: HANG Path Name: /hp-ux_patches/s700/10.X/PHKL_13744 Symptoms: PHKL_13744: Errors in opening a tape device on the HSC bus may cause a data page fault panic. The panic occurs at st_head_pos+0x5c. PHKL_13014: - 9000/725/B panic on boot. - Tape driver rejects odd-length write requests. - "Unhandled pending interrupt" declaration and SCSI bus reset. PHKL_11545: - Fixes an intermittent panic when opening a tape device on the HSC bus - Improves performance for wide SCSI tape devices connected via the HSC bus - Allows DLT4000 devices to perform odd-sized writes PHKL_10421: When reading a tape on a 7980S tape drive, reading a partial record fails and returns I/O Error. If a tape device receives a bus reset the device will rewind. Following this, when the device is closed, the driver will write EOF marks at the beginning of the tape causing the remaining data to be unusable. When a tape device is opened for write access and the media is write protected the driver returns I/O Error, which can be ambiguous. EPERM (Permission denied) is a more descriptive error. PHKL_8755: Fixes a bug with Exabyte tape drives that caused append writes (those not at BOT) to be in non-compressed mode when using the BEST density setting. PHKL_8506: This patch changes the behavior of the open() call with a write protected tape. The open() will now fail with EIO if the mode is not O_RDONLY. PHKL_8128: Device files other than those that use the BEST density do not work. Opening such a device file returns EINVAL. This happens only on DLT tape drives. PHKL_8028: Without immediate reporting enabled a DLT tape drive will take several seconds for each filemark written. If a user application is writing many filemarks to a tape the performance will be poor. This patch enables immediate reporting of filemarks, which should improve performance for an application that writes many filemarks to a tape. PHKL_12660: EINVAL errors on FibreChannel raw disk reads and writes. PHKL_12306: Glance reports 0 MB/s. EINVAL on read/write to FC EMC Symmetrix. System hang. Device hang. PHKL_11632: SCSI bus resets when probing bus with DLT library robotic arm via ioscan. PHKL_11332: (4701356766/ DSDe437007; 4701353888/ DSDe436271) T600 systems panics under heaving i/o load stress testing during lab tests. PHKL_11002: (4701353888/ DSDe436271) T600 systems will not boot without this patch on 10.20 HP-UX. PHKL_10769: On C200 and newer workstations with PCI there is a possible HPMC that can occur due to a hardware bug in certain revisions of the PCI bus ASIC. This patch prevents the HPMC from happening. PHKL_10755: Performance enhancements for PCI SCSI (Ultra-SCSI). PHKL_9965: The performance of some drivers (mostly Networking, and for example ATM) was not optimal on Cache Coherent IO systems such as the K-series. PHKL_8908: "SCSI: Unhandled interrupt" and resulting bus reset can cause panic during boot of 710, 715/50, 720 and 725/50 workstations if root disk is LVM and on built-in SCSI bus. It's theoretically possible for the bus reset to cause data corruption on QUANTUM LPS525S disks on the bus. Some M/O drives will not work on the above systems plus 705, 715/33, 730, 735 and 755. PHKL_8187: Select timeouts are retried forever, i.e. I/O's never complete when a device is removed. SCSI bus hang and reset. PHKL_7987: System hang. Select timeouts with EMC/Symmetrix disk array. Defect Description: PHKL_13744: When an error occurs early in the open process the routine st_dev_sense can get called without any valid sense data. The sense pointer is NULL, and is passed to st_head_pos which tries to dereference the pointer. PHKL_13014: - scsi_wakeup missing; required by ISDN driver - scsi_iodone calls bp->b_iodone directly when B_CALL is set rather than calling biodone and letting it call bp->b_iodone - disk driver uses its own global variable, sd_ki, instead of the system defined global variable, km_disable, for disabling kernel metrics; and it examines sd_ki only on first open - incorrect initialization of NCR 53C700 SCSI chip for systems with sclk <= 37.5 MHz. 705/35, 715/33, 715/75, 725/75, 730/66, 735/99, 735/125/B, 750/66, 755/99, and 755/125 - SCSI bus reset while bus closed results in incorrect "Unandled pending interrupt" declaration and second bus reset. - scsi_tape driver rejects odd-length write requests on wide SCSI busses - scsi_c720 driver reports incorrect number of bytes transferred when IWR is used PHKL_11545: - The tape driver will occasionally panic on the open of a tape device which is attached to the HSC bus. The panic is caused when a tape device responds with a "check condition" very early in the open process. The problem is intermittent and can not be reliably reproduced. - Patches PHKL_10417 through PHKL_10422 changed the way the driver negotiated with the device for narrow (8 bit) or wide (16 bit) transfers. This fixed a problem with 7980S tape drives, but caused the driver to never correctly negotiate for wide transfers. Any wide device on a wide interface would suffer a performance degradation because the driver was throttling it down to 8 bit transfers instead of 16 bit transfers. - Because of problems with transfering an odd number of bytes over a wide bus, the driver prevents doing an odd sized write to a wide device. The DLT4000 is a narrow device, but it is differential so it attaches to a wide bus. The driver was looking at the bus size, rather than the device type, to determine the transfer size and so it was blocking odd-sized transfers to DLT4000 devices even though these should be allowed. Writing an odd-sized record to a DLT4000 would return an EIO error. PHKL_10421: 7980S problem was caused by a change in the SCSI interface driver which caused the interface to negotiate for synchronous even when the driver had not enabled that negotiation. The 7980S drive is not SCSI-2 compliant, and has problems with synchronous negotiation in some places. Other changes were enhancements - no defect. PHKL_8755: The Exabyte bug can be reproduced by writing a large (100 Mb) file to an Exabyte drive using the 'BEST' device file in 'no rewind' mode, then writing the same file again to the same device. The first write will be substantially faster because it is compressed while following writes are not compressed. PHKL_8506: Before this patch the open() call did not look at media write protection. A write() to a write protected tape would fail, but an open() with FWRITE mode would succeed. This change was made to make the GSC driver behave the same as the NIO driver. PHKL_8128: A 'break' statement was missing from the end of a switch, causing the code to fall through to an error return. Device files which specify 'BEST' density work, but a DLT device with a density other than BEST will not open. PHKL_8028: A flag in the driver indicates, for each device type, whether or not immediate reporting should be enabled for filemarks. That flag was not being set for DLT drives. To reproduce, write a short C program that writes 20 blocks of 1K bytes, each separated by a filemark. Performance will be substantially better with this patch applied. PHKL_12660: Disk driver, sdisk, proceeds with partial open rather than failing the open in response to SCTL_INCOMPLETE on TUR or Read Capacity during first open. PHKL_12306: bp->b_resid updated after km_io_done. Select timeout not being retried during sd_open. Unhandled interrupt on 53C895 in single-ended and/or high voltage differential mode. scsi_update_tag_state not always getting called to restart device after Queue Full. PHKL_11632: Driver was not enabling LASI SCSI burst-mode transfers. Driver was using uninitialized variables to initialize chip registers on first open. DLT library robotics do not do synchronous transfers which exposed the bug. PHKL_11332: (4701356766/ DSDe437007; 4701353888/ DSDe436271) I/O stress tests panic on some of the internal T600 test machines. PHKL_11002: (4701353888/ DSDe436271) This patch is needed for 10.20 HP-UX bring up on T600 systems. PHKL_10769: Certain revisions of the PCI bus ASIC can cause an HPMC due to a incorrectly decoded memory address. Only one 4K page of memory per 256Megabytes of real memory are affected. The fix involves mapping the page(s) out so that they are unavailable to the system. PHKL_10755: The new B180 and C200 workstations include PCI Ultra SCSI devices. The SCSI subsystem has been enhanced to provide optimal performance for for these devices. PHKL_9965: Drivers using the IO_CONTIGUOUS flag were not delivering optimal performance on Cache Coherent IO platforms. The CCIO mapping routine was making unnecessary calls to other low level subroutines. PHKL_8908: The c720 driver does not lisc->sclk soon enough. Chip timing parameters are set up incorrectly. PHKL_8187: Select timeouts are retried forever. B_NDELAY should eliminate retries on select timeout. Zalon chip bug results in SCSI bus hang. PHKL_7987: Bug in scsi_schedule_retry causes hang. 10 ms select timeout period is too short. SR: 1653215020 1653228106 4701329417 4701337394 4701342089 4701346122 4701353888 4701354837 4701354845 4701356766 4701360693 4701373050 4701377226 5000698738 5003329078 5003330746 5003345496 5003359489 Patch Files: /usr/conf/h/mtio.h /usr/conf/io/dma.h /usr/conf/lib/libhp-ux.a(dma_A.o) /usr/conf/lib/libhp-ux.a(dma_s700.o) /usr/conf/lib/libhp-ux.a(eisa.o) /usr/conf/lib/libhp-ux.a(io.o) /usr/conf/lib/libhp-ux.a(ios_int.o) /usr/conf/lib/libhp-ux.a(ios_mem.o) /usr/conf/lib/libhp-ux.a(pa_ccio.o) /usr/conf/lib/libhp-ux.a(pa_cdio.o) /usr/conf/lib/libhp-ux.a(pa_lvl1.o) /usr/conf/lib/libhp-ux.a(pa_map.o) /usr/conf/lib/libhp-ux.a(scsi_c720.o) /usr/conf/lib/libhp-ux.a(scsi_ctl.o) /usr/conf/lib/libhp-ux.a(scsi_disk.o) /usr/conf/lib/libhp-ux.a(scsi_tape.o) /usr/conf/lib/libhp-ux.a(wsio_scsi.o) /usr/conf/lib/libhp-ux.a(wsio_util.o) /usr/conf/machine/cpu.h /usr/include/machine/cpu.h /usr/include/sys/dma.h /usr/include/sys/mtio.h what(1) Output: /usr/conf/h/mtio.h: mtio.h $Date: 97/02/06 10:40:37 $ $Revision: 1.24.98 .5 $ PATCH_10.20 (PHKL_8755) /usr/conf/io/dma.h: dma.h $Date: 97/05/06 19:10:56 $ $Revision: 1.5.98.3 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(dma_A.o): dma_A.c $Date: 97/05/06 19:28:47 $ $Revision: 1.12 .98.4 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(dma_s700.o): dma_s700.c $Date: 97/05/06 19:21:39 $ $Revision: 1.6.98.3 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(eisa.o): eisa.c $Date: 97/05/06 19:19:30 $ $Revision: 1.11.98 .2 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(io.o): io.c $Date: 97/05/07 09:02:22 $ $Revision: 1.3.98.2 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(ios_int.o): ios_int.c $Date: 97/05/06 19:25:20 $ $Revision: 1.10 .98.2 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(ios_mem.o): ios_mem.c $Date: 97/05/06 19:26:47 $ $Revision: 1.9. 98.2 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(pa_ccio.o): pa_ccio.c $Date: 97/05/16 01:04:22 $ $Revision: 1.6. 98.8 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(pa_cdio.o): pa_cdio.c $Date: 97/05/08 19:37:16 $ $Revision: 1.8. 98.9 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(pa_lvl1.o): pa_lvl1.c $Date: 97/05/06 19:17:04 $ $Revision: 1.5. 98.7 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(pa_map.o): pa_map.c $Date: 97/05/29 09:24:49 $ $Revision: 1.7.9 8.4 $ PATCH_10.20 (PHKL_11002) /usr/conf/lib/libhp-ux.a(scsi_c720.o): scsi_c720.c $Date: 97/10/28 09:34:56 $ $Revision: 1.5.98.33 $ PATCH_10.20 (PHKL_13014) /usr/conf/lib/libhp-ux.a(scsi_ctl.o): scsi_ctl.c $Date: 97/10/28 09:31:07 $ $Revision: 1.9.98.34 $ PATCH_10.20 (PHKL_13014) /usr/conf/lib/libhp-ux.a(scsi_disk.o): scsi_disk.c $Date: 97/10/28 13:25:58 $ $Revision: 1.7.98.27 $ PATCH_10.20 (PHKL_13014) /usr/conf/lib/libhp-ux.a(scsi_tape.o): scsi_tape.c $Date: 98/01/08 13:11:40 $ $Revision: 1. 8.98.18 $ PATCH_10.20 (PHKL_13744) /usr/conf/lib/libhp-ux.a(wsio_scsi.o): wsio_scsi.c $Date: 97/10/28 14:33:01 $ $Revision: 1.4.98.11 $ PATCH_10.20 (PHKL_13014) /usr/conf/lib/libhp-ux.a(wsio_util.o): wsio_util.c $Date: 96/11/25 13:25:20 $ $Revision: 1.7.98.3 $ PATCH_10.20 (PHKL_8908) /usr/conf/machine/cpu.h: cpu.h $Date: 97/05/08 19:11:58 $ $Revision: 1.63.98. 5 $ PATCH_10.20 (PHKL_11002) /usr/include/machine/cpu.h: cpu.h $Date: 97/05/08 19:11:58 $ $Revision: 1.63.98. 5 $ PATCH_10.20 (PHKL_11002) /usr/include/sys/dma.h: dma.h $Date: 97/05/06 19:10:56 $ $Revision: 1.5.98.3 $ PATCH_10.20 (PHKL_11002) /usr/include/sys/mtio.h: mtio.h $Date: 97/02/06 10:40:37 $ $Revision: 1.24.98 .5 $ PATCH_10.20 (PHKL_8755) cksum(1) Output: 1634341172 25693 /usr/conf/h/mtio.h 3566042905 12864 /usr/conf/io/dma.h 2951764362 12648 /usr/conf/lib/libhp-ux.a(dma_A.o) 323304034 7068 /usr/conf/lib/libhp-ux.a(dma_s700.o) 1042418826 31496 /usr/conf/lib/libhp-ux.a(eisa.o) 166564594 161448 /usr/conf/lib/libhp-ux.a(io.o) 2235177246 7356 /usr/conf/lib/libhp-ux.a(ios_int.o) 4020459163 6044 /usr/conf/lib/libhp-ux.a(ios_mem.o) 2313204930 13612 /usr/conf/lib/libhp-ux.a(pa_ccio.o) 2349558433 13896 /usr/conf/lib/libhp-ux.a(pa_cdio.o) 1848508402 27268 /usr/conf/lib/libhp-ux.a(pa_lvl1.o) 281897050 3996 /usr/conf/lib/libhp-ux.a(pa_map.o) 2982357321 93396 /usr/conf/lib/libhp-ux.a(scsi_c720.o) 2684729118 68168 /usr/conf/lib/libhp-ux.a(scsi_ctl.o) 4187052132 18312 /usr/conf/lib/libhp-ux.a(scsi_disk.o) 2240819593 68500 /usr/conf/lib/libhp-ux.a(scsi_tape.o) 3695121161 155156 /usr/conf/lib/libhp-ux.a(wsio_scsi.o) 4161920378 13056 /usr/conf/lib/libhp-ux.a(wsio_util.o) 929303060 25859 /usr/conf/machine/cpu.h 929303060 25859 /usr/include/machine/cpu.h 3566042905 12864 /usr/include/sys/dma.h 1634341172 25693 /usr/include/sys/mtio.h Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHKL_7987 PHKL_8028 PHKL_8128 PHKL_8187 PHKL_8506 PHKL_8755 PHKL_8908 PHKL_9965 PHKL_10421 PHKL_10755 PHKL_10769 PHKL_11002 PHKL_11332 PHKL_11545 PHKL_11632 PHKL_12306 PHKL_12660 PHKL_13014 Equivalent Patches: PHKL_13745: s800: 10.20 Patch Package Size: 830 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_13744 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHKL_13744.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHKL_13744.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHKL_13744. 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_13744.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_13744.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: Due to the number of objects in this patch, the customization phase of the update may take more than 10 minutes. During that time the system will not appear to make forward progress, but it will actually be installing the objects.