home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!dtix!darwin.sura.net!wupost!sdd.hp.com!elroy.jpl.nasa.gov!ucla-cs!ucla-mic!scott
- From: scott@pita.cns.ucla.edu (Scott Burris)
- Newsgroups: comp.unix.bsd
- Subject: 386BSD 0.1: kmem_map too small panic fix
- Message-ID: <1992Jul27.131414.12063@mic.ucla.edu>
- Date: 27 Jul 92 20:14:14 GMT
- Reply-To: scott@pita.cns.ucla.edu (Scott Burris)
- Organization: UCLA Campus Network Services
- Lines: 55
- Nntp-Posting-Host: pita.cns.ucla.edu
-
- Problem:
-
- Sometime the kernel crashes on bootup with a kmem_map too small panic.
-
- Solution:
-
- To my knowledge, this only happens with SCSI systems. In the SCSI driver,
- the block size of the disk is obtained through a SCSI READ CAPACITY
- command. Unfortunately, sometimes the returned block size is insane,
- causing the kernel to go belly up.
-
- * HACK ALERT * HACK ALERT * HACK ALERT * HACK ALERT * HACK ALERT *
- Although the following change fixes the problem by looping until a reasonable
- looking block size is returned (never more than 1 loop in my experience),
- I don't understand why the bogus information is returned in the first
- place. I consider this to be more of a hack than a fix, since the READ
- CAPACITY code should work correctly the first time.
-
- My advice is to not install this patch unless you are getting the
- panic described above.
-
- Patch follows:
-
-
- *** as.c Sun Jul 19 08:15:02 1992
- --- as.c.orig Sat Jul 18 20:10:32 1992
- ***************
- *** 438,444 ****
- goto done;
- }
-
- - bsagain:
- as->scsi_cdb_len = 10;
- bzero(cdb, 10);
- cdb[0] = 0x25; /* SCSI_READCAPACITY */
- --- 434,439 ----
- ***************
- *** 450,460 ****
-
- }
-
- - if (as->disk && as->bs > 10000) {
- - printf("weird bs %d\n", as->bs);
- - goto bsagain;
- - }
- -
- if(asverbose)
- printf("block size %d disksize %d ", as->bs, disksize);
-
- --- 445,450 ----
- --
- ----------
- Scott Burris
- UCLA Campus Network Services
- cnetslb@oac.ucla.edu (213) 206-4860 - OR - scott@pita.cns.ucla.edu
-