Re: [PATCH 2/6] mm: vmstat: move slab statistics from zone to node counters
From: Michael Ellerman <hidden>
Date: 2017-06-06 04:31:09
Also in:
linux-mm, linux-s390, lkml
Johannes Weiner [off-list ref] writes:
From 89ed86b5b538d8debd3c29567d7e1d31257fa577 Mon Sep 17 00:00:00 2001 From: Johannes Weiner <redacted> Date: Mon, 5 Jun 2017 14:12:15 -0400 Subject: [PATCH] mm: vmstat: move slab statistics from zone to node counters fix Unable to handle kernel paging request at virtual address 2e116007 pgd = c0004000 [2e116007] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 0 Comm: swapper Not tainted 4.12.0-rc3-00153-gb6bc6724488a #200 Hardware name: Generic DRA74X (Flattened Device Tree) task: c0d0adc0 task.stack: c0d00000 PC is at __mod_node_page_state+0x2c/0xc8 LR is at __per_cpu_offset+0x0/0x8 pc : [<c0271de8>] lr : [<c0d07da4>] psr: 600000d3 sp : c0d01eec ip : 00000000 fp : c15782f4 r10: 00000000 r9 : c1591280 r8 : 00004000 r7 : 00000001 r6 : 00000006 r5 : 2e116000 r4 : 00000007 r3 : 00000007 r2 : 00000001 r1 : 00000006 r0 : c0dc27c0 Flags: nZCv IRQs off FIQs off Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 8000406a DAC: 00000051 Process swapper (pid: 0, stack limit = 0xc0d00218) Stack: (0xc0d01eec to 0xc0d02000) 1ee0: 600000d3 c0dc27c0 c0271efc 00000001 c0d58864 1f00: ef470000 00008000 00004000 c029fbb0 01000000 c1572b5c 00002000 00000000 1f20: 00000001 00000001 00008000 c029f584 00000000 c0d58864 00008000 00008000 1f40: 01008000 c0c23790 c15782f4 a00000d3 c0d58864 c02a0364 00000000 c0819388 1f60: c0d58864 000000c0 01000000 c1572a58 c0aa57a4 00000080 00002000 c0dca000 1f80: efffe980 c0c53a48 00000000 c0c23790 c1572a58 c0c59e48 c0c59de8 c1572b5c 1fa0: c0dca000 c0c257a4 00000000 ffffffff c0dca000 c0d07940 c0dca000 c0c00a9c 1fc0: ffffffff ffffffff 00000000 c0c00680 00000000 c0c53a48 c0dca214 c0d07958 1fe0: c0c53a44 c0d0caa4 8000406a 412fc0f2 00000000 8000807c 00000000 00000000 [<c0271de8>] (__mod_node_page_state) from [<c0271efc>] (mod_node_page_state+0x2c/0x4c) [<c0271efc>] (mod_node_page_state) from [<c029fbb0>] (cache_alloc_refill+0x5b8/0x828) [<c029fbb0>] (cache_alloc_refill) from [<c02a0364>] (kmem_cache_alloc+0x24c/0x2d0) [<c02a0364>] (kmem_cache_alloc) from [<c0c23790>] (create_kmalloc_cache+0x20/0x8c) [<c0c23790>] (create_kmalloc_cache) from [<c0c257a4>] (kmem_cache_init+0xac/0x11c) [<c0c257a4>] (kmem_cache_init) from [<c0c00a9c>] (start_kernel+0x1b8/0x3c0) [<c0c00a9c>] (start_kernel) from [<8000807c>] (0x8000807c) Code: e79e5103 e28c3001 e0833001 e1a04003 (e19440d5) ---[ end trace 0000000000000000 ]---
Just to be clear that's not my call trace.
The zone counters work earlier than the node counters because the zones have special boot pagesets, whereas the nodes do not. Add boot nodestats against which we account until the dynamic per-cpu allocator is available.
This isn't working for me. I applied it on top of next-20170605, I still
get an oops:
$ qemu-system-ppc64 -M pseries -m 1G -kernel build/vmlinux -vga none -nographic
SLOF **********************************************************************
QEMU Starting
...
Linux version 4.12.0-rc3-gcc-5.4.1-next-20170605-dirty (michael-3CFtikCczRkZu89psBSBvNBPR1lH4CV8@public.gmane.org) (gcc version 5.4.1 20170214 (Custom 2af61cd06c9fd8f5) ) #352 SMP Tue Jun 6 14:09:57 AEST 2017
...
PID hash table entries: 4096 (order: -1, 32768 bytes)
Memory: 1014592K/1048576K available (9920K kernel code, 1536K rwdata, 2608K rodata, 832K init, 1420K bss, 33984K reserved, 0K cma-reserved)
Unable to handle kernel paging request for data at address 0x00000338
Faulting instruction address: 0xc0000000002cf338
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=2048
NUMA
pSeries
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted 4.12.0-rc3-gcc-5.4.1-next-20170605-dirty #352
task: c000000000d11080 task.stack: c000000000e24000
NIP: c0000000002cf338 LR: c0000000002cf0dc CTR: 0000000000000000
REGS: c000000000e279a0 TRAP: 0380 Not tainted (4.12.0-rc3-gcc-5.4.1-next-20170605-dirty)
MSR: 8000000002001033 <SF,VEC,ME,IR,DR,RI,LE>
CR: 22482242 XER: 00000000
CFAR: c0000000002cf6a0 SOFTE: 0
GPR00: c0000000002cf0dc c000000000e27c20 c000000000e28300 c00000003ffc6300
GPR04: c000000000e556f8 0000000000000000 000000003f120000 0000000000000000
GPR08: c000000000ed3058 0000000000000330 0000000000000000 ffffffffffffff80
GPR12: 0000000028402824 c00000000fd40000 0000000000000060 0000000000f540a8
GPR16: 0000000000f540d8 fffffffffffffffd 000000003dc54ee0 0000000000000014
GPR20: c000000000b90e60 c000000000b90e90 0000000000002000 0000000000000000
GPR24: 0000000000000401 0000000000000000 0000000000000001 c00000003e000000
GPR28: 0000000080010400 f0000000000f8000 0000000000000006 c000000000cb4270
NIP [c0000000002cf338] new_slab+0x338/0x770
LR [c0000000002cf0dc] new_slab+0xdc/0x770
Call Trace:
[c000000000e27c20] [c0000000002cf0dc] new_slab+0xdc/0x770 (unreliable)
[c000000000e27cf0] [c0000000002d6bb4] __kmem_cache_create+0x1a4/0x6a0
[c000000000e27e00] [c000000000c73098] create_boot_cache+0x98/0xdc
[c000000000e27e80] [c000000000c77608] kmem_cache_init+0x5c/0x160
[c000000000e27f00] [c000000000c43ec8] start_kernel+0x290/0x51c
[c000000000e27f90] [c00000000000b070] start_here_common+0x1c/0x4ac
Instruction dump:
419e0388 893d0007 3d02000b 3908ad58 79291f24 7c68482a 60000000 3d230001
e9299a42 39290066 79291f24 7d2a4a14 <eb890008> e93c0080 7fa34800 409e03b0
---[ end trace 0000000000000000 ]---
cheers