Page MenuHomeFreeBSD

D26493.id77254.diff
No OneTemporary

D26493.id77254.diff

Index: sys/arm64/arm64/busdma_bounce.c
===================================================================
--- sys/arm64/arm64/busdma_bounce.c
+++ sys/arm64/arm64/busdma_bounce.c
@@ -162,6 +162,27 @@
static int _bus_dmamap_reserve_pages(bus_dma_tag_t dmat, bus_dmamap_t map,
int flags);
+static bool
+might_bounce(bus_dma_tag_t dmat)
+{
+
+ if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0)
+ return (true);
+
+ return (false);
+}
+
+static bool
+must_bounce(bus_dma_tag_t dmat, bus_addr_t paddr)
+{
+
+ if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0 &&
+ bus_dma_run_filter(&dmat->common, paddr))
+ return (true);
+
+ return (false);
+}
+
/*
* Allocate a device specific dma_tag.
*/
@@ -720,7 +741,7 @@
if (segs == NULL)
segs = dmat->segments;
- if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) {
+ if (might_bounce(dmat)) {
_bus_dmamap_count_phys(dmat, map, buf, buflen, flags);
if (map->pagesneeded != 0) {
error = _bus_dmamap_reserve_pages(dmat, map, flags);
@@ -735,9 +756,7 @@
while (buflen > 0) {
curaddr = buf;
sgsize = MIN(buflen, dmat->common.maxsegsz);
- if (((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) &&
- map->pagesneeded != 0 &&
- bus_dma_run_filter(&dmat->common, curaddr)) {
+ if (map->pagesneeded != 0 && must_bounce(dmat, curaddr)) {
sgsize = MIN(sgsize, PAGE_SIZE - (curaddr & PAGE_MASK));
curaddr = add_bounce_page(dmat, map, 0, curaddr,
sgsize);
@@ -791,7 +810,7 @@
if (segs == NULL)
segs = dmat->segments;
- if ((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) {
+ if (might_bounce(dmat)) {
_bus_dmamap_count_pages(dmat, map, pmap, buf, buflen, flags);
if (map->pagesneeded != 0) {
error = _bus_dmamap_reserve_pages(dmat, map, flags);
@@ -822,9 +841,7 @@
*/
max_sgsize = MIN(buflen, dmat->common.maxsegsz);
sgsize = PAGE_SIZE - (curaddr & PAGE_MASK);
- if (((dmat->bounce_flags & BF_COULD_BOUNCE) != 0) &&
- map->pagesneeded != 0 &&
- bus_dma_run_filter(&dmat->common, curaddr)) {
+ if (map->pagesneeded != 0 && must_bounce(dmat, curaddr)) {
sgsize = roundup2(sgsize, dmat->common.alignment);
sgsize = MIN(sgsize, max_sgsize);
curaddr = add_bounce_page(dmat, map, kvaddr, curaddr,

File Metadata

Mime Type
text/plain
Expires
Sat, Aug 15, 9:08 PM (11 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36801768
Default Alt Text
D26493.id77254.diff (2 KB)

Event Timeline