All of lore.kernel.org
 help / color / mirror / Atom feed
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 16:40:10 +0200	[thread overview]
Message-ID: <20150428163601-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <20150428153337.0ec1f5b6.cornelia.huck@de.ibm.com>

On Tue, Apr 28, 2015 at 03:33:37PM +0200, Cornelia Huck wrote:
> On Tue, 28 Apr 2015 14:47:11 +0200
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
> 
> > 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.
> 
> I don't like possibly breaking things with a seeing eye. And I know
> that some virtio-ccw setups will break.
> 
> > 
> > > > 
> > > > 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.
> 
> There's nothing about that that's per-guest. It is a choice per-device.
> In fact, the Linux guest driver falls back to classic interrupts if it
> fails to setup adapter interrupts for a device - and this might happen
> for large guests when the host adapter routing table is full.
> 
> > 
> > > > 
> > > > > > 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.
> 
> Eh, isn't that a contradiction? Failing a configuration means that the
> transport does indeed have a say?

I'm fine with general capability that lets transport check device
and fail init, for whatever reason.
E.g. can we teach plugged callback to fail?
I don't want to mess up core with knowledge about specific transport
bugs such as random limits on # of queues.

-- 
MST

  reply	other threads:[~2015-04-28 14:40 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
2015-04-28 13:33                         ` Cornelia Huck
2015-04-28 14:40                           ` Michael S. Tsirkin [this message]
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=20150428163601-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.