Skip site navigation (1)Skip section navigation (2)
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>