From owner-svn-src-projects@FreeBSD.ORG Sat Nov 5 19:58:05 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E2D7106564A; Sat, 5 Nov 2011 19:58:05 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5E73E8FC1A; Sat, 5 Nov 2011 19:58:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pA5Jw5lF082329; Sat, 5 Nov 2011 19:58:05 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pA5Jw577082327; Sat, 5 Nov 2011 19:58:05 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201111051958.pA5Jw577082327@svn.freebsd.org> From: Olivier Houchard Date: Sat, 5 Nov 2011 19:58:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r227119 - projects/armv6/sys/arm/arm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Nov 2011 19:58:05 -0000 Author: cognet Date: Sat Nov 5 19:58:05 2011 New Revision: 227119 URL: http://svn.freebsd.org/changeset/base/227119 Log: When handling bounce pages, on POSTREAD, invalidate cache for all bounce pages, not just the first one. Also, make sure the address and the size are dataline cache size aligned, it should be ok to invalidate before and after the buffer, as long as it stays in the bounce page, as those bits aren't supposed to be used anyway. Modified: projects/armv6/sys/arm/arm/busdma_machdep-v6.c Modified: projects/armv6/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- projects/armv6/sys/arm/arm/busdma_machdep-v6.c Sat Nov 5 19:25:21 2011 (r227118) +++ projects/armv6/sys/arm/arm/busdma_machdep-v6.c Sat Nov 5 19:58:05 2011 (r227119) @@ -1157,6 +1157,22 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus (vm_offset_t)bpage->busaddr, bpage->datacount); while (bpage != NULL) { + vm_offset_t startv; + vm_paddr_t startp; + int len; + + startv = bpage->vaddr &~ arm_dcache_align_mask; + startp = bpage->busaddr &~ arm_dcache_align_mask; + len = bpage->datacount; + + if (startv != bpage->vaddr) + len += bpage->vaddr & arm_dcache_align_mask; + if (len & arm_dcache_align_mask) + len = (len - + (len & arm_dcache_align_mask)) + + arm_dcache_align; + cpu_dcache_inv_range(startv, len); + l2cache_inv_range(startv, startp, len); bcopy((void *)bpage->vaddr, (void *)bpage->datavaddr, bpage->datacount);