From: Ilya Leoshkevich <iii@linux.ibm.com>
To: Tony Ambardar <tony.ambardar@gmail.com>,
bpf@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: Problem testing with S390x under QEMU on x86_64
Date: Mon, 19 Aug 2024 11:15:40 +0200 [thread overview]
Message-ID: <180f4c27ebfb954d6b0fd2303c9fb7d5f21dae04.camel@linux.ibm.com> (raw)
In-Reply-To: <ZsEcsaa3juxxQBUf@kodidev-ubuntu>
On Sat, 2024-08-17 at 14:57 -0700, Tony Ambardar wrote:
> Hello all,
>
> I'd appreciate some help from the BPF and s390x communities...
>
> Some background: I'm finalizing a patch series enabling full cross-
> endian
> support for libbpf and selftests/bpf, and testing with mips64 so far.
> This
> arch makes switching the build byte-order trivial and has been very
> handy
> for A/B testing, but lacks some basic support (bpf2bpf call, kfuncs,
> etc.)
> making for poor selftests coverage.
>
> To finish testing I thought (optimistically?) to cross-build kernel
> and
> bpf selftests from x86_64 to s390x. That configuration might also be
> used
> later on bpf-ci for regression testing endian support and sharing the
> load
> of s390x builds.
>
> Locally, the build succeeds but when running it under QEMU I see
> kernel
> crashes trying to load any modules (e.g. prng or bpf_testmod).
>
>
> The build/test setup uses Ubuntu and gcc:
>
> kodidev:~/linux$ lsb_release -d
> Description: Ubuntu 22.04.4 LTS
>
> kodidev:~/linux$ s390x-linux-gnu-gcc --version
> s390x-linux-gnu-gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
> Copyright (C) 2021 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions. There
> is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
> PURPOSE.
>
>
> The code targets bpf/master, and I've researched QEMU/s390x usage
> details
> online but mainly follow https://docs.kernel.org/bpf/s390.html. For
> rootfs
> I take the same s390x image used by the kernel-patches bpf-ci.
>
>
> The kernel .config used is attached, and the QEMU command-line is
> below:
>
> qemu-system-s390x -cpu max,zpci=on -smp 2 -nographic -m 1G \
> -object rng-random,filename=/dev/urandom,id=rng0 \
> -device virtio-rng-ccw,rng=rng0 \
> -device virtio-net-ccw,netdev=eth0 \
> -netdev user,id=eth0,hostfwd=tcp::2224-:22 \
> -serial mon:stdio \
> -nodefaults \
> -kernel bzImage-s390x \
> -drive file=root-s390x-glibc.qcow2,if=virtio,format=qcow2 \
> -append "rootwait root=/dev/vda rw net.ifnames=0 biosdevname=0
> console=ttyS1"
>
>
> After successfully booting, the crashes are easily reproduced:
>
> root@(none):/# uname -a
> Linux (none) 6.10.0-12706-g853081e84612-dirty #111 SMP Sat Aug 17
> 00:49:23
> PDT 2024 s390x GNU/Linux
>
> # modprobe prng
> Unable to handle kernel pointer dereference in virtual kernel address
> space
> Failing address: 000003fee0011000 TEID: 000003fee0011803
> Fault in home space mode while using kernel ASCE.
> AS:0000000001dac007 R3:0000000000000024
> Oops: 003b ilc:1 [#1] SMP
> Modules linked in: prng(+)
> CPU: 1 UID: 0 PID: 81 Comm: modprobe Not tainted 6.10.0-12691-
> g52e8c345c9f0 #106
> Hardware name: QEMU 3906 QEMU (KVM/Linux)
> Krnl PSW : 0704d00180000000 000003fee0011ea0 (0x3fee0011ea0)
> R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0
> EA:3
> Krnl GPRS: 000002f2820db180 000003ffe1ca49a8 0000000000000000
> 000003ff6000f498
> 0000000000000000 0000000000000a22 0000000000000000
> 0000000000000000
> 000003ffe18111e0 000002f2806a48e8 000003ff6000f498
> 0000000000000000
> 000003ff8eaacfa8 000002aa0bbafa00 000003ff6000f4be
> 0000037fe0c33b58
> Krnl Code: Bad PSW.
> Call Trace:
> [<000003fee0011ea0>] 0x3fee0011ea0
> [<000003ffe0000b24>] do_one_initcall+0x64/0x258
> [<000003ffe01566e8>] do_init_module+0x78/0x258
> [<000003ffe0158160>] init_module_from_file+0x88/0xa8
> [<000003ffe01582e8>] idempotent_init_module+0x168/0x230
> [<000003ffe0158430>] __s390x_sys_finit_module+0x80/0xb8
> [<000003ffe0b6f58a>] __do_syscall+0x232/0x2b0
> [<000003ffe0b81b90>] system_call+0x70/0x98
> INFO: lockdep is turned off.
> Last Breaking-Event-Address:
> [<000003ff6000f4b8>]
> cpu_feature_match_S390_CPU_FEATURE_MSA_init+0x20/0xb68 [prng]
> Kernel panic - not syncing: Fatal exception: panic_on_oops
>
>
> and also:
>
> # ./test_progs -a xdpwall
> bpf_testmod: loading out-of-tree module taints kernel.
> Unable to handle kernel pointer dereference in virtual kernel address
> space
> Failing address: 000003fee0293000 TEID: 000003fee0293803
> Fault in home space mode while using kernel ASCE.
> AS:0000000001dac007 R3:0000000000000024
> Oops: 003b ilc:1 [#1] SMP
> Modules linked in: bpf_testmod(O+)
> CPU: 2 UID: 0 PID: 91 Comm: test_progs Tainted: G O
> 6.10.0-12691-g52e8c345c9f0 #106
> Tainted: [O]=OOT_MODULE
> Hardware name: QEMU 3906 QEMU (KVM/Linux)
> Krnl PSW : 0704d00180000000 000003fee0293998 (0x3fee0293998)
> R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:1 PM:0 RI:0
> EA:3
> Krnl GPRS: 000002f20374e760 0001677600016805 0000000000000000
> 000003ff6000e288
> 0000000000000000 000000000000007a 0000000000000000
> 0000000000000000
> 000003ffe18111e0 000002f204c6d2e8 000003ff6000ab90
> 0000000000000000
> 000003ffb73acfa8 0000000000000000 000003ff6000abce
> 0000037fe0803b50
> Krnl Code: Bad PSW.
> Call Trace:
> [<000003fee0293998>] 0x3fee0293998
> [<000003ffe0000b24>] do_one_initcall+0x64/0x258
> [<000003ffe01566e8>] do_init_module+0x78/0x258
> [<000003ffe0158160>] init_module_from_file+0x88/0xa8
> [<000003ffe01582e8>] idempotent_init_module+0x168/0x230
> [<000003ffe0158430>] __s390x_sys_finit_module+0x80/0xb8
> [<000003ffe0b6f58a>] __do_syscall+0x232/0x2b0
> [<000003ffe0b81b90>] system_call+0x70/0x98
> INFO: lockdep is turned off.
> Last Breaking-Event-Address:
> [<000003ff6000abc8>] bpf_testmod_init+0x38/0x160 [bpf_testmod]
> Kernel panic - not syncing: Fatal exception: panic_on_oops
>
>
> Has anyone encountered this before, or is able to reproduce?
> Could someone share a "known good" kernel .config working in the
> past?
>
> I'd be grateful for any advice or helpful suggestions.
>
> Thanks,
> Tony
Hi,
I assume you are using the distro qemu v6.2?
Could you please try v9.1.0-rc2?
It contains quite a few emulation bugfixes.
Best regards,
Ilya
next prev parent reply other threads:[~2024-08-19 9:15 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-17 21:57 Problem testing with S390x under QEMU on x86_64 Tony Ambardar
2024-08-19 9:15 ` Ilya Leoshkevich [this message]
2024-08-21 0:38 ` Tony Ambardar
2024-08-21 17:28 ` Ilya Leoshkevich
2024-08-23 13:29 ` Leon Hwang
2024-08-24 23:21 ` Tony Ambardar
2024-08-25 20:23 ` Yonghong Song
2024-08-26 10:50 ` Tony Ambardar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=180f4c27ebfb954d6b0fd2303c9fb7d5f21dae04.camel@linux.ibm.com \
--to=iii@linux.ibm.com \
--cc=bpf@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=tony.ambardar@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox