diff options
| author | Mikulas Patocka <mpatocka@redhat.com> | 2022-05-10 13:17:32 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-06-14 16:53:45 +0200 |
| commit | d956fe6b3da0187a4374d5d7b22b1f1b543727a9 (patch) | |
| tree | 40c016c8aece6874dd747bea6b226be23cf818e1 /lib | |
| parent | 30cf47a602746a9a5e37834193885824c7a28f2e (diff) | |
| download | linux-d956fe6b3da0187a4374d5d7b22b1f1b543727a9.tar.gz linux-d956fe6b3da0187a4374d5d7b22b1f1b543727a9.tar.bz2 linux-d956fe6b3da0187a4374d5d7b22b1f1b543727a9.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 'lib')
| -rw-r--r-- | lib/dma-debug.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/dma-debug.c b/lib/dma-debug.c index 61e7240947f5..163e0e9b357f 100644 --- a/lib/dma-debug.c +++ b/lib/dma-debug.c @@ -465,7 +465,7 @@ EXPORT_SYMBOL(debug_dma_dump_mappings); * 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) |
