Date: Tue, 21 Apr 1998 19:42:30 +0800 From: Peter Wemm <peter@netplex.com.au> To: "Justin T. Gibbs" <gibbs@plutotech.com> Cc: gibbs@FreeBSD.ORG, scsi@FreeBSD.ORG Subject: Re: ahh, I think I see part of the problem.. (CAM bouncing) Message-ID: <199804211142.TAA19500@spinner.netplex.com.au> In-Reply-To: Your message of "Tue, 21 Apr 1998 00:20:39 CST." <199804210624.AAA03372@pluto.plutotech.com>
next in thread | previous in thread | raw e-mail | index | archive | help
"Justin T. Gibbs" wrote: > >I tried the previous patch that you posted but had a pretty spectacular > >explosion on a BT545S.. It "found" devices all the way up to da11 (at > >target 2 lun 5) and failed to mount root. The probes were reporting > >garbage.. Hmm.. Are all the allocations being zeroed? > > I don't think that is the problem. It is more likely caused by using > the wrong dmat on line 261 of bt_isa.c: > > if (bus_dmamem_alloc(bt->sense_dmat, <= Used to be mailbox_dm at > > This would allocate the incorrect amount of sense bounce space causing > untold trouble. Just to be sure, I tried this diff and it still fails with the broken probes. --- bt_isa.c.save Tue Apr 21 00:59:42 1998 +++ bt_isa.c Tue Apr 21 15:15:23 1998 @@ -268,7 +268,7 @@ bt->init_level++; /* And permanently map them */ - bus_dmamap_load(bt->sense_dmat, bt->sense_dmamap, + bus_dmamap_load(bt->mailbox_dmat, bt->sense_dmamap, bt->sense_buffers, bt->max_ccbs * sizeof(*bt->sense_buffers), btmapsensebuffers, bt, /*flags*/0); In this particular case I've been using the 545S since it panics on startup rather than after the system is 95% of the way through booting. After the bad probe, it finally fails with things like: sd0: invalid partition table (or is that invalid partition magic?) error 22: panic: cannot mount root (2) If I do a trace at that point, the nesting is so deep that it scrolls well off the screen so I can't see the more interesting top few stack frames. Do you have a nutshell summary of what all the bus dma calls do so that I have a better chance of finding more useful hints as to what's wrong? Also, what is the function of this variable? static bus_addr_t bounce_lowaddr = BUS_SPACE_MAXADDR; It's set to 0xffffffff. (2^32-1) but appears to be used in a role that I'd almost expect that it was meant to be 0x00ffffff.. On the other hand, it almost looks stale too since contigmalloc always gives a good page. Cheers, -Peter -- Peter Wemm <peter@netplex.com.au> Netplex Consulting To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-scsi" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804211142.TAA19500>