Patch Name: PHNE_23723 Patch Description: s700_800 11.00 3.10.01 ACC Protocols for App. Developers Creation Date: 08/08/01 Post Date: 01/11/28 Hardware Platforms - OS Releases: s700: 11.00 s800: 11.00 Products: Z7476AA B.03.02.00 B.03.10.00 B.03.10.01 Z7480AA B.03.02.00 B.03.10.00 B.03.10.01 Z7486AA B.03.02.00 B.03.10.00 B.03.10.01 Filesets: ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_32,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.10.00,fa=HP-UX_B.11.00_32,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.10.01,fa=HP-UX_B.11.00_32,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_64,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.10.00,fa=HP-UX_B.11.00_64,v=HP ACC-X25.ACC-X25-KRN,fr=B.03.10.01,fa=HP-UX_B.11.00_64,v=HP ACC-DEV.ACC-PRG,fr=B.03.02.00,fa=HP-UX_B.11.00_32/64,v=HP ACC-DEV.ACC-PRG,fr=B.03.10.00,fa=HP-UX_B.11.00_32/64,v=HP ACC-DEV.ACC-PRG,fr=B.03.10.01,fa=HP-UX_B.11.00_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_23723: PANIC PHNE_20746: PANIC Category Tags: defect_repair general_release critical panic Path Name: /hp-ux_patches/s700_800/11.X/PHNE_23723 Symptoms: PHNE_23723: SR 8606144441 / CR JAGad13781: x25init failure indicating insufficient HP-UX memory. SR 8606145219 / CR JAGad14557: During X.25 traffic tests, the 'x25check' command fails with the following error message - X25CHECK Message echoed back from x25server different from message sent Bad Data Sequence SR 8606197871 / CR JAGad67062: Kernel build fails because the path of the file spinlock.h mentioned in zcomsys.h is incorrect. SR 8606197879 / CR JAGad67070: System panics with the Spinlock timeout failure. PHNE_20746: CR JAGab68606 Message logged by the zx25d driver when an inbound diagnostic packet arrives displays random values for the mux, port, and subchannel number. CR JAGab73855 System panic in asm_spinlock/XSY_F_plp_callback on x25init. CR JAGab84691 Enhancement Request: Add support for the new 8-port PCI card. CR JAGab66327 The zmlog 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. The text of the diagnostics is as follows: zmlog: can't open ZCOM log: No such file or directory zmlog: file name: /dev/zmlog zmlog: program aborted (exit code = 3) CR JAGab29104 This is an enhancement to improve driver trace performance and a minor improvement in accuracy of display when there is lots of trace output. Affects zx25d, naccX, and n2z driver trace and display programs. CR JAGab76392 Part 1: zmon log card *error* msg indicating "No error" Part 2: zmlog print msg: bad ZCOM log header, log buffer skipped PHNE_19195: Driver corrupted kernel data structures DTS TPO0h02755 The ACC mux, port, and subchannel numbers are not logged in the zx25 messages. DTS: TPO0h02648 System panic (data page fault) after VC Reset issued by firmware. DTS TPO0h02233 Under high rates of X.25 link startup and shutdown, as seen for instance under ISDN/ACC, the axin driver reports error 2015 in the nettl log, indicating a timeout has ocurred during link shutdown. DTS TPO0h02327 For PVC ZLUs, the following message is logged when inbound packets arrive on the PVC: zx25d 00415 Link <#>: Illegal packet received! Diagnostic = 36. Packet = Pkt length = <#> Defect Description: PHNE_23723: SR: 8606144441 CR: JAGad13781 When "MALLOC with wait" is called with lock held, it returns NULL even though there is enough memory. In this case, the zx25drv held the lock and called "MALLOC with wait". This returns NULL, causing x25init to fail. Resolution: The fix is to unlock the spinlock before calling the MALLOC macro. SR: 8606145219 CR: JAGad14557 The problem occurs when the system is under extreme load and there is large amounts of queued data that has not yet been transferred to the card. Under these conditions, if a call is cleared and then immediately reestablished, the data for the prior call can be transmitted on the new call. In other words, the data for the previously established VC can be sent on the newly established VC on the same ZLU. Resolution: The changes are to flush the physical driver's high and low priority transmit queues for the VC whenever a inbound or outbound clear request is received. 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 compiler get spinlock.h file from /usr/include/sys/spinlock.h. Now, /usr/include/sys becomes the relative base directory (and not /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: The fix is to change the zcomsys.h to : #include "../h/spinlock.h" instead of #include SR: 8606197879 CR: JAGad67070 The Spinlock timeout failure seems to be happening 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: Released the spinlock before calling the zcntl() in function N2z_Disable_ZLUs(). PHNE_20746: CR JAGab68606 The code which logs this message was not supplying the mux, port, and subchannel parameters causing random values to be displayed. The code has been corrected. CR JAGab73855 The problem was caused by walking off the end of the zx25_pda_infotbl and n2z_zlu_tables when the VC ZLU is greater than the size of these tables. This corrupted random areas of system memory leading to the above panic. The drivers walked off the end of the tables due to incorrect or missing array bounds checks. Array bounds checks have been added or corrected where neccessary and an appropriate error message added to instruct the user to increase the size of these tables through the documented kernel tunable parameter. CR JAGab84691 The ACC team is developing a new 8-port PCI serial card. The ACC software and firmware needs to be enhanced to support this new card. CR JAGab66327 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. Eliminating the artificial sign extension solves the problem. CR JAGab29104 Sometimes an ACC problem can not be reproduced with trace turned on due to timing differences. The chances of reproducing a problem with trace turned on increases with better performance of the trace code. Also, with better performance, it can be acceptable to leave trace permanently turned on for faster troubleshooting. CR JAGab76392 Part 1: The *error* message indicates there is "No error" is suspected to be a race condition in using 'errno'. The zmon source code calls zcomlog() to pass a error log to the LDM (via write() system call), but one of the parameter passed is 'errno'. Since 'errno' is a globally used parameter, it is possible that 'errno' is reset to zero in zcomlog() before the value is taken. So the record is logged with error 0 to LDM. Later, zmlog picks up the record and shows it as 'No error'. The Zc_ERRNO(x) macro is changed to pass the error param to a function, where the error code is put into a static variable and returned. The new function is added to zcomlog.c api. Part 2: This is a known problem, but the cause is unknown yet. Some troubleshooting code is added to zmlog in R3.01 and later. So whenever this problem happens again, it will display some more info, hopefully the real cause can be determined. *NO* further fix to this problem until more info is available. PHNE_19195: DTS: JAGab66386 SR: None. DTS TPO0h02755 This is an enhancement made to the zx25d driver to supply the ACC mux, port, and subchannel numbers in most messages written to the ZCOM log file. DTS TPO0h02648 system panic was occured during reset processing because of a NULL pointer to the X.25 link data structure. This was probably caused by dynamically deleting the link (zmasterd stop or x25stop) while there was on-going activity on the link. DTS TPO0h02233 Under high load the events coming into the X25 control driver zx25d can be processed out of the expected order. Processing is added to repeat link shutdown processing in this case. DTS TPO0h02327 This problem will never occur when using x25init to configure the link. It only occurs when the link is fully configured through ttgen and PVCs are used. If the user declares more PVCs in the subscription parameter (last_pvc) then there are PVC term entries, this problem will occur. The zx25 driver is not initializing one of its internal tables correctly when there are missing PVCs in the ttgen configuration file. The code has been modified to correctly initialize the table when one or more PVCs have not been defined. SR: 8606144441 8606145219 8606197871 8606197879 4701407619 8606112363 8606114340 Patch Files: ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_32,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.10.00,fa=HP-UX_B.11.00_32,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.10.01,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libzx25dsyms.o /usr/conf/lib/libzx25d.a /opt/acc/msg/def.zx25d.txt /opt/acc/bin/zx25trc /usr/conf/acc/zx25.h /usr/conf/acc/zx25_trace.h /usr/conf/space.h.d/zx25_space.h ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_64,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.10.00,fa=HP-UX_B.11.00_64,v=HP: ACC-X25.ACC-X25-KRN,fr=B.03.10.01,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libzx25dsyms.o /usr/conf/lib/libzx25d.a /opt/acc/msg/def.zx25d.txt /opt/acc/bin/zx25trc /usr/conf/acc/zx25.h /usr/conf/acc/zx25_trace.h /usr/conf/space.h.d/zx25_space.h ACC-DEV.ACC-PRG,fr=B.03.02.00,fa=HP-UX_B.11.00_32/64,v=HP: ACC-DEV.ACC-PRG,fr=B.03.10.00,fa=HP-UX_B.11.00_32/64,v=HP: ACC-DEV.ACC-PRG,fr=B.03.10.01,fa=HP-UX_B.11.00_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.02.00,fa=HP-UX_B.11.00_32,v=HP: /usr/conf/lib/libzx25dsyms.o: None /usr/conf/lib/libzx25d.a: ACC Rel B.03.10.01 for 32-bit B.11.00 PHNE_23723 lib zx25d.a /opt/acc/msg/def.zx25d.txt: None /opt/acc/bin/zx25trc: ACC Rel B.03.02 for B.11.00 PHNE_20746 zx25trc /usr/conf/acc/zx25.h: $Header: zx25.h@@/main/23 12/06/99 11:41:03 $Rev: / main/23 $ /usr/conf/acc/zx25_trace.h: $Header: zx25_trace.h@@/main/17 12/09/99 12:57:12 $ /usr/conf/space.h.d/zx25_space.h: $Header: zx25_space.h@@/main/9 12/06/99 11:43:51 $ ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_64,v=HP: /usr/conf/lib/libzx25dsyms.o: None /usr/conf/lib/libzx25d.a: ACC Rel B.03.10.01 for 64-bit B.11.00 PHNE_23723 lib zx25d.a /opt/acc/msg/def.zx25d.txt: None /opt/acc/bin/zx25trc: ACC Rel B.03.02 for B.11.00 PHNE_20746 zx25trc /usr/conf/acc/zx25.h: $Header: zx25.h@@/main/23 12/06/99 11:41:03 $Rev: / main/23 $ /usr/conf/acc/zx25_trace.h: $Header: zx25_trace.h@@/main/17 12/09/99 12:57:12 $ /usr/conf/space.h.d/zx25_space.h: $Header: zx25_space.h@@/main/9 12/06/99 11:43:51 $ ACC-DEV.ACC-PRG,fr=B.03.02.00,fa=HP-UX_B.11.00_32/64,v=HP: /opt/acc/include/zcom/zcomsys.h: $Header: zcomsys.h@@/main/r3.10_r3.02/1 05/15/01 15 :20:20 $ /opt/acc/lib/libzcom_c.a: ACC Rel B.03.02 for B.11.00 PHNE_20746 libzcom_c.a /opt/acc/lib/libzcom_c.sl: ACC Rel B.03.02 for B.11.00 PHNE_20746 libzcom_c.a /opt/acc/lib/pa20_64/libzcom_c.a: ACC Rel B.03.02 for B.11.00 PHNE_20746 libzcom_c.a /opt/acc/lib/pa20_64/libzcom_c.sl: ACC Rel B.03.02 for B.11.00 PHNE_20746 libzcom_c.a cksum(1) Output: ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_32,v=HP: 171678765 212052 /usr/conf/lib/libzx25dsyms.o 1201146391 145812 /usr/conf/lib/libzx25d.a 3704678097 20651 /opt/acc/msg/def.zx25d.txt 4282147722 24576 /opt/acc/bin/zx25trc 695899608 35443 /usr/conf/acc/zx25.h 315754355 28053 /usr/conf/acc/zx25_trace.h 698780126 2972 /usr/conf/space.h.d/zx25_space.h ACC-X25.ACC-X25-KRN,fr=B.03.02.00,fa=HP-UX_B.11.00_64,v=HP: 4019196841 259776 /usr/conf/lib/libzx25dsyms.o 2375047651 308150 /usr/conf/lib/libzx25d.a 3704678097 20651 /opt/acc/msg/def.zx25d.txt 1927229887 24712 /opt/acc/bin/zx25trc 695899608 35443 /usr/conf/acc/zx25.h 315754355 28053 /usr/conf/acc/zx25_trace.h 698780126 2972 /usr/conf/space.h.d/zx25_space.h ACC-DEV.ACC-PRG,fr=B.03.02.00,fa=HP-UX_B.11.00_32/64,v=HP: 140298294 117337 /opt/acc/include/zcom/zcomsys.h 3362902602 184634 /opt/acc/lib/libzcom_c.a 1236835128 114688 /opt/acc/lib/libzcom_c.sl 1151420184 378210 /opt/acc/lib/pa20_64/libzcom_c.a 4268349436 149064 /opt/acc/lib/pa20_64/libzcom_c.sl Patch Conflicts: None Patch Dependencies: s700: 11.00: PHNE_23721 s800: 11.00: PHNE_23721 Hardware Dependencies: None Other Dependencies: None Supersedes: PHNE_19195 PHNE_20746 Equivalent Patches: None Patch Package Size: 2110 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_23723 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_23723.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_23723. 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_23723.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_23723.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_23723.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: CHANGE IN ZCOM INTERNAL REV NUMBER: Before using zmasterd, your .tmem files will need to be recompiled using the ttgen utility. Otherwise, zmasterd will consider them incompatible with this patch release of ACC due to a change in the ACC internal revision number.