From 637041f47e19745d8e13c6374ff19145c5193790 Mon Sep 17 00:00:00 2001 From: Minchan Kim Date: Fri, 7 May 2021 12:57:44 -0700 Subject: [PATCH] init.gs101.rc: dump page_pinner information into bugreport Dump page_pinner information into dumpstate_board.txt. It helps to find vulnerable place of CMA failure. Page pinned ts 13 us count 0 PFN 10292273 Block 10051 type CMA Flags 0x8000000000080024(uptodate|active|swapbacked) try_grab_page+0x168/0x17c follow_page_pte+0x2e4/0x4c8 follow_pmd_mask+0x180/0x498 __get_user_pages+0x1a0/0x42c __get_user_pages_remote+0xa4/0x28c get_user_pages_remote+0x20/0x48 copy_strings+0x188/0x2ac do_execveat_common+0x278/0x300 __arm64_sys_execve+0x44/0x5c el0_svc_common+0xa4/0x180 do_el0_svc+0x28/0x88 el0_svc+0x14/0x24 el0_sync_handler+0x88/0xec el0_sync+0x19c/0x1c0 Page pinned ts 2 us count 0 PFN 10436170 Block 10191 type CMA Flags 0x8000000000080026(referenced|uptodate|active|swapbacked) try_grab_page+0x168/0x17c follow_page_pte+0x2e4/0x4c8 follow_pmd_mask+0x180/0x498 __get_user_pages+0x1a0/0x42c __get_user_pages_remote+0xa4/0x28c get_user_pages_remote+0x20/0x48 copy_strings+0x188/0x2ac do_execveat_common+0x290/0x300 __arm64_sys_execve+0x44/0x5c el0_svc_common+0xa4/0x180 do_el0_svc+0x28/0x88 el0_svc+0x14/0x24 el0_sync_handler+0x88/0xec el0_sync+0x19c/0x1c0 Bug: 187552095 Test: adb bugreport and confirmed it contains page_pinner information. Signed-off-by: Minchan Kim Change-Id: I59bd41ad9e06cab0348ce85059f73d0796632868 --- conf/init.gs101.rc | 4 ++++ dumpstate/DumpstateDevice.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/conf/init.gs101.rc b/conf/init.gs101.rc index 2fa52ade..1952f1c5 100644 --- a/conf/init.gs101.rc +++ b/conf/init.gs101.rc @@ -62,6 +62,10 @@ on init write /sys/block/zram0/comp_algorithm lz77eh write /proc/sys/vm/page-cluster 0 + # Page Pinner dumping at bugreport + chown system system /sys/kernel/debug/page_pinner/longterm_pinner + chown system system /sys/kernel/debug/page_pinner/alloc_contig_failed + # Some user code relies on ro.boot.hardware.revision setprop ro.boot.hardware.revision ${ro.revision} diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index a14b7891..8a2b0ed3 100644 --- a/dumpstate/DumpstateDevice.cpp +++ b/dumpstate/DumpstateDevice.cpp @@ -697,6 +697,8 @@ void DumpstateDevice::dumpMemorySection(int fd) { "fi; " "done"}); DumpFileToFd(fd, "dmabuf info", "/d/dma_buf/bufinfo"); + DumpFileToFd(fd, "Page Pinner - longterm pin", "/sys/kernel/debug/page_pinner/longterm_pinner"); + DumpFileToFd(fd, "Page Pinner - alloc_contig_failed", "/sys/kernel/debug/page_pinner/alloc_contig_failed"); } static void DumpF2FS(int fd) {