We are seeing a lot of sg_alloc_table allocation failures using the new drm prime infrastructure. We isolated the cause to code in __sg_alloc_table that was re-writing the gfp_flags.
There is a comment in the code that suggest that there is an assumption about the allocation coming from a memory pool. This was likely true when sg lists were primarily used for disk I/O. Change-Id: I459169f56e4a9aa859661b22ec9d4e6925f99e85 Signed-off-by: Mandeep Singh Baines <m...@chromium.org> Cc: dri-devel@lists.freedesktop.org Cc: linaro-mm-...@lists.linaro.org Cc: Jens Axboe <ax...@kernel.dk> Cc: Paul Gortmaker <paul.gortma...@windriver.com> Cc: Cong Wang <amw...@redhat.com> Cc: Daniel Vetter <daniel.vet...@ffwll.ch> Cc: Rob Clark <rob.cl...@linaro.org> Cc: Sumit Semwal <sumit.sem...@linaro.org> Cc: Inki Dae <inki....@samsung.com> Cc: Dave Airlie <airl...@redhat.com> Cc: Sonny Rao <sonny...@chromium.org> Cc: Olof Johansson <ol...@chromium.org> --- lib/scatterlist.c | 8 -------- 1 files changed, 0 insertions(+), 8 deletions(-) diff --git a/lib/scatterlist.c b/lib/scatterlist.c index 6096e89..d09bdd8 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -279,14 +279,6 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents, if (!left) sg_mark_end(&sg[sg_size - 1]); - /* - * only really needed for mempool backed sg allocations (like - * SCSI), a possible improvement here would be to pass the - * table pointer into the allocator and let that clear these - * flags - */ - gfp_mask &= ~__GFP_WAIT; - gfp_mask |= __GFP_HIGH; prv = sg; } while (left); -- 1.7.7.3 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/dri-devel