mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
mm: kvmalloc support __GFP_RETRY_MAYFAIL for all sizes
Now that __GFP_RETRY_MAYFAIL has a reasonable semantic regardless of the request size we can drop the hackish implementation for !costly orders. __GFP_RETRY_MAYFAIL retries as long as the reclaim makes a forward progress and backs of when we are out of memory for the requested size. Therefore we do not need to enforce__GFP_NORETRY for !costly orders just to silent the oom killer anymore. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Michal Hocko <[email protected]> Acked-by: Vlastimil Babka <[email protected]> Cc: Alex Belits <[email protected]> Cc: Chris Wilson <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Darrick J. Wong <[email protected]> Cc: David Daney <[email protected]> Cc: Johannes Weiner <[email protected]> Cc: Mel Gorman <[email protected]> Cc: NeilBrown <[email protected]> Cc: Ralf Baechle <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
91c63ecda7
commit
cc965a29db
1 changed files with 4 additions and 10 deletions
14
mm/util.c
14
mm/util.c
|
|
@ -339,9 +339,9 @@ EXPORT_SYMBOL(vm_mmap);
|
|||
* Uses kmalloc to get the memory but if the allocation fails then falls back
|
||||
* to the vmalloc allocator. Use kvfree for freeing the memory.
|
||||
*
|
||||
* Reclaim modifiers - __GFP_NORETRY and __GFP_NOFAIL are not supported. __GFP_RETRY_MAYFAIL
|
||||
* is supported only for large (>32kB) allocations, and it should be used only if
|
||||
* kmalloc is preferable to the vmalloc fallback, due to visible performance drawbacks.
|
||||
* Reclaim modifiers - __GFP_NORETRY and __GFP_NOFAIL are not supported.
|
||||
* __GFP_RETRY_MAYFAIL is supported, and it should be used only if kmalloc is
|
||||
* preferable to the vmalloc fallback, due to visible performance drawbacks.
|
||||
*
|
||||
* Any use of gfp flags outside of GFP_KERNEL should be consulted with mm people.
|
||||
*/
|
||||
|
|
@ -366,13 +366,7 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node)
|
|||
if (size > PAGE_SIZE) {
|
||||
kmalloc_flags |= __GFP_NOWARN;
|
||||
|
||||
/*
|
||||
* We have to override __GFP_RETRY_MAYFAIL by __GFP_NORETRY for !costly
|
||||
* requests because there is no other way to tell the allocator
|
||||
* that we want to fail rather than retry endlessly.
|
||||
*/
|
||||
if (!(kmalloc_flags & __GFP_RETRY_MAYFAIL) ||
|
||||
(size <= PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER))
|
||||
if (!(kmalloc_flags & __GFP_RETRY_MAYFAIL))
|
||||
kmalloc_flags |= __GFP_NORETRY;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue