Signed-off-by: Christoph Hellwig <[email protected]>
---
 kernel/dma/swiotlb.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c
index 8ca0964ebf3a..5c3db7c89e0f 100644
--- a/kernel/dma/swiotlb.c
+++ b/kernel/dma/swiotlb.c
@@ -606,8 +606,11 @@ __swiotlb_map_page(struct device *dev, phys_addr_t phys, 
size_t size,
 
        switch (swiotlb_force) {
        case SWIOTLB_NO_FORCE:
-               dev_warn_ratelimited(dev,
-                       "swiotlb: force disabled for address %pa\n", &phys);
+               if (!(attrs & DMA_ATTR_NO_WARN)) {
+                       dev_warn_ratelimited(dev,
+                               "swiotlb: force disabled for address %pa\n",
+                               &phys);
+               }
                return -EOPNOTSUPP;
        case SWIOTLB_NORMAL:
                /* can we address the memory directly? */
@@ -627,10 +630,12 @@ __swiotlb_map_page(struct device *dev, phys_addr_t phys, 
size_t size,
        /* Ensure that the address returned is DMA'ble */
        *dma_addr = __phys_to_dma(dev, map_addr);
        if (unlikely(!dma_capable(dev, *dma_addr, size))) {
-               dev_err_ratelimited(dev,
-                       "DMA: swiotlb buffer not addressable.\n");
+               if (!(attrs & DMA_ATTR_NO_WARN)) {
+                       dev_err_ratelimited(dev,
+                               "DMA: swiotlb buffer not addressable.\n");
+               }
                swiotlb_tbl_unmap_single(dev, map_addr, size, dir,
-                       attrs | DMA_ATTR_SKIP_CPU_SYNC);
+                               attrs | DMA_ATTR_SKIP_CPU_SYNC);
                return -EINVAL;
        }
        return 0;
-- 
2.18.0

Reply via email to