android_kernel_xiaomi_sm8350/mm
David Rientjes 098d7f128a oom: add per-zone locking
OOM killer synchronization should be done with zone granularity so that memory
policy and cpuset allocations may have their corresponding zones locked and
allow parallel kills for other OOM conditions that may exist elsewhere in the
system.  DMA allocations can be targeted at the zone level, which would not be
possible if locking was done in nodes or globally.

Synchronization shall be done with a variation of "trylocks." The goal is to
put the current task to sleep and restart the failed allocation attempt later
if the trylock fails.  Otherwise, the OOM killer is invoked.

Each zone in the zonelist that __alloc_pages() was called with is checked for
the newly-introduced ZONE_OOM_LOCKED flag.  If any zone has this flag present,
the "trylock" to serialize the OOM killer fails and returns zero.  Otherwise,
all the zones have ZONE_OOM_LOCKED set and the try_set_zone_oom() function
returns non-zero.

Cc: Andrea Arcangeli <andrea@suse.de>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-17 08:42:45 -07:00
..
allocpercpu.c
backing-dev.c mm: per device dirty threshold 2007-10-17 08:42:45 -07:00
bootmem.c
bounce.c block: Initial support for data-less (or empty) barrier support 2007-10-16 11:03:56 +02:00
fadvise.c
filemap_xip.c mm: write iovec cleanup 2007-10-16 09:42:54 -07:00
filemap.c fs: remove some AOP_TRUNCATED_PAGE 2007-10-16 09:42:58 -07:00
fremap.c fix VM_CAN_NONLINEAR check in sys_remap_file_pages 2007-10-08 12:58:14 -07:00
highmem.c
hugetlb.c hugetlb: fix dynamic pool resize failure case 2007-10-16 09:43:03 -07:00
internal.h Breakout page_order() to internal.h to avoid special knowledge of the buddy allocator 2007-10-16 09:43:01 -07:00
Kconfig memory unplug: page offline 2007-10-16 09:43:02 -07:00
madvise.c
Makefile memory unplug: page isolation 2007-10-16 09:43:02 -07:00
memory_hotplug.c fix memory hot remove not configured case. 2007-10-16 09:43:02 -07:00
memory.c flush icache before set_pte() on ia64: flush icache at set_pte 2007-10-16 09:42:59 -07:00
mempolicy.c mm/mempolicy.c: cleanups 2007-10-16 09:43:03 -07:00
mempool.c
migrate.c flush icache before set_pte() on ia64: flush icache at set_pte 2007-10-16 09:42:59 -07:00
mincore.c
mlock.c
mmap.c fix NULL pointer dereference in __vm_enough_memory() 2007-08-22 19:52:45 -07:00
mmzone.c
mprotect.c flush icache before set_pte() on ia64: flush icache at set_pte 2007-10-16 09:42:59 -07:00
mremap.c
msync.c
nommu.c fix NULL pointer dereference in __vm_enough_memory() 2007-08-22 19:52:45 -07:00
oom_kill.c oom: add per-zone locking 2007-10-17 08:42:45 -07:00
page_alloc.c oom: change all_unreclaimable zone member to flags 2007-10-17 08:42:45 -07:00
page_io.c Drop 'size' argument from bio_endio and bi_end_io 2007-10-10 09:25:57 +02:00
page_isolation.c memory unplug: page isolation 2007-10-16 09:43:02 -07:00
page-writeback.c mm: dirty balancing for tasks 2007-10-17 08:42:45 -07:00
pdflush.c
prio_tree.c
quicklist.c
readahead.c mm: bdi init hooks 2007-10-17 08:42:45 -07:00
rmap.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
shmem_acl.c
shmem.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
slab.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
slob.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
slub.c Slab API: remove useless ctor parameter and reorder parameters 2007-10-17 08:42:45 -07:00
sparse-vmemmap.c memory hotplug: Hot-add with sparsemem-vmemmap 2007-10-16 09:43:02 -07:00
sparse.c memory hotplug: Hot-add with sparsemem-vmemmap 2007-10-16 09:43:02 -07:00
swap_state.c mm: clarify __add_to_swap_cache locking 2007-10-16 09:42:53 -07:00
swap.c mm: bdi init hooks 2007-10-17 08:42:45 -07:00
swapfile.c Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION 2007-07-29 16:45:38 -07:00
thrash.c
tiny-shmem.c
truncate.c mm: count reclaimable pages per BDI 2007-10-17 08:42:45 -07:00
util.c Slab allocators: fail if ksize is called with a NULL parameter 2007-10-16 09:42:53 -07:00
vmalloc.c Categorize GFP flags 2007-10-16 09:42:59 -07:00
vmscan.c oom: change all_unreclaimable zone member to flags 2007-10-17 08:42:45 -07:00
vmstat.c oom: change all_unreclaimable zone member to flags 2007-10-17 08:42:45 -07:00