Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/etnaviv: switch devcoredump allocations to GFP_NOWAIT

The etnaviv devcoredump is created in the GPU reset path, which
must make forward progress to avoid stalling memory reclaim on
unsignalled dma fences. The currently used __GFP_NORETRY does not
prohibit sleeping on direct reclaim, breaking the forward progress
guarantee. Switch to GFP_NOWAIT, which allows background reclaim
to be triggered, but avoids any stalls waiting for direct reclaim.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

+2 -3
+2 -3
drivers/gpu/drm/etnaviv/etnaviv_dump.c
··· 159 159 file_size += sizeof(*iter.hdr) * n_obj; 160 160 161 161 /* Allocate the file in vmalloc memory, it's likely to be big */ 162 - iter.start = __vmalloc(file_size, GFP_KERNEL | __GFP_NOWARN | 163 - __GFP_NORETRY); 162 + iter.start = __vmalloc(file_size, GFP_NOWAIT); 164 163 if (!iter.start) { 165 164 mutex_unlock(&submit->mmu_context->lock); 166 165 dev_warn(gpu->dev, "failed to allocate devcoredump file\n"); ··· 229 230 230 231 etnaviv_core_dump_header(&iter, ETDUMP_BUF_END, iter.data); 231 232 232 - dev_coredumpv(gpu->dev, iter.start, iter.data - iter.start, GFP_KERNEL); 233 + dev_coredumpv(gpu->dev, iter.start, iter.data - iter.start, GFP_NOWAIT); 233 234 }