Patch-ID# 100614-11
Keywords: ipi cg6 prestoserve async mmap kernelmap nfs mount inode panic
Synopsis: SunDBE 1.2; SunIDP 1.0; ODS 1.0: sun4m jumbo patch for watchdog reset 
Date: Jul/31/95

Solaris Release:
 
SunOS release: 4.1.2

Unbundled Product: SunDBE, SunIDP, Online Disk Suite (ODS)

Unbundled Release: 1.2, 1.0, 1.0
 
Topic: IPI - Galaxy jumbo patch
 
BugId's fixed with this patch:  1077801 1080842 1063059 1075751 1077539 1083811 1074668 1077642 1077896 1093755 1096375 1091735 1096425 1097555 1099188 1115859 1116597 1119466 1108504 1078521 1103986 1115612 1074797 1090519 1172021 1176299 1177110

Changes incorporated in this version: 1090519

Architectures for which this patch is available: sun4 sun4m

Patches which may conflict with this patch: 101021

***************************** IMPORTANT *************************************
*                                                                           *
*       This patch also contains support for IPI Dual Port (SunIDP).        *
*									    *
*       This patch also contains support for Online Disk Suite (ODS). If    *
*       this unbundled package is installed, use machdep.o.ods_only when    *
*       installing the patch.	                                            *
*                                                                           *
*       If ONLY SunIDP is installed, use the latest version of patch 100727.*
*       If neither SunDBE nor SunIDP is installed, use the latest patch     *
*       100542.                                                             *
*									    *
*                                                                           *
*       ODS: This patch contains one module for use on ODS systems only.    *
*            Module machdep.o.ods_only replaces machdep.o                   *
*            This module should be used only when running ODS.              *
*                                                                           *
*      This patch should be installed ONLY on a system with SunDBE.         *
*                                                                           *
*****************************************************************************

Other patches this accumulates and obsoletes:

Obsoleted by: 

Files included with this patch:

        README,
        machdep.o, mmu.o, vfs.o, vfs_bio.o

Problem Description: 
This patch fixes several bugs in the IPI disk device driver, some of
which manifest as apparent PrestoServe problems when IPI disks are
being cached with PrestoServe. It also fixes rare cases when a panic
can happen while shutting down a galaxy system.

BugId	1177110
Summary: 690 MACHINE CRASHES IN FUIWORD()

BugId	1176299
Summary: machine soft hangs in hat_ptblempty()

BugId	1172021
Summary: UNIX diagnostics/iostat does not show correct information. It may
be idp related.

BugId	1090519
Summary: SUN4/690 PANIC'S WITH UNEXPECTED TRAP 65545 FAULT 4

BugId	1077801
On 4.1.2 FCS software with prestoserve added
will fail with the following message when analyzing the disk using format
or when booting from the disk.
   
 > is_poll_intr: resp for unknown cmd: channel 0  slave 0  facility 1
 > IPI Response:
 >   len e  refnum 13   opcode 02  mod 00  stat 0018
 >
 >   addr  len ID  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f 10
 >   000a : 05 52 00 00 02 00 
 >
 > ipi 0: missing interrupt.  refnum 4a
 > id000g: block 28238 (627590 abs): read: missing interrupt - attempting recovery
 > idc0: driver requesting controller dump
 > idc0: ctlr message: 'Did panic dump to drive 0 '
 > is0: resetting slave
 > idc0: ctlr message: 'FW revision date = 4/18/91 , level = 50 '
 > idc0: Recovery complete.

Bugid	1080842
Summary: UNIX/IPI DISK READ SYSTEM CALL DOES NOT RETURN ERROR ON DRIVE FAULT

Bugid	1063059
Summary: IPI DRIVER DOESN'T RETURN ERROR WHEN IT DIDN'T GET RESPONSE PACKET

Bugid	1075751
Summary: "VME: Dropped Int-Ack cycle" messages

Bugid   1077539
Summary: increase HEAPBYTES

Bugid   1079876
Summary: fputest kvm_open failed

Bugid   1077642
Summary: Kernel reports wrong SIMM location when ECC bits are in error themselves

Bugid   1074668
Summary: Kernel panics when running sunvision 1.1 as superuser.

Bugid	1093755 1096375 1091735
Revise the hard level 15 interrupt handler so that (a) it does not allow
one cpu to turn off the SIR_ASYNCFLT before the other cpu(s) get into the
hard level 15 interrupt code, (b) so that it handles asynchronous sbus
writes to /dev/sbus[1-3] correctly, so that it handles asynchronous
vme writes to /dev/vme16* and /dev/vme24* correctly. Also, update the
trap handler not to barf on bus errors on data faults and timeouts and
bus errors on text faults. And fix locore to handle soft level 15 interrupts
before hard level 15 interrupts.

Bugid	1096425
Summary: SunIDP - iostat statistics unavailable after multiple offline/online
	of IDP disks

Bugid   1097555 
Summary: kernel panics with kmem_free: block already free

Bugid   1044625
Summary: ipi missing interrupt write retry failed hangs system.

BugId:  1099188
Summary: Online Disk Suite - system running ods and mirroring swap partition hangs 
when the application allocating a lot of swap space.

BugID: 1108504
Summary: SunIDP - dsd goes into disk wait (STATE D) and hangs indefinitely.

BugID: 1077801
Summary: SunDBE - system panic with kmem_free: free block overlap.

Bugid   1115859
Summary: The IPI Driver cannot reset controller during failure with 64
outstanding I/O's.
 
Bugid   1116597
Summary: sun4/sun4m 4.1.3 systems text fault panic on GENERIC kernel
	 while conducting two simultaneous ipi formats while tar'ing
	 to another ipi disk on same controller.

Bugid   1119466
Summary: "IPI driver unreliable" fixes.
1071797 During panic, when "syncing file systems ...", the machine
	continuously "BAD TRAP"s until it "WATCHDOG RESET"s.
	L1-A is ineffective.

BugID 1118195 panic: ifree: freeing free inode.(side effect)
BugID 1078521 panic: dup ialloc
BugID 1106986 panic: umount on exported filesys
BugID 1115612 panic: alloccgblk: can't find blk in cyl  occured during
		     LADDIS Benchmark run  (sun4m only)

Install Instructions: 

AS ROOT:

1. Save a copy of the files to be patched:

Common SunDBE files:
   mv /sys/`arch -k`/OBJ/locore.o /sys/`arch -k`/OBJ/locore.o.fcs
   mv /sys/`arch -k`/OBJ/ufs_vfsops.o /sys/`arch -k`/OBJ/ufs_vfsops.o.fcs
   mv /sys/`arch -k`/OBJ/vfs.o /sys/`arch -k`/OBJ/vfs.o.fcs
   mv /sys/`arch -k`/OBJ/id.o /sys/`arch -k`/OBJ/id.o.fcs
   mv /sys/`arch -k`/OBJ/is.o /sys/`arch -k`/OBJ/is.o.fcs
   mv /sys/`arch -k`/OBJ/ipi.o /sys/`arch -k`/OBJ/ipi.o.fcs
   mv /sys/`arch -k`/OBJ/machdep.o /sys/`arch -k`/OBJ/machdep.o.fcs
   mv /sys/`arch -k`/OBJ/vm_machdep.o /sys/`arch -k`/OBJ/vm_machdep.o.fcs
   mv /sys/sundev/ipi_error.h /sys/sundev/ipi_error.h.fcs
   mv /sys/sundev/mbvar.h /sys/sundev/mbvar.h.fcs

On system running Online Disk Suite Unbundled Product:
   mv /sys/`arch -k`/OBJ/md.o /sys/`arch -k`/OBJ/md.o.fcs

On sun4m systems ONLY:
   mv /sys/sun4m/OBJ/vfs_bio.o /sys/`arch -k`/OBJ/vfs_bio.o.fcs
   mv /sys/sun4m/OBJ/mmu.o /sys/`arch -k`/OBJ/mmu.o.fcs
   mv /sys/sun4m/OBJ/ufs_alloc.o /sys/`arch -k`/OBJ/ufs_alloc.o.fcs
   mv /sys/sun4m/OBJ/mem.o /sys/sun4m/OBJ/mem.o.fcs
   mv /sys/sun4m/OBJ/module_ross_asm.o /sys/sun4m/OBJ/module_ross_asm.o.fcs
   mv /sys/sun4m/OBJ/module_asm.o /sys/sun4m/OBJ/module_asm.o.fcs
   mv /sys/sun4m/OBJ/kern_exec.o /sys/sun4m/OBJ/kern_exec.o.fcs
   mv /sys/sun4m/OBJ/kern_fork.o /sys/sun4m/OBJ/kern_fork.o.fcs
   mv /sys/sun4m/OBJ/kern_synch.o /sys/sun4m/OBJ/kern_synch.o.fcs
   mv /sys/sun4m/OBJ/trap.o /sys/sun4m/OBJ/trap.o.fcs
   mv /sys/sun4m/async.h /sys/sun4m/async.h.fcs
   mv /sys/sun4m/pcb.h /sys/sun4m/pcb.h.fcs
   mv /sys/sys/buf.h /sys/sys/buf.h.fcs
   mv /sys/sundev/ipi3.h /sys/sundev/ipi3.h.fcs
If SunIDP is installed:
   mv /sys/sun4m/OBJ/is_conf.o /sys/sun4m/OBJ/is_conf.o.fcs


2. Install the new files:

Common SunDBE files: 
   cp `arch -k`/locore.o /sys/`arch -k`/OBJ
   cp `arch -k`/vm_machdep.o /sys/`arch -k`/OBJ
   cp `arch -k`/ufs_vfsops.o /sys/`arch -k`/OBJ
   cp `arch -k`/vfs.o /sys/`arch -k`/OBJ
   cp ipi_error.h /sys/sundev/ipi_error.h
   cp ipi_error.h /usr/include/sundev/ipi_error.h
   cp mbvar.h /sys/sundev/mbvar.h
   cp mbvar.h /usr/include/sundev/mbvar.h

If SunIDP is installed:
   cp `arch -k`/id.idp.o /sys/`arch -k`/OBJ/id.o
   cp `arch -k`/is.idp.o /sys/`arch -k`/OBJ/is.o
   cp `arch -k`/ipi.idp.o /sys/`arch -k`/OBJ/ipi.o

If SunIDP is *NOT* installed:
   cp `arch -k`/id.o /sys/`arch -k`/OBJ
   cp `arch -k`/is.o /sys/`arch -k`/OBJ
   cp `arch -k`/ipi.o /sys/`arch -k`/OBJ

If Online Disk Suite (ODS) is installed:
   cp `arch -k`/machdep.o.ods_only /sys/`arch -k`/OBJ/machdep.o
   cp `arch -k`/md.o.ods_only /sys/`arch -k`/OBJ/md.o
 
If Online Disk Suite (ODS) is *NOT* installed:
   cp `arch -k`/machdep.o /sys/`arch -k`/OBJ/machdep.o

On sun4m systems ONLY:
   cp sun4m/mem.o /sys/sun4m/OBJ
   cp sun4m/module_ross_asm.o /sys/sun4m/OBJ
   cp sun4m/module_asm.o /sys/sun4m/OBJ
   cp sun4m/kern_exec.o /sys/sun4m/OBJ
   cp sun4m/kern_fork.o /sys/sun4m/OBJ
   cp sun4m/kern_synch.o /sys/sun4m/OBJ
   cp sun4m/mmu.o /sys/sun4m/OBJ
   cp sun4m/ufs_alloc.o /sys/sun4m/OBJ
   cp sun4m/vfs_bio.o /sys/sun4m/OBJ
   cp sun4m/trap.o /sys/sun4m/OBJ
   cp sun4m/async.h /sys/sun4m
   cp sun4m/pcb.h /sys/sun4m
   cp sun4m/buf.h /sys/sys
If SunIDP is installed:
   cp sun4m/is_conf.idp.o /sys/sun4m/OBJ/is_conf.o
   cp sun4m/ipi3.idp.h /sys/sundev/ipi3.h
If SunIDP is *NOT* installed:
   cp sun4m/ipi3.h /sys/sundev/ipi3.h


3. Rebuild your kernel, install it and reboot the machine

Refer to the System Administration Manual for information about
building and booting new kernels.
