If the architecture can't remap or set an address uncached there is no way
to fullfill a request for a coherent allocation.  Return NULL in that case.
Note that this case currently does not happen, so this is a theoretical
fixup and/or a preparation for eventually supporting platforms that
can't support coherent allocations with the generic code.

Signed-off-by: Christoph Hellwig <h...@lst.de>
---
 kernel/dma/direct.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index f9658fe18498c..a13017656ecae 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -233,8 +233,9 @@ void *dma_direct_alloc(struct device *dev, size_t size,
                                return dma_direct_alloc_from_pool(dev, size,
                                                dma_handle, gfp);
                } else {
-                       if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED))
-                               set_uncached = true;
+                       if (!IS_ENABLED(CONFIG_ARCH_HAS_DMA_SET_UNCACHED))
+                               return NULL;
+                       set_uncached = true;
                }
        }
 
-- 
2.30.2

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to