|
@@ -281,10 +281,14 @@ map_single(struct device *dev, void *ptr, size_t size,
|
|
ptr = buf->safe;
|
|
ptr = buf->safe;
|
|
|
|
|
|
dma_addr = buf->safe_dma_addr;
|
|
dma_addr = buf->safe_dma_addr;
|
|
|
|
+ } else {
|
|
|
|
+ /*
|
|
|
|
+ * We don't need to sync the DMA buffer since
|
|
|
|
+ * it was allocated via the coherent allocators.
|
|
|
|
+ */
|
|
|
|
+ consistent_sync(ptr, size, dir);
|
|
}
|
|
}
|
|
|
|
|
|
- consistent_sync(ptr, size, dir);
|
|
|
|
-
|
|
|
|
return dma_addr;
|
|
return dma_addr;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -397,7 +401,10 @@ sync_single(struct device *dev, dma_addr_t dma_addr, size_t size,
|
|
default:
|
|
default:
|
|
BUG();
|
|
BUG();
|
|
}
|
|
}
|
|
- consistent_sync(buf->safe, size, dir);
|
|
|
|
|
|
+ /*
|
|
|
|
+ * No need to sync the safe buffer - it was allocated
|
|
|
|
+ * via the coherent allocators.
|
|
|
|
+ */
|
|
} else {
|
|
} else {
|
|
consistent_sync(dma_to_virt(dev, dma_addr), size, dir);
|
|
consistent_sync(dma_to_virt(dev, dma_addr), size, dir);
|
|
}
|
|
}
|