Subject: Re: port-sparc64/15200: sparc64 savecore makes kernel panic at pciide_dma_init()
To: None <bouyer@antioche.lip6.fr>
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
List: port-sparc64
Date: 03/03/2002 09:50:19
In article <20020110165505.GA15723@antioche.lip6.fr>
bouyer@antioche.lip6.fr wrote:

> On Thu, Jan 10, 2002 at 06:06:10PM +0200, Antti Kantee wrote:
> > savecore: writing compressed core to /var/crash/netbsd.0.core.gz
> > pciide_dma: segment 0 physical addr 0xc006d2b0 len 0xd2b0 not properly aligned

> Hum, 0xc006d2b0+0xd2b0=0xC007A560, it crosses a 64k boundary, which is
> not allowed by pciide hardware.

I got the same panic on my U5 and the following patch seems to fix this:

Index: iommu.c
===================================================================
RCS file: /cvsroot/syssrc/sys/arch/sparc64/dev/iommu.c,v
retrieving revision 1.48
diff -u -r1.48 iommu.c
--- iommu.c	2002/02/21 02:42:27	1.48
+++ iommu.c	2002/03/03 00:41:54
@@ -526,7 +526,8 @@
 			"seg %d start %lx size %lx\n", seg,
 			(long)map->dm_segs[seg].ds_addr, 
 			map->dm_segs[seg].ds_len));
-		map->dm_segs[seg].ds_len = sgstart & (boundary - 1);
+		map->dm_segs[seg].ds_len =
+		    boundary - (sgstart & (boundary - 1));
 		if (++seg > map->_dm_segcnt) {
 			/* Too many segments.  Fail the operation. */
 			DPRINTF(IDB_INFO, ("iommu_dvmamap_load: "

---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp