[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CA+G9fYtaKquTs-pz2Lc2bgDiQw5d2nFKK1kGwFR2WWDBKNbRkQ@mail.gmail.com>
Date: Tue, 20 Dec 2022 19:17:09 +0530
From: Naresh Kamboju <naresh.kamboju@...aro.org>
To: "Michael S. Tsirkin" <mst@...hat.com>
Cc: Marek Szyprowski <m.szyprowski@...sung.com>,
Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
Jason Wang <jasowang@...hat.com>,
Shaoqin Huang <shaoqin.huang@...el.com>,
Angus Chen <angus.chen@...uarmicro.com>,
Alex Bennée <alex.bennee@...aro.org>,
Arnd Bergmann <arnd@...db.de>,
Anders Roxell <anders.roxell@...aro.org>,
open list <linux-kernel@...r.kernel.org>,
Linux-Next Mailing List <linux-next@...r.kernel.org>,
lkft-triage@...ts.linaro.org, regressions@...ts.linux.dev,
virtualization@...ts.linux-foundation.org, dmitry.fomichev@....com
Subject: Re: next: kernel BUG at drivers/virtio/virtio.c:122!
On Tue, 20 Dec 2022 at 18:56, Michael S. Tsirkin <mst@...hat.com> wrote:
>
> On Tue, Dec 20, 2022 at 02:17:45PM +0100, Marek Szyprowski wrote:
> > On 20.12.2022 11:54, Michael S. Tsirkin wrote:
> > > On Tue, Dec 20, 2022 at 06:27:59PM +0800, Xuan Zhuo wrote:
> > >> On Tue, 20 Dec 2022 14:51:54 +0530, Naresh Kamboju <naresh.kamboju@...aro.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@...aro.org>
> > >>>
> > >>> <6>[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x000f0510]
> > >>> <5>[ 0.000000] Linux version 6.1.0-next-20221220 (tuxmake@...make)
> > >>> (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
<Trim>
> > > Testing this fixup now:
Thanks for providing a quick fix.
> > > commit f9503d0fd839b59e0f48b00c20635437c41420ed
> > > Author: Michael S. Tsirkin <mst@...hat.com>
> > > Date: Tue Dec 20 05:53:41 2022 -0500
> > >
> > > fixup! virtio-blk: add support for zoned block devices
> >
> > I also confirm that this patch fixes the issue with broken virtio block
> > device observed on QEMU arm/arm64 'virt' machines and linux
> > next-20221220. Thanks for the fix!
> >
> > Tested-by: Marek Szyprowski <m.szyprowski@...sung.com>
Tested-by: Linux Kernel Functional Testing <lkft@...aro.org>
>
> Merged the fix already so I'm not sure I can add this tag.
> If I rebase before pull request I will, thanks!
[Sorry for delayed reply]
> > > diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> > > index ff49052e26f7..d8cdaeb51d1c 100644
> > > --- a/drivers/block/virtio_blk.c
> > > +++ b/drivers/block/virtio_blk.c
> > > @@ -775,6 +775,10 @@ static int virtblk_probe_zoned_device(struct virtio_device *vdev,
> > > return ret;
> > > }
> > >
> > > +static inline bool virtblk_has_zoned_feature(struct virtio_device *vdev)
> > > +{
> > > + return virtio_has_feature(vdev, VIRTIO_BLK_F_ZONED);
> > > +}
> > > #else
> > >
> > > /*
> > > @@ -790,6 +794,11 @@ static inline int virtblk_probe_zoned_device(struct virtio_device *vdev,
> > > {
> > > return -EOPNOTSUPP;
> > > }
> > > +
> > > +static inline bool virtblk_has_zoned_feature(struct virtio_device *vdev)
> > > +{
> > > + return false;
> > > +}
> > > #endif /* CONFIG_BLK_DEV_ZONED */
> > >
> > > /* return id (s/n) string for *disk to *id_str
> > > @@ -1576,11 +1585,11 @@ static int virtblk_probe(struct virtio_device *vdev)
> > > else
> > > q->limits.discard_granularity = blk_size;
> > > }
> > >
> > > virtblk_update_capacity(vblk, false);
> > > virtio_device_ready(vdev);
> > >
> > > - if (virtio_has_feature(vdev, VIRTIO_BLK_F_ZONED)) {
> > > + if (virtblk_has_zoned_feature(vdev)) {
> > > err = virtblk_probe_zoned_device(vdev, vblk, q);
> > > if (err)
> > > goto out_cleanup_disk;
> >
> > Best regards
> > --
> > Marek Szyprowski, PhD
> > Samsung R&D Institute Poland
--
Linaro LKFT
https://lkft.linaro.org
Powered by blists - more mailing lists