diff options
author | Christoph Hellwig <hch@lst.de> | 2019-08-20 11:45:49 +0900 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2019-08-21 07:14:10 +0900 |
commit | 90ae409f9eb3bcaf38688f9ec22375816053a08e (patch) | |
tree | 9ab3713cac2e657fc87fa8108a9dfa2b67f4d439 /include/linux/dma-contiguous.h | |
parent | 936376f88ff1845b384b3a82b9cd167e53039229 (diff) | |
download | linux-90ae409f9eb3bcaf38688f9ec22375816053a08e.tar.gz |
dma-direct: fix zone selection after an unaddressable CMA allocation
The new dma_alloc_contiguous hides if we allocate CMA or regular
pages, and thus fails to retry a ZONE_NORMAL allocation if the CMA
allocation succeeds but isn't addressable. That means we either fail
outright or dip into a small zone that might not succeed either.
Thanks to Hillf Danton for debugging this issue.
Fixes: b1d2dc009dec ("dma-contiguous: add dma_{alloc,free}_contiguous() helpers")
Reported-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Diffstat (limited to 'include/linux/dma-contiguous.h')
-rw-r--r-- | include/linux/dma-contiguous.h | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/include/linux/dma-contiguous.h b/include/linux/dma-contiguous.h index c05d4e661489..03f8e98e3bcc 100644 --- a/include/linux/dma-contiguous.h +++ b/include/linux/dma-contiguous.h @@ -160,10 +160,7 @@ bool dma_release_from_contiguous(struct device *dev, struct page *pages, static inline struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp) { - int node = dev ? dev_to_node(dev) : NUMA_NO_NODE; - size_t align = get_order(PAGE_ALIGN(size)); - - return alloc_pages_node(node, gfp, align); + return NULL; } static inline void dma_free_contiguous(struct device *dev, struct page *page, |