Patch-ID# 100614-03
Keywords: ipi, disk, interrupt, missing, cg6, prestoserve, galaxy, heapbytes, level15, async, panic, mmap, ECC, DBE1.2, IDP1.0, kernelmap
Synopsis: SunDBE 1.2;SunIDP 1.0: IPI - Galaxy jumbo patch
Date: 14/July/92
 
SunOS release: 4.1.2

Unbundled Product: SunDBE, SunIDP

Unbundled Release: 1.2, 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

Changes incorporated in this version: 1096425 1097555

Architectures for which this patch is available:  sun4, sun4m 

Patches which may conflict with this patch: 

Note: This patch also contains support for IPI Dual Port (SunIDP).
      If this unbundled package is installed use the objects id.idp.o
      and is.idp.o instead of id.o and is.o 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.

      This patch should be installed ONLY on a system with SunDBE.


Obsoleted by:


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	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


INSTALL:

Login as root.

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/locore.o /sys/`arch -k`/OBJ/locore.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 sun4m systems only:
   mv /sys/sun4m/OBJ/mem.o /sys/sun4m/OBJ/mem.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


If SunIDP is also 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

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

cp `arch -k`/locore.o /sys/`arch -k`/OBJ
cp `arch -k`/machdep.o /sys/`arch -k`/OBJ
cp `arch -k`/vm_machdep.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

On sun4m systems only:
   cp sun4m/mem.o /sys/sun4m/OBJ
   cp sun4m/kern_fork.o /sys/sun4m/OBJ
   cp sun4m/kern_synch.o /sys/sun4m/OBJ
   cp sun4m/trap.o /sys/sun4m/OBJ
   cp sun4m/async.h /sys/sun4m
   cp sun4m/pcb.h /sys/sun4m


You will then have to re-run config and make on your kernel.
Please refer to the System and Network administration manual
for information on building and installing a custom kernel.
