From owner-p4-projects@FreeBSD.ORG Fri Nov 14 09:13:16 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9C5051065678; Fri, 14 Nov 2008 09:13:16 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5FEA41065689 for ; Fri, 14 Nov 2008 09:13:16 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe14.swip.net [212.247.155.161]) by mx1.freebsd.org (Postfix) with ESMTP id EA4968FC19 for ; Fri, 14 Nov 2008 09:13:15 +0000 (UTC) (envelope-from hselasky@c2i.net) X-Cloudmark-Score: 0.000000 [] X-Cloudmark-Analysis: v=1.0 c=1 a=Oumcy1zCVZoA:10 a=89sYFII7q9YA:10 a=aniA1o7mVp4QawOfT9qHqA==:17 a=6I5d2MoRAAAA:8 a=5hjLLUScPdrLCMmVSmIA:9 a=-1yZFZQbOdi_TBbrGB0A:7 a=oXe1z_HgLo3ZD3xMNlY0Q834POEA:4 a=50e4U0PicR4A:10 Received: from [62.113.133.1] (account mc467741@c2i.net [62.113.133.1] verified) by mailfe14.swip.net (CommuniGate Pro SMTP 5.2.6) with ESMTPA id 407629786; Fri, 14 Nov 2008 09:13:12 +0100 From: Hans Petter Selasky To: Perforce Change Reviews Date: Fri, 14 Nov 2008 09:15:17 +0100 User-Agent: KMail/1.9.7 References: <200811080910.mA89AgTZ048172@repoman.freebsd.org> In-Reply-To: <200811080910.mA89AgTZ048172@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200811140915.18846.hselasky@c2i.net> Cc: Alexander Motin Subject: Re: PERFORCE change 152649 for review - busdma problem X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Nov 2008 09:13:16 -0000 Hi Alexander, I am going to revert this patch and suggest a new one. I am not sure how to best implement it, but will it be Ok if I make the offset adjustment only for alignment <= 1 byte ? Is there any documentation or specification that needs to be updated? --HPS On Saturday 08 November 2008, Hans Petter Selasky wrote: > http://perforce.freebsd.org/chv.cgi?CH=152649 > > Change 152649 by hselasky@hselasky_laptop001 on 2008/11/08 09:09:50 > > > Fix a serious BUSDMA bug: The initial virtual page offset is > not retained on the bounce pages, which is what the EHCI and > the OHCI expects. > > Affected files ... > > .. //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#10 edit > > Differences ... > > ==== //depot/projects/usb/src/sys/i386/i386/busdma_machdep.c#10 (text+ko) > ==== > > @@ -938,7 +938,8 @@ > if (op & BUS_DMASYNC_PREWRITE) { > while (bpage != NULL) { > bcopy((void *)bpage->datavaddr, > - (void *)bpage->vaddr, > + (void *)(bpage->vaddr + > + ((vm_offset_t)(bpage->datavaddr) & PAGE_MASK)), > bpage->datacount); > bpage = STAILQ_NEXT(bpage, links); > } > @@ -947,7 +948,8 @@ > > if (op & BUS_DMASYNC_POSTREAD) { > while (bpage != NULL) { > - bcopy((void *)bpage->vaddr, > + bcopy((void *)(bpage->vaddr + > + ((vm_offset_t)(bpage->datavaddr) & PAGE_MASK)), > (void *)bpage->datavaddr, > bpage->datacount); > bpage = STAILQ_NEXT(bpage, links); > @@ -1149,7 +1151,7 @@ > bpage->datavaddr = vaddr; > bpage->datacount = size; > STAILQ_INSERT_TAIL(&(map->bpages), bpage, links); > - return (bpage->busaddr); > + return (bpage->busaddr + ((vm_offset_t)vaddr & PAGE_MASK)); > } > > static void