2012-06-22 23:33:16

by Mandeep Singh Baines

[permalink] [raw]
Subject: [PATCH] lib/scatterlist: do not re-write gfp_flags in __sg_alloc_table

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 <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: Jens Axboe <[email protected]>
Cc: Paul Gortmaker <[email protected]>
Cc: Cong Wang <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Rob Clark <[email protected]>
Cc: Sumit Semwal <[email protected]>
Cc: Inki Dae <[email protected]>
Cc: Dave Airlie <[email protected]>
Cc: Sonny Rao <[email protected]>
Cc: Olof Johansson <[email protected]>
---
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