Date: Wed, 20 Jun 2007 09:44:39 +0900 From: Pyun YongHyeon <pyunyh@gmail.com> To: Garance A Drosihn <drosih@rpi.edu> Cc: freebsd-ppc@FreeBSD.org Subject: Re: panic due to 'ds_len > SBP_SEG_MAX' Message-ID: <20070620004439.GC13241@cdnetworks.co.kr> In-Reply-To: <p06240801c29dee92a2d7@[128.113.24.47]> References: <p06240801c29dee92a2d7@[128.113.24.47]>
next in thread | previous in thread | raw e-mail | index | archive | help
--fUYQa+Pmc3FrFX/N Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 --fUYQa+Pmc3FrFX/N Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="busdma.patch" 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; --fUYQa+Pmc3FrFX/N--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070620004439.GC13241>