Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Jan 2003 20:41:32 +0100
From:      Thomas Moestl <tmm@freebsd.org>
To:        Harti Brandt <brandt@fokus.gmd.de>
Cc:        sparc@freebsd.org
Subject:   Re: Problem with iommu_dvmamap_create
Message-ID:  <20030120194132.GC240@crow.dom2ip.de>
In-Reply-To: <20030120192946.GB240@crow.dom2ip.de>
References:  <20030117151958.U715@beagle.fokus.gmd.de> <20030117160857.GB304@crow.dom2ip.de> <20030117171317.F44530@beagle.fokus.gmd.de> <20030117171111.GC304@crow.dom2ip.de> <20030117181111.R45050@beagle.fokus.gmd.de> <20030117173303.GD304@crow.dom2ip.de> <20030120103814.X45050@beagle.fokus.gmd.de> <20030120151712.GA240@crow.dom2ip.de> <20030120161832.K45050@beagle.fokus.gmd.de> <20030120192946.GB240@crow.dom2ip.de>

next in thread | previous in thread | raw e-mail | index | archive | help

--vtzGhvizbBRQ85DL
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Mon, 2003/01/20 at 20:29:46 +0100, Thomas Moestl wrote:
> Yes, but I strongly suspect that the bug is only hidden by it,
> probably because it corrects the semantics of IOMMU_MAX_PRE_SEG, which
> effectively results in preallocation being reduced by one segment. I
> finally managed to reproduce similar behaviour, and think I might have
> a real fix. Can you please revert the previous patch (just to get a
> clean environment for reproducing the behaviour) and try again with
> just the attached patch applied?

Bah, actually attaching it might help.

	- Thomas

-- 
Thomas Moestl <tmoestl@gmx.net>	http://www.tu-bs.de/~y0015675/
              <tmm@FreeBSD.org>	http://people.FreeBSD.org/~tmm/
PGP fingerprint: 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C

--vtzGhvizbBRQ85DL
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="iommu-sz.diff"

Index: sparc64/iommu.c
===================================================================
RCS file: /ncvs/src/sys/sparc64/sparc64/iommu.c,v
retrieving revision 1.14
diff -u -r1.14 iommu.c
--- sparc64/iommu.c	6 Jan 2003 21:59:54 -0000	1.14
+++ sparc64/iommu.c	20 Jan 2003 19:17:47 -0000
@@ -288,6 +288,7 @@
 	struct iommu_state *first;
 	vm_size_t size;
 	vm_offset_t offs;
+	u_int64_t end;
 	int i;
 
 	/*
@@ -317,13 +318,13 @@
 		 * First IOMMU to be registered; set up resource mamangement
 		 * and allocate TSB memory.
 		 */
+		end = is->is_dvmabase + (size << (IO_PAGE_SHIFT - IOTTE_SHIFT));
 		iommu_dvma_rman.rm_type = RMAN_ARRAY;
 		iommu_dvma_rman.rm_descr = "DVMA Memory";
 		if (rman_init(&iommu_dvma_rman) != 0 ||
 		    rman_manage_region(&iommu_dvma_rman,
 		    (is->is_dvmabase >> IO_PAGE_SHIFT) + resvpg,
-		    (is->is_dvmabase + (size <<
-		     (IO_PAGE_SHIFT - IOTTE_SHIFT))) >> IO_PAGE_SHIFT) != 0)
+		    (end >> IO_PAGE_SHIFT) - 1) != 0)
 			panic("iommu_init: can't initialize dvma rman");
 		/*
 		 * Allocate memory for I/O page tables.  They need to be

--vtzGhvizbBRQ85DL--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-sparc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030120194132.GC240>