Patch Name: PHNE_28079 Patch Description: s700_800 11.11 3.3[02].00 ACC X.25/9000 Link S/W Patch 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 Filesets: ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32,v=HP ACC-SX25.ACC-SX25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_32,v=HP ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64,v=HP ACC-SX25.ACC-SX25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_64,v=HP ACC-SX25.ACC-SX25-RUN,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64,v=HP ACC-SX25.ACC-SX25-RUN,fr=B.03.32.00,fa=HP-UX_B.11.11_32/64,v=HP Automatic Reboot?: Yes Status: General Release Critical: Yes PHNE_28079: PANIC HANG Category Tags: defect_repair general_release critical panic halts_system manual_dependencies Path Name: /hp-ux_patches/s700_800/11.X/PHNE_28079 Symptoms: PHNE_28079: SR 8606289434 / CR JAGae53365: ACC not recovering after sending RNR(Receiver Not Ready). SR 8606266220 / CR JAGae30469: System panics with Data Page Fault and the stack trace looks as below: panic+0x14 report_trap_or_int_and_panic+0x84 interrupt+0x1d4 $ihndlr_rtn+0x0 streams_put+0x30 N2Z_F_reset_ind+0x94 N2z_iev_reset_ind+0x128 N2z_ReadEvent_Recvd+0x2278 SR 8606259525 / CR JAGae23843: System panics with Data Page Fault and the stack trace looks as below: panic+0x6c report_trap_or_int_and_panic+0x94 trap+0xed4 nokgdb+0x8 kfree+0xe4 N2z_shutdown_x25_subsys+0x6ac N2Z_F0_close+0x708 close_wrapper+0x38 SR 8606235666 / CR JAGae04809: In nli2zcom driver some spinlock issues were found which can result in spinlock timeout or deadlock panics. >>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 8606231736 / CR JAGae00972: ACC X.25 IP/X25 will no longer work after the 2nd x25init. SR 8606228520 / CR JAGad97577: When there is a lot of open and close of X.25 sockets and the ACC kernel limit n2z_max_devs is reached, X.25 socket creation with socket() call returns invalid errno 65535(-1). The following message is logged in nettl log - Network NS_LS_N2Z Error 2001, pid 486745 N2Z: Too many streams used! Increase the size of the kernel tunable n2z_max_devs in /stand/system and rebuild your kernel. SR 8606227359 / CR JAGad96420: Ioctls in n2z_cntrl fails with "Bad address" error. SR 8606225328 / CR JAGad94415: ACC 3.xx sends the calling address in call accept packet. SR 8606197879 / CR JAGad67070: System panics with the Spinlock timeout failure when system runs out of system buffers. SR 8606197878 / CR JAGad67069: When an x25stat is done, the Max Framesize that is displayed is shown in bits instead of bytes. SR 8606171598 / CR JAGad40862: Need to enhance "x25stat" command to show "VC Up Time" for all active virtual circuits. SR 8606152276 / CR JAGad21615: System panics due to spinlock deadlock with the following stack trace: panic+0x14 too_much_time+0x2e8 wait_for_lock+0x204 sl_retry+0x1c N2Z_F0_open+0x9b8 open_wrapper+0x40 csq_protect+0x120 SR 8606151859 / CR JAGad21198: System panics with a Data Page Fault with the following stack trace. panic+0x14 report_trap_or_int_and_panic+0x5c interrupt+0x1f8 $ihndlr_rtn+0x0 N2Z_F_disc_ind+0xf4 N2z_iev_disconnect_ind+0xc60 N2z_ReadEvent_Recvd+0x588 Zc_putq+0x60 SR 8606146312 / CR JAGad15656: 'x25init' command fails with the following error message in nettl log when there are more number of VCs configured than the number of terminal ZLU entries in the ".answ" file. N2Z: The zconfig() call to create a new L3 ZLU has unexpectedly failed with error -15.Unable to startup the X.25 line (Mux = 0, Port 7, Subc 0)! Defect Description: PHNE_28079: SR: 8606289434 CR: JAGae53365 After sending an RNR, ACC/X.25 driver did not send RR to clear the flowcontrol i.e. NLI2ZCOM driver was not coming out of flowcontrol mode. This caused the communication to be in a pending (hung) state until another event clears the flowcontrol condition such as a Reset packet after the timeout. Resolution: To resolve this defect, code change has been done to check the flowcontrol parameters of the NLI2ZCOM driver. Once the driver is out of the flowcontrol it sends RR. SR: 8606266220 CR: JAGae30469 This problem arises due a to race condition between the detaching and resetting of a pvc. This panic is happening because the Reset and Detach processing of the same PVC are going on simultaneously. While detaching the PVC, the readq pointer is set to NULL and when Reset is trying to access that pointer it results in Data Page Fault panic in N2Z_F_reset_ind function. Resolution: The fix is to prevent Detach and Reset of a PVC to go simultaneously. This is achieved by setting a flag Nz_X25_RESET_ACTIVE(lhvcp flag) in N2z_iev_reset_ind( ) to indicate that a Reset is active and do not start Detaching this PVC, wait till Reset is over for this PVC. SR: 8606259525 CR: JAGae23843 This panic was a result of a Race condition between zmasterd shutdown and the x25subsystem shutdown. In one thread N2z_zcom_shutdown_cleanup() function was running in which we make l2pda->vctbl== NULL and in another thread N2z_shutdown_x25_subsys()was going on. When N2z_shutdown_x25_subsys() tries to access l2pda->vctbl which has been made NULL by N2z_zcom_shutdown_cleanup()it panics. Resolution: Fix was to add a check for l2pda->vctbl is NULL or not in N2z_shutdown_x25_subsys(). Also care has been taken to prevent a race condition. SR: 8606235666 CR: JAGae04809 In N2z_Cfg_Zlus() routine, it was observed that - in some part of the code there were chances of the thread going to sleep while holding the spinlock - also one code path,where the spinlock is supposed to be held, was not holding the lock. Both these cases can lead to spinlock timeout/deadlock panics or race conditions. Resolution: To resolve this defect, code changes have been done to take care of these issues. >>The below defect description only apply to ACC 3.30 >>installation as this patch provides an upgrade from >>ACC 3.30 to ACC 3.32 and the below defect >>description already have been addressed in ACC 3.32 SR: 8606231736 CR: JAGae00972 If multiple X.25 links are used concurrently on a system,then following symptoms happen: 'IP over x25' work with 'x25init -c config_file -a ip_to_x121_map' command, if it was issued before sx25d process' startup. But if we restart the x.25 link with the same command while sx25d is still running, then 'IP over X25' do not work while all the svc and pvc operations for the link work normally. If we stop all the x.25 links via x25stop -K or x25stop -d individually, which causes sx25d process stop, and then with the above x25init command, IP over X.25 works. In N2z_stop_link processing, we scan through all the VC structures and cleanup that are not in idle state. In this process, we check to see if there is any stream associated with the VC.If so, stype of stream context was set as N2Z_ERROR_STRM for the duration till the x25 upper layers releases the previous connection established by ping. So, when x25init is done for the second time within this duration, x25init path identifies that VC stream context type as ERROR stream and ping doesnt go through. Resolution: To resolve this defect, fix is to change the N2Z_ERROR_STRM to N2Z_UNKNOWN_STRM, so that the ping will go through. SR: 8606228520 CR: JAGad97577 This problem has been noticed with PVCs and while detaching the PVC in N2Z_F_pvc_detach_up() routine, the VC Stream q_ptr field was made NULL. However in VC Stream close routine N2Z_F0_close(), if q_ptr is NULL,then the further closing and clean-up of the VC stream was not complete, and hence VC Streams were not returned to free pool. So this caused the driver to run out of available VC Streams and the socket() call returns errno. 65535 after the kernel n2z_max_devs is reached. Resolution: To resolve this defect, new 'lhvcp' flag mask has been introduced and this flag is set during PVC detach processing to indicate that VC Stream close is still pending and thereby avoiding a need to set the VC Stream q_ptr to NULL. Code change has been made to check for this flag and reset the flag during 'lhvcp' allocation. SR: 8606227359 CR: JAGad96420 When trying to set the tunable values using n2z_cntrl, it fails with "Bad address" error. For eg. n2z_cntrl -d0 will display "n2z_cntrl: Bad address". This is because,the parameters used in ioctl function were not correct. The second parameter of the ioctl should be I_STR and the third parameter should be the strioctl structure. Resolution : To resolve this defect, code change has been done as follows :- Instead of calling ioctl like, "ioctl(ssmfd, N2Z_CTS_CD_FLAG, &flag)" ioctl will now be called by filling the strioctl structure and then call, "ioctl(ssmfd, I_STR,&strioctl)" SR: 8606225328 CR: JAGad94415 ACC 3.xx has a non NULL calling address in the call accept packet, which is refused by TRANSPAC. Resolution :This problem has been fixed by providing a tunable parameter, which can be set using /opt/acc/bin/n2z_cntrl. By default this flag is set to 0. So, calling address in call accept packet is 0 by default. If set to 1, the call accept packet contains the calling address. SR: 8606197879 CR: JAGad67070 The Spinlock timeout failure seems to be happening because the function N2z_Disable_ZLUs()calls 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 change has been done to release the spinlock before calling the zcntl() in function N2z_Disable_ZLUs(). SR: 8606197878 CR: JAGad67069 When an x25stat is done, the Max. Framesize that is displayed is shown in bits instead of bytes. Resolution: To resolve this defect, code has been changed such that the max frame size is displayed in bytes instead of bits. SR: 8606171598 CR: JAGad40862 x25stat in ACC 3.xx does not display "VC Up Time" for all the active virtual circuits. Resolution : Provided "-u" option in x25stat command so that the user can request the "VC Up Time" for all active virtual circuits. A new ioctl has been added for this purpose. This option,however,has to be used in conjunction with the " -v " option of x25stat command. SR: 8606152276 CR: JAGad21615 When the system was running out of memory, it would cause the nli2zcom to drop a data packet and issue a reset request on the VC. This particular condition caused many resets and reset confirmations to be issued during heavy data transfer loads.The NLI2ZCOM driver showed that a reset request (or response) was being sent to the DAM driver at the same time that an inbound event was arriving from the DAM on the same card. The DAM held the IFT lock and passed the event to the NLI2ZCOM driver which found the N2Z lock already held. The NLI2ZCOM driver locked its spinlock and passed a request to the DAM which found the IFT lock already held. Thus a classic spinlock deadlock has occurred. Resolution: To resolve this defect,fix is to have the NLI2ZCOM driver drop its lock when issuing a request to the DAM and then re-acquire its lock upon return from the DAM. This was done for both the outbound Reset Request and Reset Response functions. SR: 8606151859 CR: JAGad21198 The data page fault panic is because a NULL pointer was dereferenced. Resolution: To resolve this defect a check has been added to verify if the pointer is NULL. SR: 8606146312 CR: JAGad15656 'x25init' command fails because there are not enough number of terminal ZLU entries configured in the ".answ" file. Resolution: The fix is to instruct the user of this possible cause and to tune these parameters in .answ file and then start-up the ZCOM subsystem. Enhancement: No SR: 8606289434 8606266220 8606259525 8606235666 8606231736 8606228520 8606227359 8606225328 8606197879 8606197878 8606171598 8606152276 8606151859 8606146312 Patch Files: ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32, v=HP: ACC-SX25.ACC-SX25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_32, v=HP: /usr/conf/acc/nli2zcom.h /usr/conf/acc/n2z_trace.h /usr/conf/lib/libn2z.a /usr/conf/lib/libn2zsyms.o /opt/acc/bin/n2ztrc /usr/conf/space.h.d/zsx25_space.h /usr/conf/master.d/zsx25 ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64, v=HP: ACC-SX25.ACC-SX25-KRN,fr=B.03.32.00,fa=HP-UX_B.11.11_64, v=HP: /usr/conf/acc/nli2zcom.h /usr/conf/acc/n2z_trace.h /usr/conf/lib/libn2z.a /usr/conf/lib/libn2zsyms.o /opt/acc/bin/n2ztrc /usr/conf/space.h.d/zsx25_space.h /usr/conf/master.d/zsx25 ACC-SX25.ACC-SX25-RUN,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64, v=HP: ACC-SX25.ACC-SX25-RUN,fr=B.03.32.00,fa=HP-UX_B.11.11_32/64, v=HP: /opt/acc/bin/n2z_cntrl /usr/lib/nls/C/zx25fmt.cat what(1) Output: ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32, v=HP: /usr/conf/acc/nli2zcom.h: $Header: nli2zcom.h@@/main/iso_r3.32/1 10/24/02 22: 53:27 $ /usr/conf/acc/n2z_trace.h: $Header: n2z_trace.h@@/main/iso_r3.32/1 10/25/02 10 :11:21 $ /opt/acc/bin/n2ztrc: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28079 n2z trc $ CUPI80_IC27 Sep 27 2000 23:30:24 $ /usr/conf/space.h.d/zsx25_space.h: $Header: n2z_space.h@@/main/14 01/23/02 03:43:08 $ /usr/conf/lib/libn2z.a: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28079 lib n2z.a /usr/conf/lib/libn2zsyms.o: None /usr/conf/master.d/zsx25: None ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64, v=HP: /usr/conf/acc/nli2zcom.h: $Header: nli2zcom.h@@/main/iso_r3.32/1 10/24/02 22: 53:27 $ /usr/conf/acc/n2z_trace.h: $Header: n2z_trace.h@@/main/iso_r3.32/1 10/25/02 10 :11:21 $ /opt/acc/bin/n2ztrc: ACC Rel B.03.32.00 for 64-bit B.11.11 PHNE_28079 n2z trc $ CUPI80_IC27 Sep 27 2000 23:19:13 $ /usr/conf/space.h.d/zsx25_space.h: $Header: n2z_space.h@@/main/14 01/23/02 03:43:08 $ /usr/conf/lib/libn2z.a: ACC Rel B.03.32.00 for 64-bit B.11.11 PHNE_28079 lib n2z.a /usr/conf/lib/libn2zsyms.o: None /usr/conf/master.d/zsx25: None ACC-SX25.ACC-SX25-RUN,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64, v=HP: /opt/acc/bin/n2z_cntrl: ACC Rel B.03.32.00 for 32-bit B.11.11 PHNE_28079 $He ader: n2z_cntrl.c@@/main/3 01/23/02 03:46:3 8 $ $ CUPI80_IC27 Sep 27 2000 23:30:24 $ /usr/lib/nls/C/zx25fmt.cat: None cksum(1) Output: ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_32, v=HP: 657609526 54811 /usr/conf/acc/nli2zcom.h 2006087219 57602 /usr/conf/acc/n2z_trace.h 47414767 403056 /usr/conf/lib/libn2z.a 3772803632 287668 /usr/conf/lib/libn2zsyms.o 624308181 262144 /opt/acc/bin/n2ztrc 2273933201 10601 /usr/conf/space.h.d/zsx25_space.h 1906298100 5555 /usr/conf/master.d/zsx25 ACC-SX25.ACC-SX25-KRN,fr=B.03.30.00,fa=HP-UX_B.11.11_64, v=HP: 657609526 54811 /usr/conf/acc/nli2zcom.h 2006087219 57602 /usr/conf/acc/n2z_trace.h 396063765 862492 /usr/conf/lib/libn2z.a 1891279581 359176 /usr/conf/lib/libn2zsyms.o 935884309 430072 /opt/acc/bin/n2ztrc 2273933201 10601 /usr/conf/space.h.d/zsx25_space.h 1906298100 5555 /usr/conf/master.d/zsx25 ACC-SX25.ACC-SX25-RUN,fr=B.03.30.00,fa=HP-UX_B.11.11_32/64, v=HP: 1318893162 204800 /opt/acc/bin/n2z_cntrl 753107589 41794 /usr/lib/nls/C/zx25fmt.cat Patch Conflicts: None Patch Dependencies: s700: 11.11: PHNE_28078 PHNE_28080 s800: 11.11: PHNE_28078 PHNE_28080 Hardware Dependencies: None Other Dependencies: To enable the feature mentioned in JAGad40862 ie. usage of "-u" option with x25stat command to display "VC Up Time", the patch PHNE_23190 or its superseding patch must be installed. Supersedes: None Equivalent Patches: None Patch Package Size: 3100 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_28079 5. Run swinstall to install the patch: swinstall -x autoreboot=true -x patch_match_target=true \ -s /tmp/PHNE_28079.depot By default swinstall will archive the original software in /var/adm/sw/save/PHNE_28079. 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_28079.text file is available in the product readme: swlist -l product -a readme -d @ /tmp/PHNE_28079.depot To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHNE_28079.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: This patch delivers modified /usr/conf/space.h.d/zsx25_space.h and /usr/conf/master.d/zsx25 files and the pre-patch version of these files will be backed-up as /usr/conf/space.h.d/zsx25_space.h.old and /usr/conf/master.d/zsx25.old during patch installation. If there has been any changes made in these files by the user, then the user can get those changes from the backed-up files.