From: Julien Grall Date: Mon, 14 Jul 2014 17:47:31 +0000 (+0100) Subject: arm: busdma-v6: Correctly handle segment that require a bounce page X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=7664621631b10c08c3860be0fbea8eb8622225e4;p=people%2Fjulieng%2Ffreebsd.git 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 --- diff --git a/sys/arm/arm/busdma_machdep-v6.c b/sys/arm/arm/busdma_machdep-v6.c index 45f957ae9237..74b5762a5c25 100644 --- a/sys/arm/arm/busdma_machdep-v6.c +++ b/sys/arm/arm/busdma_machdep-v6.c @@ -1167,6 +1167,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 {