On Tue, Dec 20, 2022 at 04:12:05PM +0530, Naresh Kamboju wrote:
On Tue, 20 Dec 2022 at 16:04, Xuan Zhuo xuanzhuo@linux.alibaba.com wrote:
On Tue, 20 Dec 2022 14:51:54 +0530, Naresh Kamboju naresh.kamboju@linaro.org wrote:
The qemu-x86_64 and qemu-arm64 boot failed with Linux next-20221220 tag. It is always reproducible with gcc-11/ gcc-12 and clang tool chains.
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
<6>[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510] <5>[ 0.000000] Linux version 6.1.0-next-20221220 (tuxmake@tuxmake) (Debian clang version 16.0.0 (++20221218072110+9c1b82599dac-1~exp1~20221218072217.501), Debian LLD 16.0.0) #1 SMP PREEMPT @1671498176 <5>[ 0.000000] random: crng init done <6>[ 0.000000] Machine model: linux,dummy-virt .... <6>[ 3.571098] loop: module loaded <6>[ 3.573410] virtio_blk virtio0: 1/0/0 default/read/poll queues <5>[ 3.578816] virtio_blk virtio0: [vda] 2816420 512-byte logical blocks (1.44 GB/1.34 GiB) <4>[ 3.581234] ------------[ cut here ]------------ <2>[ 3.581595] kernel BUG at drivers/virtio/virtio.c:122! <0>[ 3.582906] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP <4>[ 3.583672] Modules linked in: <4>[ 3.584905] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.1.0-next-20221220 #1 <4>[ 3.585801] Hardware name: linux,dummy-virt (DT) <4>[ 3.586591] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) <4>[ 3.587349] pc : virtio_check_driver_offered_feature+0x60/0x6c <4>[ 3.588613] lr : virtblk_probe+0x7cc/0x8f0 <4>[ 3.588915] sp : ffff80000802b840 <4>[ 3.589314] x29: ffff80000802b850 x28: 0000000000000000 x27: 0000000000000001 <4>[ 3.590509] x26: 0000000000000001 x25: 0000000000000200 x24: ffff0000c1699b00 <4>[ 3.590832] x23: 00000000000000fe x22: ffff0000c0313c30 x21: ffff0000c0313c00 <4>[ 3.591568] x20: ffff0000c02f4080 x19: 0000000000000000 x18: ffffffffffffffff <4>[ 3.592056] x17: 00000000ffffffea x16: 00000000fffffffe x15: 0000000000000004 <4>[ 3.592632] x14: 0000000000000fff x13: ffff800008028000 x12: ffff80000802c000 <4>[ 3.593157] x11: 000000000000000f x10: 000000000000000f x9 : ffffae66eee314d8 <4>[ 3.594048] x8 : 0000000000000000 x7 : 3631383837352e33 x6 : 202020205b3e353c <4>[ 3.594429] x5 : 0000000000000001 x4 : 0000000000000000 x3 : ffff80000802b780 <4>[ 3.594956] x2 : ffff80000802b6f8 x1 : 0000000000000011 x0 : ffff0000c02f4080 <4>[ 3.595811] Call trace: <4>[ 3.596120] virtio_check_driver_offered_feature+0x60/0x6c <4>[ 3.596632] virtio_dev_probe+0x274/0x320 <4>[ 3.597064] really_probe+0x178/0x418 <4>[ 3.597547] __driver_probe_device+0x120/0x188 <4>[ 3.597820] driver_probe_device+0x48/0x22c <4>[ 3.598189] __driver_attach+0xf8/0x250 <4>[ 3.598656] bus_for_each_dev+0x8c/0xd8 <4>[ 3.599151] driver_attach+0x30/0x3c <4>[ 3.599321] bus_add_driver+0x11c/0x22c <4>[ 3.599684] driver_register+0x84/0x120 <4>[ 3.600175] register_virtio_driver+0x38/0x48 <4>[ 3.600575] virtio_blk_init+0x6c/0xb4 <4>[ 3.600759] do_one_initcall+0xe0/0x2f8 <4>[ 3.601197] do_initcall_level+0xa8/0x150 <4>[ 3.601703] do_initcalls+0x60/0xa0 <4>[ 3.601892] do_basic_setup+0x28/0x34 <4>[ 3.602229] kernel_init_freeable+0x100/0x178 <4>[ 3.602706] kernel_init+0x2c/0x1b4 <4>[ 3.603162] ret_from_fork+0x10/0x20 <0>[ 3.604398] Code: 540000a0 91001129 f1000508 54ffff61 (d4210000) <4>[ 3.606108] ---[ end trace 0000000000000000 ]--- <6>[ 3.606714] note: swapper/0[1] exited with preempt_count 1 <0>[ 3.608155] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b <2>[ 3.609173] SMP: stopping secondary CPUs <0>[ 3.610506] Kernel Offset: 0x2e66e4800000 from 0xffff800008000000 <0>[ 3.610970] PHYS_OFFSET: 0x40000000 <0>[ 3.611428] CPU features: 0x00000,003a612f,cd22773f <0>[ 3.612277] Memory Limit: none <0>[ 3.613192] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
Ref Links, https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20221220/tes... https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20221220/tes... https://storage.tuxsuite.com/public/linaro/lkft/builds/2J9l3qxSBmPWVa1S2uWn0...
I think there is a bug, VIRTIO_BLK_F_ZONED depends the CONFIG_BLK_DEV_ZONE, but checking its code in virtblk_probe does not depend on this config.
I see this in my config, # CONFIG_BLK_DEV_ZONED is not set
This option in your config file is indeed not opened.
static int virtblk_probe(struct virtio_device *vdev){ ..... virtblk_update_capacity(vblk, false); virtio_device_ready(vdev);
if (virtio_has_feature(vdev, VIRTIO_BLK_F_ZONED)) { err = virtblk_probe_zoned_device(vdev, vblk, q); if (err) goto out_cleanup_disk; } dev_info(&vdev->dev, "blk config size: %zu\n", sizeof(struct virtio_blk_config));
....
static unsigned int features[] = { VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX, VIRTIO_BLK_F_GEOMETRY, VIRTIO_BLK_F_RO, VIRTIO_BLK_F_BLK_SIZE, VIRTIO_BLK_F_FLUSH, VIRTIO_BLK_F_TOPOLOGY, VIRTIO_BLK_F_CONFIG_WCE, VIRTIO_BLK_F_MQ, VIRTIO_BLK_F_DISCARD, VIRTIO_BLK_F_WRITE_ZEROES, VIRTIO_BLK_F_SECURE_ERASE, VIRTIO_BLK_F_LIFETIME, #ifdef CONFIG_BLK_DEV_ZONED VIRTIO_BLK_F_ZONED, #endif /* CONFIG_BLK_DEV_ZONED */ }
I have attached config files to this email.
Thanks.
-- Linaro LKFT https://lkft.linaro.org
Thanks a lot!
On Tue, 20 Dec 2022 at 11:44, Michael S. Tsirkin mst@redhat.com wrote:
On Tue, Dec 20, 2022 at 04:12:05PM +0530, Naresh Kamboju wrote:
On Tue, 20 Dec 2022 at 16:04, Xuan Zhuo xuanzhuo@linux.alibaba.com wrote:
On Tue, 20 Dec 2022 14:51:54 +0530, Naresh Kamboju naresh.kamboju@linaro.org wrote:
The qemu-x86_64 and qemu-arm64 boot failed with Linux next-20221220 tag. It is always reproducible with gcc-11/ gcc-12 and clang tool chains.
Reported-by: Linux Kernel Functional Testing lkft@linaro.org
<6>[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510] <5>[ 0.000000] Linux version 6.1.0-next-20221220 (tuxmake@tuxmake) (Debian clang version 16.0.0 (++20221218072110+9c1b82599dac-1~exp1~20221218072217.501), Debian LLD 16.0.0) #1 SMP PREEMPT @1671498176 <5>[ 0.000000] random: crng init done <6>[ 0.000000] Machine model: linux,dummy-virt .... <6>[ 3.571098] loop: module loaded <6>[ 3.573410] virtio_blk virtio0: 1/0/0 default/read/poll queues <5>[ 3.578816] virtio_blk virtio0: [vda] 2816420 512-byte logical blocks (1.44 GB/1.34 GiB) <4>[ 3.581234] ------------[ cut here ]------------ <2>[ 3.581595] kernel BUG at drivers/virtio/virtio.c:122! <0>[ 3.582906] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP <4>[ 3.583672] Modules linked in: <4>[ 3.584905] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 6.1.0-next-20221220 #1 <4>[ 3.585801] Hardware name: linux,dummy-virt (DT) <4>[ 3.586591] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) <4>[ 3.587349] pc : virtio_check_driver_offered_feature+0x60/0x6c <4>[ 3.588613] lr : virtblk_probe+0x7cc/0x8f0
I bisected this problem down to this patch 0562d7bf1604 ("virtio-blk: add support for zoned block devices") see the full bisection log [1].
I built just a plain defconfig for an arm64 kernel. I used tuxmake and tuxrun to do the bisection a commanline like this: $ git bisect start next-20221220 next/stable \ && git bisect run tuxmake --runtime podman \ --target-arch arm64 --toolchain gcc-12 \ --kconfig defconfig kernel @tuxrun-arm64
Pre-req: install tuxmake [2], tuxrun [3] and podman and store a tuxmake result-hook in your $HOME/.config/tuxmake dir $ mkdir -p ~/.config/tuxmake/ $ curl -sSL http://ix.io/4j6v -o ~/.config/tuxmake/tuxrun-arm64
I reverted the patch and the kernel booted fine.
Cheers, Anders [1] http://ix.io/4j6B [2] https://tuxmake.org/ [3] https://tuxrun.org/ [4] http://ix.io/4j6v