]> xenbits.xensource.com Git - people/julieng/freebsd.git/commitdiff
arm: busdma-v6: Correctly handle segment that require a bounce page
authorJulien Grall <julien.grall@linaro.org>
Mon, 14 Jul 2014 17:47:31 +0000 (18:47 +0100)
committerJulien Grall <julien.grall@citrix.com>
Sat, 3 Oct 2015 18:37:29 +0000 (19:37 +0100)
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

index 45f957ae92377f1db6fb306b57571a416886ab37..74b5762a5c258d9caeb0cf5d9a9fc3e716afbff0 100644 (file)
@@ -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 {