linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Andy Grover <agrover@redhat.com>
Cc: linux-kernel@vger.kernel.org,
	Rusty Russell <rusty@rustcorp.com.au>,
	virtualization@lists.linux-foundation.org,
	linux-scsi@vger.kernel.org, linux-s390@vger.kernel.org,
	v9fs-developer@lists.sourceforge.net, netdev@vger.kernel.org,
	kvm@vger.kernel.org, Amit Shah <amit.shah@redhat.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"David S. Miller" <davem@davemloft.net>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v4 10/25] virtio: add API to enable VQs early
Date: Tue, 11 Nov 2014 08:15:29 +0200	[thread overview]
Message-ID: <20141111061529.GA17897@redhat.com> (raw)
In-Reply-To: <54615C15.6060400@redhat.com>

On Mon, Nov 10, 2014 at 04:45:09PM -0800, Andy Grover wrote:
> On 10/13/2014 12:50 AM, Michael S. Tsirkin wrote:
> >virtio spec 0.9.X requires DRIVER_OK to be set before
> >VQs are used, but some drivers use VQs before probe
> >function returns.
> >Since DRIVER_OK is set after probe, this violates the spec.
> >
> >Even though under virtio 1.0 transitional devices support this
> >behaviour, we want to make it possible for those early callers to become
> >spec compliant and eventually support non-transitional devices.
> >
> >Add API for drivers to call before using VQs.
> >
> >Sets DRIVER_OK internally.
> >
> >Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> >Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> >---
> >  include/linux/virtio_config.h | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> >
> >diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h
> >index e8f8f71..e36403b 100644
> >--- a/include/linux/virtio_config.h
> >+++ b/include/linux/virtio_config.h
> >@@ -109,6 +109,23 @@ struct virtqueue *virtio_find_single_vq(struct virtio_device *vdev,
> >  	return vq;
> >  }
> >
> >+/**
> >+ * virtio_device_ready - enable vq use in probe function
> >+ * @vdev: the device
> >+ *
> >+ * Driver must call this to use vqs in the probe function.
> >+ *
> >+ * Note: vqs are enabled automatically after probe returns.
> >+ */
> >+static inline
> >+void virtio_device_ready(struct virtio_device *dev)
> >+{
> >+	unsigned status = dev->config->get_status(dev);
> >+
> >+	BUG_ON(status & VIRTIO_CONFIG_S_DRIVER_OK);
> >+	dev->config->set_status(dev, status | VIRTIO_CONFIG_S_DRIVER_OK);
> >+}
> 
> Getting a BUG when booting via KVM, host Fedora 20, guest Fedora 20.
> 
> my config is at:
> 
> https://fedorapeople.org/~grover/config-20141110
> 

The fix is here:
http://article.gmane.org/gmane.linux.kernel.virtualization/23324/raw

I'm surprised it's not merged yet.

Rusty, could you pick it up please?


> 
> [    0.828494] ------------[ cut here ]------------
> [    0.829039] kernel BUG at
> /home/agrover/git/kernel/include/linux/virtio_config.h:125!
> [    0.831266] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
> [    0.831266] Modules linked in:
> [    0.831266] CPU: 1 PID: 30 Comm: kworker/1:1 Not tainted 3.18.0-rc4 #120
> [    0.831266] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
> [    0.831266] Workqueue: events control_work_handler
> [    0.831266] task: ffff88003cd98000 ti: ffff88003cd94000 task.ti:
> ffff88003cd94000
> [    0.831266] RIP: 0010:[<ffffffff81445004>]  [<ffffffff81445004>]
> add_port+0x264/0x410
> [    0.831266] RSP: 0000:ffff88003cd97c78  EFLAGS: 00010202
> [    0.831266] RAX: 0000000000000007 RBX: ffff88003c58c400 RCX:
> 0000000000000001
> [    0.831266] RDX: 000000000000c132 RSI: ffffffff81a955e9 RDI:
> 000000000001c132
> [    0.831266] RBP: ffff88003cd97cc8 R08: 0000000000000000 R09:
> 0000000000000000
> [    0.831266] R10: 0000000000000001 R11: 0000000000000000 R12:
> ffff88003c58be00
> [    0.831266] R13: 0000000000000001 R14: ffff8800395ca800 R15:
> ffff88003c58c420
> [    0.831266] FS:  0000000000000000(0000) GS:ffff88003fa00000(0000)
> knlGS:0000000000000000
> [    0.831266] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> [    0.831266] CR2: 0000000000000000 CR3: 0000000001c11000 CR4:
> 00000000000006e0
> [    0.831266] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
> 0000000000000000
> [    0.831266] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
> 0000000000000400
> [    0.831266] Stack:
> [    0.831266]  ffff880000000001 0000000000000292 0000000000000000
> 0000000000000001
> [    0.831266]  ffff88003cd97cc8 ffff88003dfa8a20 ffff88003c58beb8
> ffff88003c58be10
> [    0.831266]  ffff8800395a2000 0000000000000000 ffff88003cd97d38
> ffffffff8144531a
> [    0.831266] Call Trace:
> [    0.831266]  [<ffffffff8144531a>] control_work_handler+0x16a/0x3c0
> [    0.831266]  [<ffffffff8108b0c8>] ? process_one_work+0x208/0x500
> [    0.831266]  [<ffffffff8108b16c>] process_one_work+0x2ac/0x500
> [    0.831266]  [<ffffffff8108b0c8>] ? process_one_work+0x208/0x500
> [    0.831266]  [<ffffffff8108b68e>] worker_thread+0x2ce/0x4e0
> [    0.831266]  [<ffffffff8108b3c0>] ? process_one_work+0x500/0x500
> [    0.831266]  [<ffffffff81090b28>] kthread+0xf8/0x100
> [    0.831266]  [<ffffffff810bad7d>] ? trace_hardirqs_on+0xd/0x10
> [    0.831266]  [<ffffffff81090a30>] ? kthread_stop+0x140/0x140
> [    0.831266]  [<ffffffff816ea92c>] ret_from_fork+0x7c/0xb0
> [    0.831266]  [<ffffffff81090a30>] ? kthread_stop+0x140/0x140
> [    0.831266] Code: c7 c2 48 31 01 83 48 c7 c6 e9 55 a9 81 e8 55 b4 c6 ff
> 4d 8b b4 24 58 01 00 00 49 8b 86 e8 04 00 00 4c 89 f7 ff 50 10 a8 04 74 0c
> <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 49 8b 96 e8 04 00 00 83 c8
> [    0.831266] RIP  [<ffffffff81445004>] add_port+0x264/0x410
> [    0.831266]  RSP <ffff88003cd97c78>
> [    0.878202] ---[ end trace f98fbb172cc7bbf4 ]---
> 
> Thanks -- Andy

  reply	other threads:[~2014-11-11  6:15 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-13  7:48 [PATCH v4 00/25] virtio: fix spec compliance issues Michael S. Tsirkin
2014-10-13  7:48 ` [PATCH v4 01/25] virtio_pci: fix virtio spec compliance on restore Michael S. Tsirkin
2014-10-13  7:48 ` [PATCH v4 02/25] virtio: unify config_changed handling Michael S. Tsirkin
2014-10-13  7:48 ` [PATCH v4 03/25] virtio-pci: move freeze/restore to virtio core Michael S. Tsirkin
2014-10-15  7:05   ` Paul Bolle
2014-10-13  7:50 ` [PATCH v4 04/25] virtio: defer config changed notifications Michael S. Tsirkin
2014-10-14  0:31   ` Rusty Russell
2014-10-14  8:59     ` Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 05/25] virtio_blk: drop config_enable Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 06/25] virtio-blk: drop config_mutex Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 07/25] virtio_net: drop config_enable Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 08/25] virtio-net: drop config_mutex Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 09/25] virtio_net: minor cleanup Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 10/25] virtio: add API to enable VQs early Michael S. Tsirkin
2014-11-11  0:45   ` Andy Grover
2014-11-11  6:15     ` Michael S. Tsirkin [this message]
2014-10-13  7:50 ` [PATCH v4 11/25] virtio_net: " Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 12/25] virtio_blk: " Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 13/25] virtio_console: " Michael S. Tsirkin
2014-10-20 12:07   ` Thomas Graf
2014-10-20 12:42     ` Cornelia Huck
2014-10-20 13:10       ` Thomas Graf
2014-10-20 13:35       ` Michael S. Tsirkin
2014-10-20 13:58         ` [PATCH] virtio_console: move early VQ enablement Cornelia Huck
2014-10-20 14:05           ` Michael S. Tsirkin
2014-10-20 17:09             ` Josh Boyer
2014-11-11  2:24               ` Dave Airlie
2014-10-20 14:04         ` [PATCH v4 13/25] virtio_console: enable VQs early Michael S. Tsirkin
2014-10-20 13:10     ` Michael S. Tsirkin
2014-10-20 13:12       ` Thomas Graf
2014-10-20 13:14       ` Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 14/25] 9p/trans_virtio: " Michael S. Tsirkin
2014-10-13  7:50 ` [PATCH v4 15/25] virtio_net: fix use after free on allocation failure Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 16/25] virtio_scsi: move kick event out from virtscsi_init Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 17/25] virtio_blk: enable VQs early on restore Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 18/25] virtio_scsi: " Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 19/25] virtio_console: " Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 20/25] virtio_net: " Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 21/25] virito_scsi: use freezable WQ for events Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 22/25] virtio_scsi: fix race on device removal Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 23/25] virtio_balloon: enable VQs early on restore Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 24/25] virtio_scsi: drop scan callback Michael S. Tsirkin
2014-10-13  7:51 ` [PATCH v4 25/25] virtio-rng: refactor probe error handling Michael S. Tsirkin

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=20141111061529.GA17897@redhat.com \
    --to=mst@redhat.com \
    --cc=agrover@redhat.com \
    --cc=amit.shah@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=davem@davemloft.net \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rusty@rustcorp.com.au \
    --cc=v9fs-developer@lists.sourceforge.net \
    --cc=virtualization@lists.linux-foundation.org \
    /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;
as well as URLs for NNTP newsgroup(s).