Date: Thu, 4 Apr 2002 11:08:29 -0800 (PST) From: Matthew Jacob <mjacob@feral.com> To: Andrew Gallatin <gallatin@cs.duke.edu> Cc: hackers@freebsd.org Subject: Re: BUS_SPACE_MAXSIZE & isp driver. Message-ID: <Pine.BSF.4.21.0204041105070.78599-100000@beppo> In-Reply-To: <Pine.BSF.4.21.0204041058010.78599-100000@beppo>
next in thread | previous in thread | raw e-mail | index | archive | help
*argh*
Moved to hackers...
[
Original mail from Drew:
I just booted a recent current (or rather attempted to) and saw this
when attempting to mount root from a qlogic card on my miata:
bus_dmamap_load: Too many segs! buf_len = 0x2000
spec_getpages:(da0a) I/O read failure: (error=22) bp
0xfffffe0004087ae8 vp 0xfffffe000ae90000
size: 98304, resid: 98304, a_count: 98304, valid: 0x0
nread: 0, reqpage: 7, pindex: 59, pcount: 12
vm_fault: pager read error, pid 1 (init)
<... more of same ...>
The only way I could get the system to boot was to increase
BUS_SPACE_MAXSIZE to 128K to match MAXPHYS. I don't know why they
don't match in the first place (they don't match on x86 either, so the
driver will probably puke there too.)
#define BUS_SPACE_MAXSIZE (128 * 1024)
Does anybody know why BUS_SPACE_MAXSIZE != MAXPHYS on some platforms?
Thanks,
]
The actual define that was left working in isp_pci.c was already
#define ISP_NSEGS ((BUS_SPACE_MAXSIZE / PAGE_SIZE) + 1)
which is copied from:
#define BUS_DMAMAP_NSEGS ((BUS_SPACE_MAXSIZE / PAGE_SIZE) + 1)
in all the busdma_machdep implementations.
I'm now very confused. How could this:
#ifdef __GNUC__
bus_dma_segment_t dm_segments[dmat->nsegments];
#else
bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS];
#endif
ever be expected to be correct for non __GNUC__
???
-matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0204041105070.78599-100000>
