*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 [EMAIL PROTECTED] with "unsubscribe freebsd-hackers" in the body of the message