android_kernel_xiaomi_sm8450/mm
Carlos Galo ecd8068fb4 BACKPORT: mm: update mark_victim tracepoints fields
The current implementation of the mark_victim tracepoint provides only the
process ID (pid) of the victim process.  This limitation poses challenges
for userspace tools requiring real-time OOM analysis and intervention.
Although this information is available from the kernel logs, it’s not
the appropriate format to provide OOM notifications.  In Android, BPF
programs are used with the mark_victim trace events to notify userspace of
an OOM kill.  For consistency, update the trace event to include the same
information about the OOMed victim as the kernel logs.

- UID
   In Android each installed application has a unique UID. Including
   the `uid` assists in correlating OOM events with specific apps.

- Process Name (comm)
   Enables identification of the affected process.

- OOM Score
  Will allow userspace to get additional insight of the relative kill
  priority of the OOM victim. In Android, the oom_score_adj is used to
  categorize app state (foreground, background, etc.), which aids in
  analyzing user-perceptible impacts of OOM events [1].

- Total VM, RSS Stats, and pgtables
  Amount of memory used by the victim that will, potentially, be freed up
  by killing it.

[1] 246dc8fc95:frameworks/base/services/core/java/com/android/server/am/ProcessList.java;l=188-283
Signed-off-by: Carlos Galo <carlosgalo@google.com>
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Bug: 331214192
(cherry picked from commit 72ba14deb40a9e9668ec5e66a341ed657e5215c2)
[ carlosgalo: Manually added struct cred change in mark_oom_victim function ]
Link: https://lore.kernel.org/all/20240223173258.174828-1-carlosgalo@google.com/

Change-Id: I24f503ceca04b83f8abf42fcd04a3409e17be6b5
2024-04-08 18:40:58 +00:00
..
damon UPSTREAM: mm/damon/vaddr-test: fix memory leak in damon_do_test_apply_three_regions() 2024-03-13 13:35:31 +00:00
kasan Revert "kasan: print the original fault addr when access invalid shadow" 2023-11-27 15:23:01 +00:00
kfence UPSTREAM: kfence: avoid passing -g for test 2023-09-08 12:39:57 +01:00
backing-dev.c writeback, cgroup: remove extra percpu_ref_exit() 2023-05-30 12:57:56 +01:00
balloon_compaction.c
cleancache.c
cma_debug.c FROMLIST: mm: cma: introduce gfp flag in cma_alloc instead of no_warn 2021-01-25 12:21:02 -08:00
cma_sysfs.c ANDROID: make cma_sysfs experimental 2021-03-25 19:20:18 +00:00
cma.c This is the 5.10.202 stable release 2023-12-08 16:26:36 +00:00
cma.h ANDROID: GKI: add OEM data in cma struct 2021-06-04 11:15:16 -07:00
compaction.c ANDROID: vendor_hook: Add hook to abort reclaim and compaction 2023-07-18 17:31:55 +00:00
debug_page_ref.c
debug_vm_pgtable.c mm/debug_vm_pgtable: remove pte entry from the page table 2022-02-08 18:30:35 +01:00
debug.c ANDROID: mm: introduce page_pinner 2021-04-30 09:13:34 -07:00
dmapool.c
early_ioremap.c
fadvise.c
failslab.c
filemap.c This is the 5.10.197 stable release 2023-10-26 17:52:15 +00:00
frame_vector.c media: vb2: frame_vector.c: replace WARN_ONCE with a comment 2023-10-10 21:53:33 +02:00
frontswap.c
gup_benchmark.c
gup.c Merge 5.10.168 into android12-5.10-lts 2023-02-17 15:23:41 +00:00
highmem.c
hmm.c mm/hmm.c: allow VM_MIXEDMAP to work with hmm_range_fault 2022-01-27 10:54:36 +01:00
huge_memory.c This is the 5.10.176 stable release 2023-03-24 16:03:04 +00:00
hugetlb_cgroup.c hugetlb_cgroup: fix imbalanced css_get and css_put pair for shared mappings 2021-03-30 14:31:54 +02:00
hugetlb.c BACKPORT: hugetlb: unshare some PMDs when splitting VMAs 2023-04-13 18:04:03 +01:00
hwpoison-inject.c
init-mm.c FROMLIST: mm: protect mm_rb tree with a rwlock 2021-01-22 18:00:57 +00:00
internal.h Linux 5.10.47 2021-06-30 19:38:46 +02:00
interval_tree.c
ioremap.c
Kconfig ANDROID: mm: disable speculative page faults for CONFIG_NUMA 2022-11-27 09:32:29 -08:00
Kconfig.debug ANDROID: mm: introduce page_pinner 2021-04-30 09:13:34 -07:00
khugepaged.c This is the 5.10.179 stable release 2023-06-16 09:49:29 +00:00
kmemleak.c This is the 5.10.143 stable release 2022-09-22 14:38:08 +02:00
ksm.c BACKPORT: mm: don't be stuck to rmap lock on reclaim path 2022-10-11 16:33:36 +00:00
list_lru.c mm: list_lru: set shrinker map bit when child nr_items is not zero 2020-12-06 10:19:07 -08:00
maccess.c maccess: Fix writing offset in case of fault in strncpy_from_kernel_nofault() 2022-11-25 17:45:53 +01:00
madvise.c ANDROID: Add Interrupt Hook for madvise Compression 2023-11-01 19:07:41 +00:00
Makefile UPSTREAM: mm: introduce Data Access MONitor (DAMON) 2022-04-28 23:09:14 +08:00
mapping_dirty_helpers.c
memblock.c This is the 5.10.169 stable release 2023-02-25 15:32:12 +00:00
memcontrol.c This is the 5.10.202 stable release 2023-12-08 16:26:36 +00:00
memfd.c memfd: check for non-NULL file_seals in memfd_create() syscall 2023-06-28 10:28:09 +02:00
memory_hotplug.c This is the 5.10.202 stable release 2023-12-08 16:26:36 +00:00
memory-failure.c This is the 5.10.208 stable release 2024-01-16 13:12:39 +00:00
memory.c Merge tag 'android12-5.10.209_r00' into android12-5.10 2024-03-28 10:29:56 +00:00
mempolicy.c Merge 5.10.168 into android12-5.10-lts 2023-02-17 15:23:41 +00:00
mempool.c FROMGIT: kasan: use separate (un)poison implementation for integrated init 2021-06-17 14:39:37 -07:00
memremap.c mm/memremap.c: map FS_DAX device memory as decrypted 2022-11-16 09:57:17 +01:00
memtest.c
migrate.c Merge 5.10.168 into android12-5.10-lts 2023-02-17 15:23:41 +00:00
mincore.c
mlock.c ANDROID: mm: page_pinner: unattribute follow_page in munlock_vma_pages_range 2021-04-30 09:13:35 -07:00
mm_init.c
mmap.c Merge tag 'android12-5.10.160_r00' into android12-5.10 2023-01-21 12:06:54 +00:00
mmu_gather.c mm/khugepaged: fix GUP-fast interaction by sending IPI 2022-12-14 11:31:55 +01:00
mmu_notifier.c This is the 5.10.113 stable release 2022-05-12 11:23:35 +02:00
mmzone.c This is the 5.10.116 stable release 2022-05-16 08:45:59 +02:00
mprotect.c This is the 5.10.102 stable release 2022-02-23 12:56:37 +01:00
mremap.c ANDROID: mm: Fix VMA ref count after fast-mremap 2024-02-15 19:36:07 +00:00
msync.c
nommu.c ANDROID: mm: allow vmas with vm_ops to be speculatively handled 2021-04-23 18:42:39 -07:00
oom_kill.c BACKPORT: mm: update mark_victim tracepoints fields 2024-04-08 18:40:58 +00:00
page_alloc.c This is the 5.10.200 stable release 2023-11-26 14:07:49 +00:00
page_counter.c
page_ext.c UPSTREAM: mm/page_exit: fix kernel doc warning in page_ext_put() 2023-04-13 07:58:37 +01:00
page_idle.c BACKPORT: mm: don't be stuck to rmap lock on reclaim path 2022-10-11 16:33:36 +00:00
page_io.c ANDROID: vendor_hooks: Add hooks to record the I/O statistics of swap: 2022-06-30 03:00:23 +00:00
page_isolation.c ANDROID: mm: cma: skip problematic pageblock 2021-07-14 11:54:49 -07:00
page_owner.c ANDROID: mm: Export page_owner_inited and __set_page_owner 2023-08-29 23:09:59 +00:00
page_pinner.c ANDROID: page_pinner: prevent pp_buffer access before initialization 2023-03-23 13:28:36 -07:00
page_poison.c UPSTREAM: kasan: fix conflict with page poisoning 2021-07-19 20:39:17 +00:00
page_reporting.c
page_reporting.h
page_vma_mapped.c mm/thp: another PVMW_SYNC fix in page_vma_mapped_walk() 2021-06-30 08:47:29 -04:00
page-writeback.c ANDROID: vendor_hooks: add hook to balance_dirty_pages() 2021-05-20 19:38:42 +00:00
pagewalk.c This is the 5.10.142 stable release 2022-09-22 13:46:39 +02:00
percpu-internal.h percpu: make pcpu_nr_empty_pop_pages per chunk type 2021-04-14 08:42:03 +02:00
percpu-km.c
percpu-stats.c percpu: make pcpu_nr_empty_pop_pages per chunk type 2021-04-14 08:42:03 +02:00
percpu-vm.c
percpu.c Merge 5.10.30 into android12-5.10 2021-04-15 14:23:41 +02:00
pgalloc-track.h
pgtable-generic.c mm/thp: fix __split_huge_pmd_locked() on shmem migration entry 2021-06-30 08:47:26 -04:00
process_vm_access.c mm/process_vm_access.c: include compat.h 2021-01-19 18:27:21 +01:00
ptdump.c This is the 5.10.142 stable release 2022-09-22 13:46:39 +02:00
readahead.c Merge 5.10.201 into android12-5.10-lts 2023-11-29 14:46:51 +00:00
rmap.c ANDROID: Export symbols to do reverse mapping within memcg in kernel modules. 2023-08-23 12:33:26 +00:00
rodata_test.c
shmem.c This is the 5.10.195 stable release 2023-09-19 11:32:32 +00:00
shuffle.c
shuffle.h
slab_common.c BACKPORT: mm: make minimum slab alignment a runtime property 2023-01-20 00:46:19 +00:00
slab.c BACKPORT: mm: make minimum slab alignment a runtime property 2023-01-20 00:46:19 +00:00
slab.h This is the 5.10.82 stable release 2021-11-26 15:37:44 +01:00
slob.c BACKPORT: mm: make minimum slab alignment a runtime property 2023-01-20 00:46:19 +00:00
slub.c This is the 5.10.146 stable release 2022-09-29 17:06:30 +02:00
sparse-vmemmap.c
sparse.c mm/sparse: add the missing sparse_buffer_fini() in error branch 2021-05-14 09:50:45 +02:00
swap_cgroup.c
swap_slots.c ANDROID: sched: add restricted hooks to replace the former hooks 2022-10-24 14:26:09 +08:00
swap_state.c This is the 5.10.108 stable release 2022-03-23 12:30:33 +01:00
swap.c ANDROID: vendor_hooks: protect multi-mapcount pages in kernel 2022-08-03 20:10:45 +00:00
swapfile.c ANDROID: add vendor hook of add/delete/iterate node for swap_avail_heads 2023-09-15 19:58:39 +00:00
truncate.c mm/thp: unmap_mapping_page() to fix THP truncate_cleanup_page() 2021-06-30 08:47:27 -04:00
usercopy.c mm/usercopy: return 1 from hardened_usercopy __setup() handler 2022-04-08 14:40:43 +02:00
userfaultfd.c ANDROID: userfaultfd: abort uffdio ops if mmap_lock is contended 2024-03-15 19:49:14 +00:00
util.c ANDROID: vendor_hooks: Add hooks to avoid key threads stalled in 2023-06-30 08:42:41 +00:00
vmacache.c
vmalloc.c This is the 5.10.193 stable release 2023-08-31 18:29:19 +00:00
vmpressure.c FROMLIST: mm, memcg: add mem_cgroup_disabled checks in vmpressure and swap-related functions 2021-07-12 18:26:15 -07:00
vmscan.c ANDROID: mm: Add vendor hooks for recording when kswapd finishing the reclaim job 2024-02-02 17:56:46 +00:00
vmstat.c This is the 5.10.116 stable release 2022-05-16 08:45:59 +02:00
workingset.c
z3fold.c mm/z3fold: use release_z3fold_page_locked() to release locked z3fold page 2021-07-14 16:56:51 +02:00
zbud.c
zpool.c
zsmalloc.c This is the 5.10.120 stable release 2022-07-23 16:09:48 +02:00
zswap.c