Actually, I suppose if you change:

        #define ISP_NSEG        ((MAXPHYS/PAGE_SIZE) + 1)


        #define ISP_NSEG        ((BUS_SPACE_MAXSIZE/PAGE_SIZE) + 1)

this will probably be more correct. I think this is probably what I should be
using anyway.

BTW- this was more of a 'hackers' or 'scsi' issue.

I *used* to, btw, put a massively large number for segments- basically the max
*should* be the number of segments I can stick in a single Request Queue
(2 or 3) command plus all the continuation entries possible (5 or 7 per
continuation entries, for FreeBSD ~250 or so- MMV depending on current state)-
that'd be on the order of ~1800 segments.

After getting burned by some surprises in the sparc64 implementation, I
decided to restrict it to paramaters that were compile time invariants for
each platform. I guess I picked the wrong parameter :-).


On Thu, 4 Apr 2002, Andrew Gallatin wrote:

> 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,
> Drew

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to