diff options
Diffstat (limited to 'drivers/dma-buf/heaps/system_heap.c')
| -rw-r--r-- | drivers/dma-buf/heaps/system_heap.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c index bbe7881f1360..81bce36c30f8 100644 --- a/drivers/dma-buf/heaps/system_heap.c +++ b/drivers/dma-buf/heaps/system_heap.c @@ -52,6 +52,11 @@ static gfp_t order_flags[] = {HIGH_ORDER_GFP, HIGH_ORDER_GFP, LOW_ORDER_GFP}; static const unsigned int orders[] = {8, 4, 0}; #define NUM_ORDERS ARRAY_SIZE(orders) +static unsigned int module_max_order = orders[0]; + +module_param_named(max_order, module_max_order, uint, 0400); +MODULE_PARM_DESC(max_order, "Maximum allocation order override."); + static int dup_sg_table(struct sg_table *from, struct sg_table *to) { struct scatterlist *sg, *new_sg; @@ -328,7 +333,7 @@ static struct dma_buf *system_heap_allocate(struct dma_heap *heap, struct system_heap_buffer *buffer; DEFINE_DMA_BUF_EXPORT_INFO(exp_info); unsigned long size_remaining = len; - unsigned int max_order = orders[0]; + unsigned int max_order = module_max_order; struct dma_buf *dmabuf; struct sg_table *table; struct scatterlist *sg; @@ -423,6 +428,9 @@ static int __init system_heap_create(void) if (IS_ERR(sys_heap)) return PTR_ERR(sys_heap); + if (module_max_order > orders[0]) + module_max_order = orders[0]; + return 0; } module_init(system_heap_create); |
