qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: jan.kiszka@siemens.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 0/6] Misc PCI cleanups
Date: Mon, 8 Oct 2012 23:50:08 +0200	[thread overview]
Message-ID: <20121008215008.GA19208@redhat.com> (raw)
In-Reply-To: <1349730697.2759.211.camel@ul30vt.home>

On Mon, Oct 08, 2012 at 03:11:37PM -0600, Alex Williamson wrote:
> On Mon, 2012-10-08 at 23:40 +0200, Michael S. Tsirkin wrote:
> > On Mon, Oct 08, 2012 at 01:27:33PM -0600, Alex Williamson wrote:
> > > On Mon, 2012-10-08 at 22:15 +0200, Michael S. Tsirkin wrote:
> > > > On Mon, Oct 08, 2012 at 09:58:32AM -0600, Alex Williamson wrote:
> > > > > Michael, Jan,
> > > > > 
> > > > > Any comments on these?  I'd like to make the PCI changes before I update
> > > > > vfio-pci to make use of the new resampling irqfd in kvm.  We don't have
> > > > > anyone officially listed as maintainer of pci-assign since it's been
> > > > > moved to qemu.  I could include the pci-assign patches in my tree if you
> > > > > prefer.  Thanks,
> > > > > 
> > > > > Alex
> > > > 
> > > > Patches themselves look fine, but I'd like to
> > > > better understand why do we want the INTx fallback.
> > > > Isn't it easier to add intx routing support?
> > > 
> > > vfio-pci can work with or without intx routing support.  Its presence is
> > > just one requirement to enable kvm accelerated intx support.  Regardless
> > > of whether it's easy or hard to implement intx routing in a given
> > > chipset, I currently can't probe for it and make useful decisions about
> > > whether or not to enable kvm support without potentially hitting an
> > > assert.  It's arguable how important intx acceleration is for specific
> > > applications, so while I'd like all chipsets to implement it, I don't
> > > know that it should be a gating factor to chipset integration.  Thanks,
> > > 
> > > Alex
> > 
> > Yes but there's nothing kvm specific in the routing API,
> > and IIRC it actually works fine without kvm.
> 
> Correct, but intx routing isn't very useful without kvm.
> 
> > As I see it, if some chipset does not expose it, it's a bug, and the
> > reason for lack of support is because no one cares about supporting
> > device assignment there.
> 
> Should we not have a more robust response to bugs than to kill the VM?
> Especially when it's as trivial as using the non-accelerated intx mode
> (vfio-pci) or having device init fail (pci-assign).  Calling assert is
> lazy.

This API has nothing to do with acceleration that I can see.

> > So this API is not something devices should probe for.
> > How about just assuming it works?
> 
> If that's the case, why test for any capabilities?  Let's just assume
> everything is there and litter the code with asserts rather than
> robustly deal with errors. </sarcasm>
> 
> > Otherwise, you are adding code and API that will become dead code
> > when everyone supports the required API.
> 
> So q35 is going to be the last ever chipset?  It may be the next one to
> implement intx routing, but hopefully not the last.

Everyone should just implement same APIs.  This was exactly why I asked
Jan to change routing so everyone does the same thing, instead of this
bolted-on hack just for assignment.

I merged this anyway so we can stop maintaining two trees which is even
more painful.

> We're talking about this:
> 
>  hw/pci.c |    8 ++++++--
>  hw/pci.h |    1 +
>  2 files changed, 7 insertions(+), 2 deletions(-)
> 
> Is this somehow tipping us over the edge and creating an unmaintainable
> API?


One has to draw a line in the sand somewhere, and I think it's a good
idea to stop now before this metastazes all over the code.

> Does it somehow prevent a driver from being just as lazy and doing
> assert(intx.mode == PCI_INTX_NOROUTE)?

What does this return code mean? How can there be no route?

> The API is obviously not
> complete as is if I have to assume it's there, call into it and hope for
> the best.  Thanks,
> 
> Alex

Why can't all chipsets implement this? You are just working
around broken chipsets in your device, this is wrong.

> > > > > On Tue, 2012-10-02 at 13:21 -0600, Alex Williamson wrote:
> > > > > > A few cleanups that I'll also apply to vfio-pci.  First make intx
> > > > > > route checking non-fatal.  vfio-pci has a fallback INTx mechanism
> > > > > > that doesn't rely on this, so we can already run on q35, but not if
> > > > > > we can't even probe for intx routing w/o blowing up.  Next, both
> > > > > > vfio-pci and pci-assign test whether INTx routing has changed using
> > > > > > similar functions.  Make this common.  Finally, expose a way to
> > > > > > get the MSI message for an MSI vector.  Again, both pci-assign and
> > > > > > vfio-pci need to do this to program the vector for KVM injection.
> > > > > > Thanks,
> > > > > > 
> > > > > > Alex
> > > > > > 
> > > > > > ---
> > > > > > 
> > > > > > Alex Williamson (6):
> > > > > >       pci-assign: Use msi_get_message()
> > > > > >       msi: Add msi_get_message()
> > > > > >       pci-assign: Use pci_intx_route_changed()
> > > > > >       pci: Helper function for testing if an INTx route changed
> > > > > >       pci-assign: Add support for no-route
> > > > > >       pci: Add INTx no-route option
> > > > > > 
> > > > > > 
> > > > > >  hw/kvm/pci-assign.c |   14 ++++++++------
> > > > > >  hw/msi.c            |   45 +++++++++++++++++++++++++++++----------------
> > > > > >  hw/msi.h            |    1 +
> > > > > >  hw/pci.c            |   13 +++++++++++--
> > > > > >  hw/pci.h            |    2 ++
> > > > > >  5 files changed, 51 insertions(+), 24 deletions(-)
> > > > > 
> > > > > 
> > > 
> > > 
> 
> 

  reply	other threads:[~2012-10-08 21:48 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-02 19:21 [Qemu-devel] [PATCH 0/6] Misc PCI cleanups Alex Williamson
2012-10-02 19:21 ` [Qemu-devel] [PATCH 1/6] pci: Add INTx no-route option Alex Williamson
2012-10-02 19:21 ` [Qemu-devel] [PATCH 2/6] pci-assign: Add support for no-route Alex Williamson
2012-10-02 19:55   ` Anthony Liguori
2012-10-02 20:12     ` Alex Williamson
2012-10-03  9:52       ` Paolo Bonzini
2012-10-03 12:32         ` Anthony Liguori
2012-10-02 19:21 ` [Qemu-devel] [PATCH 3/6] pci: Helper function for testing if an INTx route changed Alex Williamson
2012-10-02 19:22 ` [Qemu-devel] [PATCH 4/6] pci-assign: Use pci_intx_route_changed() Alex Williamson
2012-10-02 19:22 ` [Qemu-devel] [PATCH 5/6] msi: Add msi_get_message() Alex Williamson
2012-10-02 19:22 ` [Qemu-devel] [PATCH 6/6] pci-assign: Use msi_get_message() Alex Williamson
2012-10-08 15:58 ` [Qemu-devel] [PATCH 0/6] Misc PCI cleanups Alex Williamson
2012-10-08 16:01   ` Jan Kiszka
2012-10-08 20:15   ` Michael S. Tsirkin
2012-10-08 19:27     ` Alex Williamson
2012-10-08 21:40       ` Michael S. Tsirkin
2012-10-08 21:11         ` Alex Williamson
2012-10-08 21:50           ` Michael S. Tsirkin [this message]
2012-10-08 22:09             ` Alex Williamson
2012-10-08 22:44               ` Michael S. Tsirkin
2012-10-08 23:54                 ` Alex Williamson
2012-10-11 14:11                   ` Michael S. Tsirkin
2012-10-09  7:09           ` Jan Kiszka
2012-10-10 19:31             ` Alex Williamson
2012-10-11 10:37               ` Michael S. Tsirkin
2012-10-11 13:38                 ` Alex Williamson
2012-10-11 13:49                   ` Michael S. Tsirkin
2012-10-11 14:10                     ` Alex Williamson

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=20121008215008.GA19208@redhat.com \
    --to=mst@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=qemu-devel@nongnu.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).