Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2015 06:12:38 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282120 - in head/sys: arm/arm mips/mips powerpc/powerpc x86/x86
Message-ID:  <201504280612.t3S6Cc5h065611@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Tue Apr 28 06:12:37 2015
New Revision: 282120
URL: https://svnweb.freebsd.org/changeset/base/282120

Log:
  The add_bounce_page() function can be called when loading physical
  pages which pass a NULL virtual address. If the BUS_DMA_KEEP_PG_OFFSET
  flag is set, use the physical address to compute the page offset
  instead. The physical address should always be valid when adding
  bounce pages and should contain the same page offset like the virtual
  address.
  
  Submitted by:	Svatopluk Kraus <onwahe@gmail.com>
  MFC after:	1 week
  Reviewed by:	jhb@

Modified:
  head/sys/arm/arm/busdma_machdep-v6.c
  head/sys/arm/arm/busdma_machdep.c
  head/sys/mips/mips/busdma_machdep.c
  head/sys/powerpc/powerpc/busdma_machdep.c
  head/sys/x86/x86/busdma_bounce.c

Modified: head/sys/arm/arm/busdma_machdep-v6.c
==============================================================================
--- head/sys/arm/arm/busdma_machdep-v6.c	Tue Apr 28 03:24:27 2015	(r282119)
+++ head/sys/arm/arm/busdma_machdep-v6.c	Tue Apr 28 06:12:37 2015	(r282120)
@@ -1685,8 +1685,8 @@ add_bounce_page(bus_dma_tag_t dmat, bus_
 
 	if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
 		/* Page offset needs to be preserved. */
-		bpage->vaddr |= vaddr & PAGE_MASK;
-		bpage->busaddr |= vaddr & PAGE_MASK;
+		bpage->vaddr |= addr & PAGE_MASK;
+		bpage->busaddr |= addr & PAGE_MASK;
 	}
 	bpage->datavaddr = vaddr;
 	bpage->dataaddr = addr;

Modified: head/sys/arm/arm/busdma_machdep.c
==============================================================================
--- head/sys/arm/arm/busdma_machdep.c	Tue Apr 28 03:24:27 2015	(r282119)
+++ head/sys/arm/arm/busdma_machdep.c	Tue Apr 28 06:12:37 2015	(r282120)
@@ -1441,8 +1441,8 @@ add_bounce_page(bus_dma_tag_t dmat, bus_
 
 	if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
 		/* Page offset needs to be preserved. */
-		bpage->vaddr |= vaddr & PAGE_MASK;
-		bpage->busaddr |= vaddr & PAGE_MASK;
+		bpage->vaddr |= addr & PAGE_MASK;
+		bpage->busaddr |= addr & PAGE_MASK;
 	}
 	bpage->datavaddr = vaddr;
 	bpage->dataaddr = addr;

Modified: head/sys/mips/mips/busdma_machdep.c
==============================================================================
--- head/sys/mips/mips/busdma_machdep.c	Tue Apr 28 03:24:27 2015	(r282119)
+++ head/sys/mips/mips/busdma_machdep.c	Tue Apr 28 06:12:37 2015	(r282120)
@@ -1359,8 +1359,8 @@ add_bounce_page(bus_dma_tag_t dmat, bus_
 
 	if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
 		/* Page offset needs to be preserved. */
-		bpage->vaddr |= vaddr & PAGE_MASK;
-		bpage->busaddr |= vaddr & PAGE_MASK;
+		bpage->vaddr |= addr & PAGE_MASK;
+		bpage->busaddr |= addr & PAGE_MASK;
 	}
 	bpage->datavaddr = vaddr;
 	bpage->dataaddr = addr;

Modified: head/sys/powerpc/powerpc/busdma_machdep.c
==============================================================================
--- head/sys/powerpc/powerpc/busdma_machdep.c	Tue Apr 28 03:24:27 2015	(r282119)
+++ head/sys/powerpc/powerpc/busdma_machdep.c	Tue Apr 28 06:12:37 2015	(r282120)
@@ -1121,8 +1121,8 @@ add_bounce_page(bus_dma_tag_t dmat, bus_
 
 	if (dmat->flags & BUS_DMA_KEEP_PG_OFFSET) {
 		/* Page offset needs to be preserved. */
-		bpage->vaddr |= vaddr & PAGE_MASK;
-		bpage->busaddr |= vaddr & PAGE_MASK;
+		bpage->vaddr |= addr & PAGE_MASK;
+		bpage->busaddr |= addr & PAGE_MASK;
 	}
 	bpage->datavaddr = vaddr;
 	bpage->dataaddr = addr;

Modified: head/sys/x86/x86/busdma_bounce.c
==============================================================================
--- head/sys/x86/x86/busdma_bounce.c	Tue Apr 28 03:24:27 2015	(r282119)
+++ head/sys/x86/x86/busdma_bounce.c	Tue Apr 28 06:12:37 2015	(r282120)
@@ -994,8 +994,8 @@ add_bounce_page(bus_dma_tag_t dmat, bus_
 
 	if (dmat->common.flags & BUS_DMA_KEEP_PG_OFFSET) {
 		/* Page offset needs to be preserved. */
-		bpage->vaddr |= vaddr & PAGE_MASK;
-		bpage->busaddr |= vaddr & PAGE_MASK;
+		bpage->vaddr |= addr & PAGE_MASK;
+		bpage->busaddr |= addr & PAGE_MASK;
 	}
 	bpage->datavaddr = vaddr;
 	bpage->dataaddr = addr;



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