Patch Name: PHNE_28080 Patch Description: s700_800 11.11 3.3[02].00 ACC Protocols for App. Developer Creation Date: 03/01/28 Post Date: 03/03/17 Hardware Platforms - OS Releases: s700: 11.11 s800: 11.11 Products: Z7476AA B.03.30.00 B.03.32.00 Z7480AA B.03.30.00 B.03.32.00 Z7486AA B.03.30.00 B.03.32.00 Filesets: ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_32,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_64,v=HP ACC-DEV.ACC-PRG,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64,v=HP ACC-DEV.ACC-PRG,fr=B.03.32.00,fa=HP-UX_B.11.11_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_28080: PANIC Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHNE_28080 Symptoms: PHNE_28080: SR 8606275979 / CR JAGae40056: System panics with a Data Page Fault and the stack trace looks as below: panic+0x6c report_trap_or_int_and_panic+0x94 trap+0xedc nokgdb+0x8 N2Z_F0_G_GETSTATS_ioctl+0x1b0 N2Z_F0_wput+0x2aec putnext+0xcc wait_iocack+0x6c SR 8606241694 / CR JAGae08952: Card reset occurred with the following message in /var/opt/acc/log/.tlog file - 05:31:49 zcom 00212 Card 0 write completion with none outstanding! Port number = 6 Terminal number = 101. 05:31:49 zcom 00232 Card 0 - Firmware failure induced (card reset)! >>The below symptoms only apply to ACC 3.30 >>installations as this patch provides an upgrade >>from ACC 3.30 to ACC 3.32 and the below symptoms >>already have been addressed in ACC 3.32. SR 8606235532 / CR JAGae04681: Enhancing the diagnostic capabilities of ACC Firmware. SR 8606197879 / CR JAGad67070: System panics with the Spinlock timeout failure. SR 8606197871 / CR JAGad67062: Kernel build fails because the path of the file spinlock.h mentioned in zcomsys.h is incorrect. SR 8606182427 / CR JAGad51644: The zcom process can't open /dev/zmlog and fails with the reason " --ENOENT--" No such file or directory" which is displayed on the tty from which zmasterd is run. CR JAGab67070: No automatic card restart after firmware failure. Defect Description: PHNE_28080: SR: 8606275979 CR: JAGae40056 The problem happens when N2Z_F0_G_GETSTATS_ioctl tries to get the link statistics of a port which has already been stopped. This is because the link zlu data structures of the stopped port are in an inconsistent state. Resolution: The fix is to check if the link zlu data structures of the stopped port are valid or not, if they are not valid N2Z_F0_G_GETSTATS_ioctl will return with an error. SR: 8606241694 CR: JAGae08952 When zx25d driver issues a Clear Request on a VC, the driver flushes the High and Low priority message queue of the corresponding ZLU,even if the DMA is active for that ZLU. Hence on DMA completion the DAM driver does not find any messages in the above queues to be moved to Unacknowledge queue. After some time when the DAM driver receives a transmission completion for previously DMA'ed message, it enters the FIRQ processing. In FIRQ processing, it searches for the message in the Unacknowledged queue, and since the DAM driver did not find any messages earlier in High and Low priority message queues to be moved to Unacknowledged queue, it logs an error with "write completion with none out standing" and "Firmware failure induced (card reset)" messages in .tlog file and crashes the card. Resolution: This issue has been taken care by checking in zx25d driver whether DMA is active for that ZLU before flushing the High and Low priority queues. If the messages were flushed while DMA was active, in transmission completion path code change has been done to distinguish whether it's a real firmware failure or not and hence not to crash the card in the above scenario. >>The below defect descriptions only apply to ACC >>3.30 installations as this patch provides an upgrade >>from ACC 3.30 to ACC 3.32 and the below defect >>descriptions already have been addressed in ACC 3.32. SR: 8606235532 CR: JAGae04681 A more advanced ACC firmware tracing environment has been developed to enable on-demand and dynamic tracing of the ACC firmware . Resolution: ACC interface driver DAM and firmware modules have been modified to implement the fwtrace utility. This trace utility allows the user to catch the traces from a running ACC card and also from the dump of a crashed ACC card. Decoding of the trace points to a human readable symbol is also possible with this trace utility. SR: 8606197879 CR: JAGad67070 The Spinlock timeout failure happens because the function N2z_Disable_ZLUs()calls the zcntl() holding the SPINLOCK (glock). Because there are no buffers available,the Zc_gosleep() is eventually called which in turn calls sleep(). This is causing the spinlock timeout failure to occur because the spinlock should not be held when the sleep() is called. Resolution: To resolve this defect, code is modified to release the spinlock before calling the zcntl() in function N2z_Disable_ZLUs(). SR: 8606197871 CR: JAGad67062 During kernel build, bx25 header file ( /usr/conf/acc/csihdw.h ) includes zcomsys.h from /usr/conf/acc directory.zcomsys.h includes spinlock.h as follows : #ifdef _KERNEL #include #endif This makes the compiler get spinlock.h from /usr/include/sys/spinlock.h. /usr/include/sys becomes the relative base directory(and not the /usr/conf/acc) /usr/include/sys/spinlock.h has following lines: #ifdef _KERNEL_BUILD #include "../h/types.h" ... #endif Kernel build fails here since it is looking for /usr/include/sys/../h/spinlock.h which does not exist The exact error indicated by compiler is: cpp: "/usr/include/sys/spinlock.h", line 15: error 4036: Can't open include file '../h/types.h'. Resolution: To resolve this defect, fix is to change the zcomsys.h to: #include "../h/spinlock.h" instead of #include SR: 8606182427 CR: JAGad51644 The sequence of events leading to this problem is as follows: 1. zmlog executes and successfully calls check_dev_file() which creates /dev/zmlog. 2. zmon executes and also calls check_dev_file(). It then successfully calls unlink ()( which remove dev/zmlog ) because the device's major number does not appear to be correct. 3. zmlog executes and calls open()which fails because /dev/zmlog doesn't exist. The reason behind the problem is that the major number appears to have the wrong value due to artificial sign extension. Resolution: To resolve this defect, code changes have been done to eliminate the artificial sign extension. CR: JAGab67070 When a Z7200 mux is crashed deliberately (using zcbug "ru 0 off ok"), the DAM detects the crash, but there is no automatic card restart. During ZCOM startup, if there is a problem with the mux $RSET, the DAM issues IRR (Interface Restart Requests) to the IRR queue and a failure result is returned to ZMON.ZMON retries the RESET for 3 times. This ends up 3 IRRs being queued up. When ZCOM is ready (of course, with a bad mux), ZMON receives 3 IRRs in a row and tried to restart the same mux. ZMON forks a child to handle each IRR. So a total of 3 zmon restarting the same mux in parallel, end up "DAM has too many requests" error. Resolution: To resolve this defect following code changes have been made:- - controlled restart/shutdown to avoid concurrent control to a mux. - provide info for selective retry when necessary Enhancement: No SR: 8606275979 8606241694 8606235532 8606197879 8606197871 8606182427 Patch Files: ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libzx25dsyms.o /usr/conf/lib/libzx25d.a ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libzx25dsyms.o /usr/conf/lib/libzx25d.a ACC-DEV.ACC-PRG,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64,v=HP: ACC-DEV.ACC-PRG,fr=B.03.32.00,fa=HP-UX_B.11.11_32/64,v=HP: /opt/acc/include/zcom/zcomsys.h /opt/acc/lib/libzcom_c.a /opt/acc/lib/libzcom_c.sl /opt/acc/lib/pa20_64/libzcom_c.a /opt/acc/lib/pa20_64/libzcom_c.sl what(1) Output: ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32,v=HP: /usr/conf/lib/libzx25dsyms.o: None /usr/conf/lib/libzx25d.a: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28080 lib zx25d.a ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64,v=HP: /usr/conf/lib/libzx25dsyms.o: None /usr/conf/lib/libzx25d.a: ACC Rel B.03.32.00 for 64-bit B.11.11 PHNE_28080 lib zx25d.a ACC-DEV.ACC-PRG,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64,v=HP: /opt/acc/include/zcom/zcomsys.h: $Header: zcomsys.h@@/main/iso_r3.32/1 07/31/02 12:0 1:50 $ /opt/acc/lib/libzcom_c.a: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28080 lib zcom_c.a /opt/acc/lib/libzcom_c.sl: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28080 lib zcom_c.a /opt/acc/lib/pa20_64/libzcom_c.a: ACC Rel B.03.32.00 for 64-bit B.11.11 PHNE_28080 lib zcom_c.a /opt/acc/lib/pa20_64/libzcom_c.sl: ACC Rel B.03.32.00 for 64-bit B.11.11 PHNE_28080 lib zcom_c.a cksum(1) Output: ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32,v=HP: 4254525060 217508 /usr/conf/lib/libzx25dsyms.o 2437670422 144576 /usr/conf/lib/libzx25d.a ACC-X25.ACC-X25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64,v=HP: 2530518076 261984 /usr/conf/lib/libzx25dsyms.o 184355194 297602 /usr/conf/lib/libzx25d.a ACC-DEV.ACC-PRG,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64,v=HP: 1727938240 118104 /opt/acc/include/zcom/zcomsys.h 1904859346 192910 /opt/acc/lib/libzcom_c.a 3876421426 118784 /opt/acc/lib/libzcom_c.sl 3022718743 394574 /opt/acc/lib/pa20_64/libzcom_c.a 3475523540 155280 /opt/acc/lib/pa20_64/libzcom_c.sl Patch Conflicts: None Patch Dependencies: s700: 11.11: PHNE_28078 s800: 11.11: PHNE_28078 Hardware Dependencies: None Other Dependencies: None Supersedes: None Equivalent Patches: None Patch Package Size: 1900 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_28080 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_28080.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_28080. 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 PHNE_28080.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_28080.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_28080.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None