Re: [PATCH V9 20/20] riscv: compat: Add COMPAT Kbuild skeletal support

Heiko Stübner
2022-05-24T14:42:12Z

Am Dienstag, 24. Mai 2022, 01:00:39 CEST schrieb Guenter Roeck:
> On Tue, May 24, 2022 at 12:40:06AM +0200, Heiko Stübner wrote:
> > Hi Guenter,
> >
> > Am Montag, 23. Mai 2022, 18:18:47 CEST schrieb Guenter Roeck:
> > > On 5/23/22 08:18, Guo Ren wrote:
> > > > I tested Palmer's branch, it's okay:
> > > > 8810d7feee5a (HEAD -> for-next, palmer/for-next) riscv: Don't output a
> > > > bogus mmu-type on a no MMU kernel
> > > >
> > > > I also tested linux-next, it's okay:
> > > >
> > > > rv64_rootfs:
> > > > # uname -a
> > > > Linux buildroot 5.18.0-next-20220523 #7 SMP Mon May 23 11:15:17 EDT
> > > > 2022 riscv64 GNU/Linux
> > > > #
> > >
> > > That is is ok with one setup doesn't mean it is ok with
> > > all setups. It is not ok with my root file system (from
> > > https://github.com/groeck/linux-build-test/tree/master/rootfs/riscv64),
> > > with qemu v6.2.
> >
> > That is very true that it shouldn't fail on any existing (qemu-)platform,
> > but as I remember also testing Guo's series on both riscv32 and riscv64
> > qemu platforms in the past, I guess it would be really helpful to get more
> > information about the failing platform you're experiencing so that we can
> > find the source of the issue.
> >
> > As it looks like you both tested the same kernel source, I guess the only
> > differences could be in the qemu-version, kernel config and rootfs.
> > Is your rootfs something you can share or that can be rebuilt easily?
> >
> I provided a link to my root file system above. The link points to two
> root file systems, for initrd (cpio archive) and for ext2.
> I also mentioned above that I used qemu v6.2. And below I said
>
> > My root file system uses musl.
>
> I attached the buildroot configuration below. The buildroot version,
> if I remember correctly, was 2021.02.
>
> Kernel configuration is basically defconfig. However, I do see one
> detail that is possibly special in my configuration.
>
> # The latest kernel assumes SBI version 0.3, but that doesn't match qemu
> # at least up to version 6.2 and results in hangup/crashes during reboot
> # with sifive_u emulations.
> enable_config "${defconfig}" CONFIG_RISCV_SBI_V01
>
> Hope that helps,

Actually it doesn't seem rootfs-specific at all.

Merged was this v9, but the version I last tested was one of the earlier
ones, so it looks like something really broke meanwhile.

I tested both linux-next-20220524 and palmer's for-next on a very recent
qemu - master from april if I remember correctly together with a
Debian-based rootfs mounted as nfsroot inside qemu.

With CONFIG_COMPAT=y (aka using defconfig directly) I get:
[ 12.957612] VFS: Mounted root (nfs filesystem) on device 0:15.
[ 12.967260] devtmpfs: mounted
[ 13.101186] Freeing unused kernel image (initmem) memory: 2168K
[ 13.110914] Run /sbin/init as init process
[ 13.343810] Unable to handle kernel paging request at virtual address ff60007265776f78
[ 13.347271] Oops [#1]
[ 13.347749] Modules linked in:
[ 13.348689] CPU: 0 PID: 1 Comm: init Not tainted 5.18.0-next-20220524 #1
[ 13.349864] Hardware name: riscv-virtio,qemu (DT)
[ 13.350706] epc : special_mapping_fault+0x4c/0x8e
[ 13.351639] ra : __do_fault+0x28/0x11c
[ 13.352311] epc : ffffffff801210e6 ra : ffffffff8011712a sp : ff2000000060bd10
[ 13.353276] gp : ffffffff810df030 tp : ff600000012a8000 t0 : ffffffff80008acc
[ 13.354063] t1 : ffffffff80c001d8 t2 : ffffffff80c00258 s0 : ff2000000060bd20
[ 13.354886] s1 : ff2000000060bd68 a0 : ff600000013165f0 a1 : ff60000001ec2450
[ 13.355675] a2 : ff2000000060bd68 a3 : 0000000000000000 a4 : ff6000003f0337c8
[ 13.356822] a5 : ff60007265776f70 a6 : ff60000001ec2450 a7 : 0000000000000007
[ 13.357689] s2 : ff60000001ec2450 s3 : ff60000001ec2450 s4 : ff2000000060bd68
[ 13.358487] s5 : ff60000001ec2450 s6 : 0000000000000254 s7 : 000000000000000c
[ 13.359305] s8 : 000000000000000f s9 : 000000000000000d s10: ff60000001e4c080
[ 13.360102] s11: 000000000000000d t3 : 00ffffffbbeab000 t4 : 000000006ffffdff
[ 13.361557] t5 : 000000006ffffe35 t6 : 000000000000000a
[ 13.362229] status: 0000000200000120 badaddr: ff60007265776f78 cause: 000000000000000d
[ 13.363504] [<ffffffff8011712a>] __do_fault+0x28/0x11c
[ 13.364464] [<ffffffff8011b346>] __handle_mm_fault+0x71c/0x9ea
[ 13.365577] [<ffffffff8011b696>] handle_mm_fault+0x82/0x136
[ 13.366275] [<ffffffff80008bec>] do_page_fault+0x120/0x31c
[ 13.366906] [<ffffffff800032f4>] ret_from_exception+0x0/0xc
[ 13.368763] ---[ end trace 0000000000000000 ]---
[ 13.368763] ---[ end trace 0000000000000000 ]---
[ 13.369598] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 13.369933] SMP: stopping secondary CPUs

Turning CONFIG_COMPAT off, results in the system booting normally again.

Heiko

> ---
> BR2_riscv=y
> BR2_TOOLCHAIN_BUILDROOT_MUSL=y
> BR2_KERNEL_HEADERS_4_19=y
> BR2_BINUTILS_VERSION_2_32_X=y
> BR2_TARGET_RUN_TESTSCRIPT=y
> BR2_SHUTDOWN_COMMAND_POWEROFF=y
> BR2_SYSTEM_DHCP="eth0"
> BR2_PACKAGE_BUSYBOX_SHOW_OTHERS=y
> BR2_PACKAGE_STRACE=y
> BR2_PACKAGE_I2C_TOOLS=y
> BR2_PACKAGE_PCIUTILS=y
> BR2_PACKAGE_DTC=y
> BR2_PACKAGE_DTC_PROGRAMS=y
> BR2_PACKAGE_IPROUTE2=y
> BR2_TARGET_ROOTFS_BTRFS=y
> BR2_TARGET_ROOTFS_CPIO=y
> BR2_TARGET_ROOTFS_CPIO_GZIP=y
> BR2_TARGET_ROOTFS_EXT2=y
> BR2_TARGET_ROOTFS_EXT2_SIZE="16M"
> BR2_TARGET_ROOTFS_EXT2_GZIP=y
> BR2_TARGET_ROOTFS_ISO_GZIP=y
> BR2_TARGET_ROOTFS_SQUASHFS=y
> # BR2_TARGET_ROOTFS_TAR is not set
>
>