Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 May 2014 14:06:24 +0000 (UTC)
From:      Scott Long <scottl@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r266745 - head/sys/x86/x86
Message-ID:  <201405271406.s4RE6OBw028713@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: scottl
Date: Tue May 27 14:06:23 2014
New Revision: 266745
URL: http://svnweb.freebsd.org/changeset/base/266745

Log:
  Revert r266481.  It was based on faulty analysis of the problem.  A correct
  fix is forthcoming.
  
  Obtained from:	Netflix, Inc.

Modified:
  head/sys/x86/x86/busdma_bounce.c

Modified: head/sys/x86/x86/busdma_bounce.c
==============================================================================
--- head/sys/x86/x86/busdma_bounce.c	Tue May 27 13:35:31 2014	(r266744)
+++ head/sys/x86/x86/busdma_bounce.c	Tue May 27 14:06:23 2014	(r266745)
@@ -172,35 +172,12 @@ bounce_bus_dma_tag_create(bus_dma_tag_t 
 	newtag->map_count = 0;
 	newtag->segments = NULL;
 
-	/*
-	 * Bouncing might be needed if there's a filter.
-	 * XXX Filters are likely broken as there's no way to
-	 *     guarantee that bounce pages will also satisfy the
-	 *     filter requirement.
-	 */
 	if (parent != NULL && ((newtag->common.filter != NULL) ||
 	    ((parent->common.flags & BUS_DMA_COULD_BOUNCE) != 0)))
 		newtag->common.flags |= BUS_DMA_COULD_BOUNCE;
 
-	/*
-	 * Bouncing might be needed if there's an upper memory
-	 * restriction.
-	 */
-	if (newtag->common.lowaddr < ptoa((vm_paddr_t)Maxmem))
-		newtag->common.flags |= BUS_DMA_COULD_BOUNCE;
-
-	/*
-	 * Bouncing might be needed if there's an alignment
-	 * restriction that can't be satisfied by breaking up
-	 * the segment.
-	 * XXX Need to consider non-natural alignment.
-	 * XXX Static allocations that tie to bus_dmamem_alloc()
-	 *     will likely pass this test and be penalized with
-	 *     the COULD_BOUNCE flag.  Should probably have
-	 *     bus_dmamem_alloc() clear this flag.
-	 */
-	if ((newtag->common.nsegments <= 1) &&
-	    (newtag->common.alignment > 1))
+	if (newtag->common.lowaddr < ptoa((vm_paddr_t)Maxmem) ||
+	    newtag->common.alignment > 1)
 		newtag->common.flags |= BUS_DMA_COULD_BOUNCE;
 
 	if (((newtag->common.flags & BUS_DMA_COULD_BOUNCE) != 0) &&



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