Re: arm64: perf test 26 rpi4 oops

From: Mike Galbraith
Date: Mon Jul 31 2023 - 20:33:55 EST


On Tue, 2023-08-01 at 01:48 +0200, Mike Galbraith wrote:
> On Tue, 2023-08-01 at 01:27 +0200, Mike Galbraith wrote:
> > On Mon, 2023-07-31 at 22:54 +0100, Lorenzo Stoakes wrote:
> > >
> > > Posted a fix at:-
> > >
> > > https://lore.kernel.org/all/20230731215021.70911-1-lstoakes@xxxxxxxxx/
> > >
> > > Please give that a go and indicate whether that resolves the issue.
> >
> > Yup, that fixed the oops issue.
>
> Heh, using Jiri's pick a spot from /proc/kallsyms test...
>
> root@rpi4:~# cat /proc/kallsyms | grep ksys_read
> ffffffe950baf7f8 T ksys_readahead
> ffffffe950c38708 T ksys_read
> root@rpi4:~# objdump -d --start-address=0xffffffe950c38708 --stop-address=0xffffffe950c3870a /proc/kcore
>
> /proc/kcore:     file format elf64-littleaarch64
>
>
> Disassembly of section load1:
>
> ffffffe950c38708 <load1+0x238708>:
> ffffffe950c38708:       Address 0xffffffe950c38708 is out of bounds.
>
> objdump: error: /proc/kcore(load2) is too large (0x3de8000000 bytes)
> objdump: Reading section load2 failed because: memory exhausted
> root@rpi4:~# dmesg|tail -2
> [  979.003019] __vm_enough_memory: pid: 12439, comm: objdump, not enough memory for the allocation
> [  979.003080] __vm_enough_memory: pid: 12439, comm: objdump, not enough memory for the allocation

crash> p ksys_read
ksys_read = $2 =
{ssize_t (unsigned int, char *, size_t)} 0xffffffe950c38710 <ksys_read>
crash> dis 0xffffffe950c38710 10
0xffffffe950c38710 <ksys_read+8>: paciasp
0xffffffe950c38714 <ksys_read+12>: stp x29, x30, [sp, #-64]!
0xffffffe950c38718 <ksys_read+16>: mrs x3, sp_el0
0xffffffe950c3871c <ksys_read+20>: mov x29, sp
0xffffffe950c38720 <ksys_read+24>: stp x21, x22, [sp, #32]
0xffffffe950c38724 <ksys_read+28>: mov x21, x1
0xffffffe950c38728 <ksys_read+32>: mov x22, x2
0xffffffe950c3872c <ksys_read+36>: ldr x1, [x3, #1320]
0xffffffe950c38730 <ksys_read+40>: str x1, [sp, #56]
0xffffffe950c38734 <ksys_read+44>: mov x1, #0x0 // #0
crash>

Ah, so arm64 kallsyms fibs a little.. x64_64 doesn't.

root@rpi4:~# objdump -d --start-address=0xffffffe950c38710 --stop-address=0xffffffe950c38734 /proc/kcore

/proc/kcore: file format elf64-littleaarch64


Disassembly of section load1:

ffffffe950c38710 <load1+0x238710>:
ffffffe950c38710: d503233f paciasp
ffffffe950c38714: a9bc7bfd stp x29, x30, [sp, #-64]!
ffffffe950c38718: d5384103 mrs x3, sp_el0
ffffffe950c3871c: 910003fd mov x29, sp
ffffffe950c38720: a9025bf5 stp x21, x22, [sp, #32]
ffffffe950c38724: aa0103f5 mov x21, x1
ffffffe950c38728: aa0203f6 mov x22, x2
ffffffe950c3872c: f9429461 ldr x1, [x3, #1320]
ffffffe950c38730: f9001fe1 str x1, [sp, #56]
objdump: error: /proc/kcore(load2) is too large (0x3de8000000 bytes)
objdump: Reading section load2 failed because: memory exhausted
root@rpi4:~#