All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sheng Yang <sheng@linux.intel.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Avi Kivity <avi@redhat.com>, kvm@vger.kernel.org
Subject: Re: [PATCH 3/3] KVM: Enable MSI-X for KVM assigned device
Date: Fri, 13 Feb 2009 13:29:42 +0800	[thread overview]
Message-ID: <200902131329.42960.sheng@linux.intel.com> (raw)
In-Reply-To: <20090212204005.GB19749@amt.cnet>

On Friday 13 February 2009 04:40:05 Marcelo Tosatti wrote:
> On Wed, Feb 11, 2009 at 04:08:51PM +0800, Sheng Yang wrote:
> > This patch finally enable MSI-X.
> >
> > What we need for MSI-X:
> > 1. Intercept one page in MMIO region of device. So that we can get guest
> > desired MSI-X table and set up the real one. Now this have been done by
> > guest, and transfer to kernel using ioctl KVM_SET_MSIX_NR and
> > KVM_SET_MSIX_ENTRY.
> >
> > 2. Information for incoming interrupt. Now one device can have more than
> > one interrupt, and they are all handled by one workqueue structure. So we
> > need to identify them. The previous patch enable gsi_msg_pending_bitmap
> > get this done.
> >
> > 3. Mapping from host IRQ to guest gsi as well as guest gsi to real
> > MSI/MSI-X message address/data. We used same entry number for the host
> > and guest here, so that it's easy to find the correlated guest gsi.
> >
> > What we lack for now:
> > 1. The PCI spec said nothing can existed with MSI-X table in the same
> > page of MMIO region, except pending bits. The patch ignore pending bits
> > as the first step (so they are always 0 - no pending).
> >
> > 2. The PCI spec allowed to change MSI-X table dynamically. That means,
> > the OS can enable MSI-X, then mask one MSI-X entry, modify it, and unmask
> > it. The patch didn't support this, and Linux also don't work in this way.
>
> Have you thought about supporting this with the current ioctl interface?
> Point is that once ioctl's are in and userspace code uses it, you can't
> change. So:
>
> - If userspace calls kvm_vm_ioctl_set_msix_entry twice don't you leak
>   memory (that is a bug actually unless I'm mistaken)? So in the future
>   kvm_vm_ioctl_set_msix_entry will deallocate the currently allocated
>   guest/host entries and replace with userspace supplied entries?
>

The allocation only happen once, at the second time it would report error in 
current code. But allocate/deallocate is also acceptable for future.

> - interrupt context can read the table while kvm_vm_ioctl_set_msix_entry
>   is modifying it. So you either need to forbid more than one
>   kvm_vm_ioctl_set_msix_entry call in the lifetime of a guest (which
>   you can later allow when you support MSI table change), or handle
>   accesses from multiple contexes now. It seems forbidding is enough for
>   the moment from what you said.

Yeah.

But for the modifying the MSI-X table, the most critical problem is, current 
Linux didn't support it IIRC. So I have to disable MSI-X then enable it again 
with new table, and it would result in lost interrupt.

So seems the most reasonable method is to modify pci_enable_msix() and related 
function's action to support this...

-- 
regards
Yang, Sheng

>
> But in general looks good to me (not familiar with the internals of
> pci / msi).


  reply	other threads:[~2009-02-13  5:29 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-11  8:08 [PATCH 0/3 v2] MSI-X enabling Sheng Yang
2009-02-11  8:08 ` [PATCH 1/3] KVM: Ioctls for init MSI-X entry Sheng Yang
2009-02-11 12:44   ` Avi Kivity
2009-02-12  6:28     ` Sheng Yang
2009-02-12 10:07       ` Sheng Yang
2009-02-12 18:46         ` Marcelo Tosatti
2009-02-16  3:18           ` Sheng Yang
2009-02-16  5:49             ` Sheng Yang
2009-02-16 23:23               ` Marcelo Tosatti
2009-02-17  1:35                 ` Sheng Yang
2009-02-17  1:36                   ` Sheng Yang
2009-02-11  8:08 ` [PATCH 2/3] KVM: Add gsi_msg_pending_bitmap for MSI-X Sheng Yang
2009-02-12 19:51   ` Marcelo Tosatti
2009-02-13  3:37     ` Sheng Yang
2009-02-13 17:10       ` Marcelo Tosatti
2009-02-17 18:09       ` Avi Kivity
2009-02-18  1:33         ` Sheng Yang
2009-02-11  8:08 ` [PATCH 3/3] KVM: Enable MSI-X for KVM assigned device Sheng Yang
2009-02-11 12:48   ` Avi Kivity
2009-02-12  6:03     ` Sheng Yang
2009-02-12 20:40   ` Marcelo Tosatti
2009-02-13  5:29     ` Sheng Yang [this message]
2009-02-13 17:13       ` Marcelo Tosatti
2009-02-18  9:44 [PATCH 0/3 v3] MSI-X enabling Sheng Yang
2009-02-18  9:44 ` [PATCH 3/3] KVM: Enable MSI-X for KVM assigned device Sheng Yang
2009-02-18 10:45   ` Avi Kivity
2009-02-18 12:24     ` Sheng Yang
2009-02-18 12:36       ` Avi Kivity
2009-02-18 12:52         ` Sheng Yang
2009-02-25  9:22 [PATCH 0/3 v4][Resend] MSI-X enabling Sheng Yang
2009-02-25  9:22 ` [PATCH 3/3] KVM: Enable MSI-X for KVM assigned device Sheng Yang

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=200902131329.42960.sheng@linux.intel.com \
    --to=sheng@linux.intel.com \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    /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.