From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Jason Wang <jasowang@redhat.com>,
qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH V7 08/16] virtio: introduce bus specific queue limit
Date: Tue, 28 Apr 2015 14:47:11 +0200 [thread overview]
Message-ID: <20150428143914-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <20150428133951.78b9f7e3.cornelia.huck@de.ibm.com>
On Tue, Apr 28, 2015 at 01:39:51PM +0200, Cornelia Huck wrote:
> On Tue, 28 Apr 2015 12:55:40 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Tue, Apr 28, 2015 at 12:40:07PM +0200, Cornelia Huck wrote:
> > > On Tue, 28 Apr 2015 10:16:04 +0200
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >
> > > > On Tue, Apr 28, 2015 at 10:04:15AM +0200, Cornelia Huck wrote:
> > > > > On Tue, 28 Apr 2015 09:14:07 +0200
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >
> > > > > > On Tue, Apr 28, 2015 at 02:13:20PM +0800, Jason Wang wrote:
> > > > > > >
> > > > > > >
> > > > > > > On Tue, Apr 28, 2015 at 1:13 PM, Michael S. Tsirkin <mst@redhat.com> wrote:
> > > > > > > >On Tue, Apr 28, 2015 at 11:14:04AM +0800, Jason Wang wrote:
> > > > > > > >> On Mon, Apr 27, 2015 at 7:05 PM, Michael S. Tsirkin
> > > > > > > >><mst@redhat.com> wrote:
> > > > > > > >> >On Thu, Apr 23, 2015 at 02:21:41PM +0800, Jason Wang wrote:
> > > > > > > >> >> This patch introduces a bus specific queue limitation. It will be
> > > > > > > >> >> useful for increasing the limit for one of the bus without
> > > > > > > >>disturbing
> > > > > > > >> >> other buses.
> > > > > > > >> >> Cc: Michael S. Tsirkin <mst@redhat.com>
> > > > > > > >> >> Cc: Alexander Graf <agraf@suse.de>
> > > > > > > >> >> Cc: Richard Henderson <rth@twiddle.net>
> > > > > > > >> >> Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
> > > > > > > >> >> Cc: Christian Borntraeger <borntraeger@de.ibm.com>
> > > > > > > >> >> Cc: Paolo Bonzini <pbonzini@redhat.com>
> > > > > > > >> >> Signed-off-by: Jason Wang <jasowang@redhat.com>
> > > > > > > >> >> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> > > > > > > >> >
> > > > > > > >> >Is this still needed if you drop the attempt to
> > > > > > > >> >keep the limit around for old machine types?
> > > > > > > >> If we agree to drop, we probably need transport specific macro.
> > > > > > > >
> > > > > > > >You mean just rename VIRTIO_PCI_QUEUE_MAX to VIRTIO_QUEUE_MAX?
> > > > > > > >Fine, why not.
> > > > > > >
> > > > > > > I mean keeping VIRTIO_PCI_QUEUE_MAX for pci only and just increase pci
> > > > > > > limit. And introduce e.g VIRTIO_PCI_QUEUE_CCW for ccw and keep it as 64.
> > > > > > > Since to my understanding, it's not safe to increase the limit for all other
> > > > > > > transports which was pointed out by Cornelia in V1:
> > > > > > > http://permalink.gmane.org/gmane.comp.emulators.qemu/318245.
> > > > > >
> > > > > > I think all you need is add a check to CCW_CMD_SET_IND:
> > > > > > limit to 64 for legacy interrupts only.
> > > > >
> > > > > It isn't that easy.
> > > > >
> > > > > What is easy is to add a check to the guest driver that fails setup for
> > > > > devices with more than 64 queues not using adapter interrupts.
> > > > >
> > > > > On the host side, we're lacking information when interpreting
> > > > > CCW_CMD_SET_IND (the command does not contain a queue count, and the
> > > > > actual number of virtqueues is not readily available.)
> > > >
> > > > Why isn't it available? All devices call virtio_add_queue
> > > > as appropriate. Just fail legacy adaptors.
> > >
> > > Because we don't know what the guest is going to use? It is free to
> > > use per-subchannel indicators, even if it is operating in virtio-1 mode.
> > > >
> > > > > We also can't
> > > > > fence off when setting up the vqs, as this happens before we know which
> > > > > kind of indicators the guest wants to use.
> > > > >
> > > > > More importantly, we haven't even speced what we want to do in this
> > > > > case. Do we want to reject SET_IND for devices with more than 64
> > > > > queues? (Probably yes.)
> > > > >
> > > > > All this involves more work, and I'd prefer to do Jason's changes
> > > > > instead as this gives us some more time to figure this out properly.
> > > > >
> > > > > And we haven't even considered s390-virtio yet, which I really want to
> > > > > touch as little as possible :)
> > > >
> > > > Well this patch does touch it anyway :)
> > >
> > > But only small, self-evident changes.
> > >
> >
> > Sorry, I don't see what you are trying to say.
> > There's no chance legacy interrupts work with > 64 queues.
> > Guests should have validated the # of queues, and not
> > attempted to use >64 queues. Looks like there's no
> > such validation in guest, right?
>
> I have no idea whether > 64 queues would work with s390-virtio - it
> might well work, but I'm not willing to extend any effort to verifying
> that.
Well this doesn't mean we won't make any changes, ever,
just so we can reduce verification costs.
Let's make the change everywhere, if we see issues
we'll backtrack.
> >
> > Solution - don't specify this configuration with legacy guests.
> >
> > Modern guests work so there's value in supporting such
> > configuration in QEMU, I don't see why we must deny it in QEMU.
>
> What is "legacy guest" in your context? A guest running with the legacy
> transport or a guest using ccw but not virtio-1? A ccw guest using
> adapter interrupts but not virtio-1 should be fine.
A guest not using adapter interrupts.
> >
> > > > For s390 just check and fail at init if you like.
> > >
> > > What about devices that may change their number of queues? I'd really
> > > prefer large queue numbers to be fenced off in the the individual
> > > devices, and for that they need to be able to grab a transport-specific
> > > queue limit.
> >
> > This is why I don't want bus specific limits in core,
> > it just makes it too easy to sweep dirt under the carpet.
> > s390 is legacy - fine, but don't perpetuate the issue
> > in devices.
>
> What is "swept under the carpet" here? A device can have min(max queues
> from transport, max queues from device type) queues. I think it's
> easier to refuse instantiating with too many queues per device type (as
> most will be fine with 64 queues), so I don't want that code in the
> transport (beyond making the limit available).
>
> For s390 I'd like in the end:
> - s390-virtio: legacy - keep it working as best-can-do, so I'd prefer
> to keep it at 64 queues, even if more might work
> - virtio-ccw, devices in legacy or virtio-1 mode: works with adapter
> interrupts, so let's fence off setting per-subchannel indicators if a
> device has more than 64 queues (needs work and a well thought-out
> rejection mechanism)
>
> That's _in the end_: I'd like to keep ccw at 64 queues _for now_ so
> that we don't have a rushed interface change - and at the same time, I
> don't want to hold off pci. Makes sense?
If you want to fail configurations with > 64 queues in ccw or s390,
that's fine by me. I don't want work arounds for these bugs in virtio
core though. So transports should not have a say in how many queues can
be supported, but they can fail configurations they can't support if
they want to.
--
MST
next prev parent reply other threads:[~2015-04-28 12:47 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-23 6:21 [Qemu-devel] [PATCH V7 00/16] Support more virtio queues Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 01/16] virtio-net: fix the upper bound when trying to delete queues Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 02/16] pc: add 2.4 machine types Jason Wang
2015-04-27 11:03 ` Michael S. Tsirkin
2015-04-28 3:12 ` Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 03/16] spapr: add machine type specific instance init function Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 04/16] ppc: spapr: add 2.4 machine type Jason Wang
2015-04-27 11:03 ` Michael S. Tsirkin
2015-04-27 13:14 ` Alexander Graf
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 05/16] monitor: replace the magic number 255 with MAX_QUEUE_NUM Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 06/16] monitor: check return value of qemu_find_net_clients_except() Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 07/16] virtio-ccw: using VIRTIO_NO_VECTOR instead of 0 for invalid virtqueue Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 08/16] virtio: introduce bus specific queue limit Jason Wang
2015-04-27 11:05 ` Michael S. Tsirkin
2015-04-28 3:14 ` Jason Wang
2015-04-28 5:13 ` Michael S. Tsirkin
2015-04-28 6:13 ` Jason Wang
2015-04-28 7:14 ` Michael S. Tsirkin
2015-04-28 8:04 ` Cornelia Huck
2015-04-28 8:16 ` Michael S. Tsirkin
2015-04-28 10:40 ` Cornelia Huck
2015-04-28 10:55 ` Michael S. Tsirkin
2015-04-28 11:39 ` Cornelia Huck
2015-04-28 12:47 ` Michael S. Tsirkin [this message]
2015-04-28 13:33 ` Cornelia Huck
2015-04-28 14:40 ` Michael S. Tsirkin
2015-05-13 7:51 ` Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 09/16] virtio-ccw: introduce ccw " Jason Wang
2015-04-23 10:59 ` Cornelia Huck
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 10/16] virtio-s390: switch to bus " Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 11/16] virtio-mmio: " Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 12/16] virtio-pci: switch to use " Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 13/16] virtio: introduce vector to virtqueues mapping Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 14/16] virtio-pci: speedup MSI-X masking and unmasking Jason Wang
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 15/16] virtio-pci: increase the maximum number of virtqueues to 513 Jason Wang
2015-04-23 11:24 ` Cornelia Huck
2015-04-28 3:05 ` Jason Wang
2015-04-27 11:02 ` Michael S. Tsirkin
2015-04-28 3:12 ` Jason Wang
2015-04-28 7:17 ` Michael S. Tsirkin
2015-05-13 7:47 ` Jason Wang
2015-05-13 8:16 ` Michael S. Tsirkin
2015-05-14 18:54 ` Eduardo Habkost
2015-04-23 6:21 ` [Qemu-devel] [PATCH V7 16/16] pci: remove hard-coded bar size in msix_init_exclusive_bar() Jason Wang
2015-04-23 11:27 ` [Qemu-devel] [PATCH V7 00/16] Support more virtio queues Cornelia Huck
2015-04-28 3:14 ` Jason Wang
2015-04-27 19:06 ` 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=20150428143914-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jasowang@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).