[PATCH v8 66/70] nommu: remove uses of VMA linked list

Liam Howlett liam.howlett at oracle.com
Fri Apr 29 13:16:13 PDT 2022


* Guenter Roeck <linux at roeck-us.net> [220428 12:31]:
> On Tue, Apr 26, 2022 at 03:06:52PM +0000, Liam Howlett wrote:
> > From: "Matthew Wilcox (Oracle)" <willy at infradead.org>
> > 
> > Use the maple tree or VMA iterator instead.  This is faster and will allow
> > us to shrink the VMA.
> > 
> > Signed-off-by: Matthew Wilcox (Oracle) <willy at infradead.org>
> > Signed-off-by: Liam R. Howlett <Liam.Howlett at Oracle.com>
> > Acked-by: Vlastimil Babka <vbabka at suse.cz>
> 
> This patch also results in boot failures for m68k:mcf5208evb qemu emulations.
> Backtrace and bisect log attached.

Thanks, I have tried my branch and was able to get buildroot to boot and
log in.  At least maple tree worked on this platform at one point.

> 
> Guenter
> 
> ---
> # bad: [bdc61aad77faf67187525028f1f355eff3849f22] Add linux-next specific files for 20220428
> # good: [af2d861d4cd2a4da5137f795ee3509e6f944a25b] Linux 5.18-rc4
> git bisect start 'HEAD' 'v5.18-rc4'
> # good: [a6ffa4aa7e81a54632f3370f4c93fce603160192] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
> git bisect good a6ffa4aa7e81a54632f3370f4c93fce603160192
> # good: [cd63f17e3bb63006f9f88bf7f5947b8e1601bcd9] Merge branch 'edac-for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git
> git bisect good cd63f17e3bb63006f9f88bf7f5947b8e1601bcd9
> # good: [cee7bbed3e5cc089b5c364ac8ad4a186c2a28bb6] Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine.git
> git bisect good cee7bbed3e5cc089b5c364ac8ad4a186c2a28bb6
> # good: [d5a23156ea99f10b584221893a6a7d6f6554cde8] Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
> git bisect good d5a23156ea99f10b584221893a6a7d6f6554cde8
> # good: [2f1fde90d983bc404503100c9c4bbbf1e191bcf4] selftests: cgroup: fix alloc_anon_noexit() instantly freeing memory
> git bisect good 2f1fde90d983bc404503100c9c4bbbf1e191bcf4
> # good: [fca1db6ff251278c532231552e840c7dc36dfa76] Merge branch 'bitmap-for-next' of https://github.com/norov/linux.git
> git bisect good fca1db6ff251278c532231552e840c7dc36dfa76
> # good: [40b39116fe8e6fb66e3166ea40138eec506dfd91] perf: use VMA iterator
> git bisect good 40b39116fe8e6fb66e3166ea40138eec506dfd91
> # bad: [33ef257872566922df2b6bcfdb5330b2388aef53] Docs/{ABI,admin-guide}/damon: update for fixed virtual address ranges monitoring
> git bisect bad 33ef257872566922df2b6bcfdb5330b2388aef53
> # good: [2d8640f244c1ea6c40acde911d339dabc2ac765d] mm/oom_kill: use maple tree iterators instead of vma linked list
> git bisect good 2d8640f244c1ea6c40acde911d339dabc2ac765d
> # bad: [49d281fa016f2906346f1707e5059b6f7674a948] mm/mmap.c: pass in mapping to __vma_link_file()
> git bisect bad 49d281fa016f2906346f1707e5059b6f7674a948
> # bad: [487c2c6d922605aebe6f470e1a458eb1425548db] nommu: remove uses of VMA linked list
> git bisect bad 487c2c6d922605aebe6f470e1a458eb1425548db
> # good: [dc4a1ab575a32e454be953f7b1b0222dcd3d47fa] mm/swapfile: use vma iterator instead of vma linked list
> git bisect good dc4a1ab575a32e454be953f7b1b0222dcd3d47fa
> # good: [7fffbdd08665ddeeb38768309269fa5b32388c3d] i915: use the VMA iterator
> git bisect good 7fffbdd08665ddeeb38768309269fa5b32388c3d
> # first bad commit: [487c2c6d922605aebe6f470e1a458eb1425548db] nommu: remove uses of VMA linked list
> 
> ---
> 
> ...
> page allocation failure: order:7, mode:0xcc0(GFP_KERNEL), nodemask=(null)
> CPU: 0 PID: 62 Comm: echo Not tainted 5.18.0-rc4-next-20220428 #1
> Stack from 405d9d14:
>         405d9d14 40335f43 40335f43 00000000 00000000 402da566 40335f43 400926f6
>         00000cc0 00000000 00000000 00000000 405d8000 40906ee0 405d9d6c 40335402
>         405d9d4c 405d9df8 40093158 00000cc0 00000000 40335402 00000007 00000007
>         000d8000 00000cc0 00000001 00000077 0000006c 00000000 40906ee0 409049a0
>         00000000 00000000 00000001 00000000 00000400 41cdad88 00000000 001008c0
>         00000000 409830d2 405d4037 283a0000 00004037 283a0000 00000000 00010000
> Call Trace: [<402da566>] dump_stack+0xc/0x10
>  [<400926f6>] warn_alloc+0xd0/0x1ce
>  [<40093158>] __alloc_pages+0x8c6/0xb7e
>  [<40046f82>] check_preempt_wakeup+0xce/0x178
>  [<400965da>] kmem_cache_alloc+0x22/0x17e
>  [<40093ca2>] alloc_pages_exact+0x86/0x14e
>  [<4008ddca>] do_mmap+0x3d8/0xa8a
>  [<40085ece>] vm_mmap_pgoff+0x5c/0x84
>  [<400a486c>] begin_new_exec+0x45e/0x852
>  [<400f1ea0>] load_flat_binary+0x5e8/0x878
>  [<4009bf94>] kernel_read+0x0/0x98
>  [<402d4308>] memset+0x0/0x70
>  [<4009e842>] fput+0x0/0x18
>  [<400a3638>] bprm_execve+0x188/0x3bc
>  [<400a3ab6>] copy_string_kernel+0x0/0x146
>  [<400a30ca>] copy_strings+0x0/0x1b4
>  [<400a3dce>] do_execveat_common+0x14c/0x220
>  [<403768f4>] do_name+0x27a/0x296
>  [<403765ec>] do_header+0x1c6/0x21c
>  [<403768f4>] do_name+0x27a/0x296
>  [<400a4c86>] sys_execve+0x26/0x30
>  [<403768f4>] do_name+0x27a/0x296
>  [<403765ec>] do_header+0x1c6/0x21c
>  [<400a4c60>] sys_execve+0x0/0x30
>  [<40022154>] system_call+0x48/0x94
>  [<403768f4>] do_name+0x27a/0x296
>  [<403765ec>] do_header+0x1c6/0x21c
> Mem-Info:
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:152
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1071 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:216kB pagetables:0kB all_unreclaimable? no
> DMA free:8568kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 1*8kB (U) 1*16kB (U) 9*32kB (U) 7*64kB (U) 21*128kB (U) 8*256kB (U) 6*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 8568kB
> 613 total pagecache pages
> 4096 pages RAM
> 0 pages HighMem/MovableOnly
> 476 pages reserved
> nommu: Allocation of length 884736 from process 62 (echo) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:152
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1071 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:216kB pagetables:0kB all_unreclaimable? no
> DMA free:8568kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 1*8kB (U) 1*16kB (U) 9*32kB (U) 7*64kB (U) 21*128kB (U) 8*256kB (U) 6*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 8568kB
> 613 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 63 (echo) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1409 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:176kB pagetables:0kB all_unreclaimable? no
> DMA free:11272kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 5*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11272kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 64 ([) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1409 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:176kB pagetables:0kB all_unreclaimable? no
> DMA free:11272kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 5*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11272kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 65 ([) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 66 (S20urandom) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 67 ([) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 68 (S40network) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 69 ([) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12
> nommu: Allocation of length 884736 from process 70 (S55runtest) failed
> active_anon:0 inactive_anon:0 isolated_anon:0
>  active_file:0 inactive_file:0 isolated_file:0
>  unevictable:606 dirty:0 writeback:0
>  slab_reclaimable:62 slab_unreclaimable:153
>  mapped:0 shmem:0 pagetables:0 bounce:0
>  kernel_misc_reclaimable:0
>  free:1415 free_pcp:0 free_cma:0
> Node 0 active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB isolated(anon):0kB isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB writeback_tmp:0kB kernel_stack:168kB pagetables:0kB all_unreclaimable? no
> DMA free:11320kB boost:0kB min:664kB low:824kB high:984kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:4848kB writepending:0kB present:32768kB managed:28960kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:0kB
> lowmem_reserve[]: 0 0 0
> DMA: 11*8kB (U) 6*16kB (U) 12*32kB (U) 10*64kB (U) 21*128kB (U) 11*256kB (U) 9*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB = 11320kB
> 614 total pagecache pages
> binfmt_flat: Unable to allocate RAM for process text/data, errno -12


More information about the maple-tree mailing list