From owner-svn-src-projects@FreeBSD.ORG Fri Feb 1 10:00:22 2013 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8EA43517; Fri, 1 Feb 2013 10:00:22 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6915388C; Fri, 1 Feb 2013 10:00:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r11A0LMn060538; Fri, 1 Feb 2013 10:00:21 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r11A0LiY060434; Fri, 1 Feb 2013 10:00:21 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201302011000.r11A0LiY060434@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 1 Feb 2013 10:00:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r246203 - in projects/physbio/sys: arm/arm kern sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 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: Fri, 01 Feb 2013 10:00:22 -0000 Author: kib Date: Fri Feb 1 10:00:21 2013 New Revision: 246203 URL: http://svnweb.freebsd.org/changeset/base/246203 Log: ARM developers do not want the flushes of the partial cache lines surrounding DMAed data area for mbuf. Inform _bus_dmamap_load_buffer() that the current load is for mbuf, and make the bus_dmamap_sync_buf() to behave as if the buffer was aligned. Modified: projects/physbio/sys/arm/arm/busdma_machdep.c projects/physbio/sys/kern/subr_bus_dma.c projects/physbio/sys/sys/bus_dma.h Modified: projects/physbio/sys/arm/arm/busdma_machdep.c ============================================================================== --- projects/physbio/sys/arm/arm/busdma_machdep.c Fri Feb 1 09:48:43 2013 (r246202) +++ projects/physbio/sys/arm/arm/busdma_machdep.c Fri Feb 1 10:00:21 2013 (r246203) @@ -1010,6 +1010,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dm if (segs == NULL) segs = dmat->segments; + if ((flags & BUS_DMA_LOAD_MBUF) != 0) + map->flags |= DMAMAP_CACHE_ALIGNED; if ((dmat->flags & BUS_DMA_COULD_BOUNCE) != 0) { _bus_dmamap_count_pages(dmat, map, pmap, buf, buflen, flags); Modified: projects/physbio/sys/kern/subr_bus_dma.c ============================================================================== --- projects/physbio/sys/kern/subr_bus_dma.c Fri Feb 1 09:48:43 2013 (r246202) +++ projects/physbio/sys/kern/subr_bus_dma.c Fri Feb 1 10:00:21 2013 (r246203) @@ -110,7 +110,8 @@ _bus_dmamap_load_mbuf_sg(bus_dma_tag_t d for (m = m0; m != NULL && error == 0; m = m->m_next) { if (m->m_len > 0) { error = _bus_dmamap_load_buffer(dmat, map, m->m_data, - m->m_len, kernel_pmap, flags, segs, nsegs); + m->m_len, kernel_pmap, flags | BUS_DMA_LOAD_MBUF, + segs, nsegs); } } CTR5(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d nsegs %d", Modified: projects/physbio/sys/sys/bus_dma.h ============================================================================== --- projects/physbio/sys/sys/bus_dma.h Fri Feb 1 09:48:43 2013 (r246202) +++ projects/physbio/sys/sys/bus_dma.h Fri Feb 1 10:00:21 2013 (r246203) @@ -109,6 +109,8 @@ */ #define BUS_DMA_KEEP_PG_OFFSET 0x400 +#define BUS_DMA_LOAD_MBUF 0x800 + /* Forwards needed by prototypes below. */ union ccb; struct bio;