From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Fri, 28 Jul 2000 01:21:51 -0400 From: arisawa@ar.aichi-u.ac.jp Message-Id: <200007280521.BAA08647@cse.psu.edu> To: 9fans@cse.psu.edu Subject: Re: [9fans] 53c895 failed to INIT MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: ecc09456-eac8-11e9-9e20-41e7f4b1d025 Hello, nigel@9fs.org said: >#define KPRINT if(1)print >#define IPRINT if(1)print >#define DEBUG(n) ((n) <= 2) and jmk@plan9.bell-labs.com: >Which of the fileserver kernels are you using (plan9pc, emelie, etc.)? >They were all slightly different in the original release but will all >be the same in the update planned this weekend. > >What do you have in plan9.ini? Thanks. My 9pcfs is based on emelie and my plan9.ini is as follows. ----- plan9.ini ---- *nomp=1 bootfile=fd0!dos!9pcfs distname=plan9 scsi0=type=53c8xx ether0=type=elnk3 monitor=cga mouseport=ps2 nvr=fd!0!plan9.nvr sysname=gaea -------------------- Manual says known scsi type is mylex and 53c8xx. Not ncr53c8xx. However you will find in fs/emelie/scsi.c: static struct { char* type; Scsiio (*reset)(int, ISAConf*); } scsictlr[] = { { "aha1542", buslogic, }, { "buslogic", buslogic, }, { "ncr53c8xx", ncr53c8xxreset, }, { 0, }, }; So I have add a line this time { "53c8xx", ncr53c8xxreset, }, so that 9pcfs can go farther to the line including (*scsictlr[n].reset)(ctlrno, ctlr)) in fs/emelie/scsi.c: for(n = 0; scsictlr[n].type; n++) { if(strcmp(scsictlr[n].type, ctlr->type)) continue; if((ctlr->io = (*scsictlr[n].reset)(ctlrno, ctlr)) == 0) break; However problem has not fixed; 9pcfs shows the same message as before: scsi#0: 53c895: port 0 Failed to INIT controller So I investigated farther. In the function ncr53c8xxreset() in fs/emelie/scsincr53c8xx.c, 9pcfs can proceed to init(ctlr, isa, differential). So I added the debugging code in init function as follows: rid = pcicfgr8(pcidev, PciRID); for (var = 0; var < MAXVAR; var++) { print("scsincr53c8xx.c: init(): did=%d,%d rid=%d, %d\n", pcidev->did,variant[var].did,rid,variant[var].maxrid); if (pcidev->did == variant[var].did && rid <= variant[var].maxrid) break; } if (var >= MAXVAR) return 0; print("scsi#%d: %s rev. 0x%.2x intr=%d command=%.4x\n", ctlr->ctlrno, variant[var].name, rid, pcidev->intl, pcicfgr16(pcidev, PciPCR)); The result is: scsincr53c8xx.c: init(): did=12,1 rid=1,15 scsincr53c8xx.c: init(): did=12,1 rid=1,31 scsincr53c8xx.c: init(): did=12,1 rid=1,255 scsincr53c8xx.c: init(): did=12,5 rid=1,255 scsincr53c8xx.c: init(): did=12,4 rid=1,255 scsincr53c8xx.c: init(): did=12,3 rid=1,15 scsincr53c8xx.c: init(): did=12,3 rid=1,255 scsincr53c8xx.c: init(): did=12,6 rid=1,15 scsincr53c8xx.c: init(): did=12,6 rid=1,255 scsincr53c8xx.c: init(): did=12,15 rid=1,1 scsincr53c8xx.c: init(): did=12,15 rid=1,255 scsincr53c8xx.c: init(): did=12,13 rid=1,255 scsincr53c8xx.c: init(): did=12,11 rid=1,255 Thanks again. Kenji Arisawa E-mail: arisawa@aichi-u.ac.jp