summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorMikulas Patocka <mpatocka@redhat.com>2022-05-10 13:17:32 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-06-14 18:11:28 +0200
commit5a71f14a9b2e9054228dd105eceb58ca79beb025 (patch)
tree4782cb248198a108e5d1737f65b54f911490a9c0 /kernel
parent6583d0d6ad6d488930125328080a02b98154aa72 (diff)
downloadlinux-stable-5a71f14a9b2e9054228dd105eceb58ca79beb025.tar.gz
linux-stable-5a71f14a9b2e9054228dd105eceb58ca79beb025.tar.bz2
linux-stable-5a71f14a9b2e9054228dd105eceb58ca79beb025.zip
dma-debug: change allocation mode from GFP_NOWAIT to GFP_ATIOMIC
[ Upstream commit 84bc4f1dbbbb5f8aa68706a96711dccb28b518e5 ] We observed the error "cacheline tracking ENOMEM, dma-debug disabled" during a light system load (copying some files). The reason for this error is that the dma_active_cacheline radix tree uses GFP_NOWAIT allocation - so it can't access the emergency memory reserves and it fails as soon as anybody reaches the watermark. This patch changes GFP_NOWAIT to GFP_ATOMIC, so that it can access the emergency memory reserves. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/dma/debug.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c
index 4dc3bbfd3e3f..1c133f610f59 100644
--- a/kernel/dma/debug.c
+++ b/kernel/dma/debug.c
@@ -450,7 +450,7 @@ void debug_dma_dump_mappings(struct device *dev)
* At any time debug_dma_assert_idle() can be called to trigger a
* warning if any cachelines in the given page are in the active set.
*/
-static RADIX_TREE(dma_active_cacheline, GFP_NOWAIT);
+static RADIX_TREE(dma_active_cacheline, GFP_ATOMIC);
static DEFINE_SPINLOCK(radix_lock);
#define ACTIVE_CACHELINE_MAX_OVERLAP ((1 << RADIX_TREE_MAX_TAGS) - 1)
#define CACHELINE_PER_PAGE_SHIFT (PAGE_SHIFT - L1_CACHE_SHIFT)