From a77d2f922c0dd30b46b2430030d790e0f77a78e2 Mon Sep 17 00:00:00 2001
From: Julien Grall <julien.grall@linaro.org>
Date: Mon, 14 Jul 2014 18:47:31 +0100
Subject: [PATCH 38/48] arm: busdma-v6: Correctly handle segment that require a
 bounce page

sgsize has to be aligned to the driver requirement in any case. Currently,
when segment is using bounce page, FreeBSD forgot to update sgsize.

Signed-off-by: Julien Grall <julien.grall@linaro.org>
---
 sys/arm/arm/busdma_machdep-v6.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/arm/arm/busdma_machdep-v6.c b/sys/arm/arm/busdma_machdep-v6.c
index d7fcffa..1fa88c0 100644
--- a/sys/arm/arm/busdma_machdep-v6.c
+++ b/sys/arm/arm/busdma_machdep-v6.c
@@ -1168,6 +1168,8 @@ _bus_dmamap_load_buffer(bus_dma_tag_t dmat,
 
 		if (map->pagesneeded != 0 && must_bounce(dmat, map, curaddr,
 		    sgsize)) {
+			sgsize = roundup2(sgsize, dmat->alignment);
+			sgsize = MIN(sgsize, MIN(buflen, dmat->maxsegsz));
 			curaddr = add_bounce_page(dmat, map, vaddr, curaddr,
 						  sgsize);
 		} else {
-- 
2.1.0

