[PATCH vhost v8 6/6] virtio_ring: simplify the parameters of the funcs related to vring_create/new_virtqueue()

Xuan Zhuo xuanzhuo at linux.alibaba.com
Wed Apr 24 02:04:21 PDT 2024


On Wed, 24 Apr 2024 11:22:55 +0800, Xuan Zhuo <xuanzhuo at linux.alibaba.com> wrote:
> On Mon, 22 Apr 2024 22:26:23 +0800, kernel test robot <oliver.sang at intel.com> wrote:
> >
> >
> > Hello,
> >
> > kernel test robot noticed "BUG:kernel_reboot-without-warning_in_boot_stage" on:
> >
> > commit: fce2775b7bb39424d5ed656612a1d83fd265b670 ("[PATCH vhost v8 6/6] virtio_ring: simplify the parameters of the funcs related to vring_create/new_virtqueue()")
> > url: https://github.com/intel-lab-lkp/linux/commits/Xuan-Zhuo/virtio_balloon-remove-the-dependence-where-names-is-null/20240411-103822
> > base: git://git.kernel.org/cgit/linux/kernel/git/remoteproc/linux.git rproc-next
> > patch link: https://lore.kernel.org/all/20240411023528.10914-7-xuanzhuo@linux.alibaba.com/
> > patch subject: [PATCH vhost v8 6/6] virtio_ring: simplify the parameters of the funcs related to vring_create/new_virtqueue()
> >
> > in testcase: boot
> >
> > compiler: gcc-13
> > test machine: qemu-system-riscv64 -machine virt -device virtio-net-device,netdev=net0 -netdev user,id=net0 -smp 2 -m 16G
> >
> > (please refer to attached dmesg/kmsg for entire log/backtrace)
> >
> >
> > +-------------------------------------------------+------------+------------+
> > |                                                 | 3235a471eb | fce2775b7b |
> > +-------------------------------------------------+------------+------------+
> > | boot_successes                                  | 30         | 2          |
> > | boot_failures                                   | 0          | 28         |
> > | BUG:kernel_reboot-without-warning_in_boot_stage | 0          | 28         |
> > +-------------------------------------------------+------------+------------+
> >
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <oliver.sang at intel.com>
> > | Closes: https://lore.kernel.org/oe-lkp/202404221626.b938f1d6-oliver.sang@intel.com
> >
> >
> > Boot HART PMP Granularity : 4
> > Boot HART PMP Address Bits: 54
> > Boot HART MHPM Count      : 16
> > Boot HART MIDELEG         : 0x0000000000001666
> > Boot HART MEDELEG         : 0x0000000000f0b509
> > BUG: kernel reboot-without-warning in boot stage


I got it.

cfg_vq_val() will use the vq->vq.index. But that is assigned after that.

The fix is below.

I will post the new version.

Thanks.


diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index a939104d551f..e8ecc316e8df 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -2063,10 +2063,10 @@ static struct virtqueue *vring_create_virtqueue_packed(struct virtio_device *vde
        if (!vq)
                goto err_vq;

+       vq->vq.index = index;
        vq->vq.callback = cfg_vq_val(cfg, vq, callbacks);
        vq->vq.vdev = vdev;
        vq->vq.name = cfg_vq_val(cfg, vq, names);
-       vq->vq.index = index;
        vq->vq.reset = false;
        vq->we_own_ring = true;
        vq->notify = tp_cfg->notify;
@@ -2605,10 +2605,10 @@ static struct virtqueue *__vring_new_virtqueue(struct virtio_device *vdev,
                return NULL;

        vq->packed_ring = false;
+       vq->vq.index = index;
        vq->vq.callback = cfg_vq_val(cfg, vq, callbacks);
        vq->vq.vdev = vdev;
        vq->vq.name = cfg_vq_val(cfg, vq, names);
-       vq->vq.index = index;
        vq->vq.reset = false;
        vq->we_own_ring = false;






> > Linux version  #
> > Command line: ip=::::vm-meta-11::dhcp root=/dev/ram0 RESULT_ROOT=/result/boot/1/vm-snb-riscv64/debian-13-riscv64-20240310.cgz/riscv-defconfig/gcc-13/fce2775b7bb39424d5ed656612a1d83fd265b670/6 BOOT_IMAGE=/pkg/linux/riscv-defconfig/gcc-13/fce2775b7bb39424d5ed656612a1d83fd265b670/vmlinuz-6.9.0-rc1-00009-gfce2775b7bb3 branch=linux-review/Xuan-Zhuo/virtio_balloon-remove-the-dependence-where-names-is-null/20240411-103822 job=/lkp/jobs/scheduled/vm-meta-11/boot-1-debian-13-riscv64-20240310.cgz-fce2775b7bb3-20240417-37917-x2hsv1-16.yaml user=lkp ARCH=riscv kconfig=riscv-defconfig commit=fce2775b7bb39424d5ed656612a1d83fd265b670 nmi_watchdog=0 intremap=posted_msi vmalloc=256M initramfs_async=0 page_owner=on max_uptime=600 LKP_SERVER=internal-lkp-server selinux=0 debug apic=debug sysrq_always_enabled rcupdate.rcu_cpu_stall_timeout=100 net.ifnames=0 printk.devkmsg=on panic=-1 softlockup_panic=1 nmi_watchdog=panic oops=panic load_ramdisk=2 prompt_ramdisk=0 drbd.minor_count=8 systemd.log_level=e
>  rr ignore_loglevel console=tty0 earlyprintk=ttyS0,115200 console=ttyS0,115200 vga=normal rw rcuperf.shutdown=0 watchdog_thresh=240 audit=0
>
>
> cmd: ~/lkp-tests/bin/lkp qemu -k build_dir/arch/riscv/boot/Image  -m modules.cgz job-script
>
> Boot HART ID              : 1
> Boot HART Domain          : root
> Boot HART Priv Version    : v1.12
> Boot HART Base ISA        : rv64imafdch
> Boot HART ISA Extensions  : time,sstc
> Boot HART PMP Count       : 16
> Boot HART PMP Granularity : 4
> Boot HART PMP Address Bits: 54
> Boot HART MHPM Count      : 16
> Boot HART MIDELEG         : 0x0000000000001666
> Boot HART MEDELEG         : 0x0000000000f0b509
>
> I do not encounter this problem.
> Do I miss something?
>
> Thanks.
>
>
>
> >
> >
> >
> > The kernel config and materials to reproduce are available at:
> > https://download.01.org/0day-ci/archive/20240422/202404221626.b938f1d6-oliver.sang@intel.com
> >
> >
> >
> > --
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests/wiki
> >
>



More information about the linux-um mailing list