panic due to 'ds_len > SBP_SEG_MAX'
Pyun YongHyeon
pyunyh at gmail.com
Wed Jun 20 01:12:21 UTC 2007
On Tue, Jun 19, 2007 at 04:51:20PM -0400, Garance A Drosihn wrote:
> I have freebsd 7.x running on a PowerPC Mac-Mini. The hard disk in
> a mac mini is rather slow, so I have freebsd installed on an external
> firewire drive. The way it's setup, all the filesystems (including
> '/') are on that external firewire drive. This has been working okay
> for awhile.
>
> This past Sunday I updated my 7.x source tree and compiled everything.
> When I tried to boot up with the new kernel, I hit a panic:
>
> trying to mount root from ufs:/dev/da0s9
> panic: ds_len > SBP_SEG_MAX, fix busdma code
> KDB: enter: panic
>
> At the time I was already running late for something else, so I
> just rebooted into the old kernel and went back to running that.
> The older kernel was compiled on May 30th. The check I ran into
> is in sys/dev/firewire/sbp.c , and has been there for years, so
> it isn't a new check.
>
> Has anyone else seen this?
>
I have no experience with sbp(4) but I guess _bus_dmamap_loader_buffer
didn't honor specified DMA tag.
How about attached one?
--
Regards,
Pyun YongHyeon
-------------- next part --------------
Index: busdma_machdep.c
===================================================================
RCS file: /home/ncvs/src/sys/powerpc/powerpc/busdma_machdep.c,v
retrieving revision 1.26
diff -u -r1.26 busdma_machdep.c
--- busdma_machdep.c 8 Jun 2007 04:46:50 -0000 1.26
+++ busdma_machdep.c 20 Jun 2007 00:39:17 -0000
@@ -418,6 +418,8 @@
* Compute the segment size, and adjust counts.
*/
sgsize = PAGE_SIZE - ((u_long)curaddr & PAGE_MASK);
+ if (sgsize > dmat->maxsegsz)
+ sgsize = dmat->maxsegsz;
if (buflen < sgsize)
sgsize = buflen;
More information about the freebsd-ppc
mailing list