Patch Name: PHKL_3395 Patch Description: s700 9.X VME patch with SYSRESET asserted Fixes D08 Interrupter Mask, Multiple A16 user maps, vme_test_and_set bus lock race condition PHKL_3383: Fixes a race condition locking VME with vme_test_and_set and vme_clr It fixes a race condition where two processes could get a semaphore using vme_test_and_set becuase of a problem getting a VME bus lock. It prevents a panic when two user processes map A16 space, one unmaps the spacee and then the other attempts to access the space. It protects VME mapper setting calls from access by other processes. It also provides for certain VME SCSI drivers. This patch differs from PHKL_3396 in that PHKL_3395 DOES assert the VME SYSRESET line when vme_init is called (this is the behavior of the previous releases of libvme.a). (PHKL_3396 does NOT assert the line during vme_init.) Under certain conditions the VME ASIC would not achieve a VME bus lock. This resulted in two processes being able to obtain a semaphore using vme_test_and_set. The same condition, though theoretically possible under vme_clr usually would not be seen (normally only the person holding a semaphore is allowed to clear it). This patch fixes both conditions. PHKL_3321: Fixes A16 user open of multiple files. Fixes D08 intrrupter mask. Fixes vme_test_and_set and vme_clr on interrupt stack. PHKL_3321 includes the fixes from PHKL_3017, in addition it: Fixes vme_test_and_set, vme_clr, and vme_spin_lock preventing panics if these are called for VME space access on the interrupt stack. Fixes vme2_close and vme2_ioctl to prevent hpmc panics with a trap 15 segmentation violation when one process unmaps an A16 space address that another process had open (the second process would then panic on the next access). Protected VME mapper setting code from other processes and/or processors when calling map_mem_to_host, map_mem_to_bus, and vme_map_mem_to_bus2. Also contains provisions for certain VME SCSI devices in the VME version of io_dma_setup. Fixes d08 interrupter type status ID checks during interrupt acknowledge cycles. This is a fix for the panic identified in SR1653065185 for an unidentified status ID when a bit in the status ID above bit 7 was asserted. This patch (PHKL_3321) differs from PHKL_3322 in that PHKL_3321 DOES issue a VME SYSRESET, when running as a Slot 1 VME controller during vme_init. THis is the behavior exhibited with the MR'd libvme.a and PHKL_3017 libvme.a. That is, during "reboot" of a currently running slot 1 VME controller, the VME SYSRESET line WILL be asserted. The ADDR_MOD_TO_ADDR_SELECT macro in /etc/conf/machine/vme2.h was also fixed. PHKL_3017: Fixes default VME address modifiers, VME map calc, and cache coherency. Sets the correct default address modifiers after calls to iotestr, iotestw, and vme_mod_copy. Fixes an incorrect address calculation in vme_map_mem_to_bus. Delays calling linked attach routines if slot 1 controller until vme_reset has had time to deassert. Disallows 2 master mapper entries that conflict with the Spider IO ASIC when EISA is not installed. Ensures cache coherency when io_dma_setup is called from a char device strategy routine which in turn was not called from physio. The default address modifier bug usually resulted in an hpmc panic. The vme_map_mem_to_bus and io_dma_setup bugs generally resulted in data corruption. The Spider IO ASIC without EISA bug generally caused a system hang or panic. Without the delay in calling linked attach routines, these routines generally failed calls to iotestr or iotestw when probing for a card. Path Name: /hp-ux_patches/s700/9.X/PHKL_3395 Effective Date: 931112 OS Release: 9.01 9.03 Reboot Required: Yes Patch Files: /system/PHKL_3395/new/vme2.o SR/APR#: None "what" string/timestamp: vme2.o: vme2.c $Revision: 1.2.61.22 $ $Date: 93/11/12 19:17:35 $ PATCH_9.03 (PHKL_3395) "sum" output: 20487 54 vme2.o Dependencies: None Supersedes: PHKL_3017 PHKL_3321 PHKL_3383 Patch Package Size: 93 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. Note: Please back up your system before you patch. --------------------------------------------------------------------------- After getting the patch onto your machine, unshar the patch (sh PHKL_3395). To install this patch do the following: 1) Run /etc/update (Note: you must be logged in as root to update a system). 2) Once in the update "Main Menu" move the highlighted line to "Change Source or Destination ->" and press "Return" or "Select Item". 3) Make sure the highlighted item in the "Change Source or Destination" window is "From Tape Device to Local System ...", then press "Return" or "Select Item". 4) You should now be in the "From Tape Device to Local System" window. Change the "Source: /dev/rmt/0m" to "Source: /tmp/PHKL_3395.updt" (this assumes that you are in the /tmp directory where PHKL_3395.updt has been placed). Note: You must enter the complete path name. 5) Press "Done". 6) From here on follow the standard directions for update. The customized script that update runs will move the original software to /system/PHKL_3395/orig. HP recommends keeping this software there in order to recover from any potential problems. It is also recommended that you move the PHKL_3395.text file to /system/PHKL_3395 to be retained for future reference. If you wish to put this patch on a magnetic tape and update from the tape drive, dd a copy of the patch to the tape drive. As an example the following will create a copy of the patch that update can read: dd if=PHKL_3395.updt of=/dev/rmt/0m bs=2048