qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: Carsten Otte <cotte@de.ibm.com>,
	kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
	qemu-devel@nongnu.org, virtualization@lists.linux-foundation.org,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	avi@redhat.com
Subject: Re: [Qemu-devel] [PATCH] qemu: msi irq allocation api
Date: Thu, 21 May 2009 12:24:27 +0300	[thread overview]
Message-ID: <20090521092427.GA25309@redhat.com> (raw)
In-Reply-To: <f43fc5580905201344v23e15851u4a7517b9da879604@mail.gmail.com>

On Wed, May 20, 2009 at 11:44:57PM +0300, Blue Swirl wrote:
> On 5/20/09, Michael S. Tsirkin <mst@redhat.com> wrote:
> > On Wed, May 20, 2009 at 11:26:42PM +0300, Blue Swirl wrote:
> >  > On 5/20/09, Michael S. Tsirkin <mst@redhat.com> wrote:
> >  > > On Wed, May 20, 2009 at 11:02:24PM +0300, Michael S. Tsirkin wrote:
> >  > >  > On Wed, May 20, 2009 at 09:38:58PM +0300, Blue Swirl wrote:
> >  > >  > > On 5/20/09, Michael S. Tsirkin <mst@redhat.com> wrote:
> >  > >  > > > On Wed, May 20, 2009 at 08:44:31PM +0300, Blue Swirl wrote:
> >  > >  > > >  > On 5/20/09, Michael S. Tsirkin <mst@redhat.com> wrote:
> >  > >  > > >  > > On Wed, May 20, 2009 at 08:21:01PM +0300, Blue Swirl wrote:
> >  > >  > > >  > >  > On 5/20/09, Michael S. Tsirkin <mst@redhat.com> wrote:
> >  > >  > > >  > >  > > define api for allocating/setting up msi-x irqs, and for updating them
> >  > >  > > >  > >  > >  with msi-x vector information, supply implementation in ioapic. Please
> >  > >  > > >  > >  > >  comment on this API: I intend to port my msi-x patch to work on top of
> >  > >  > > >  > >  > >  it.
> >  > >  > > >  > >  > >
> >  > >  > > >  > >  > >  Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> >  > >  > > >  > >  >
> >  > >  > > >  > >  > Sparc64 also uses packets ("mondos", not implemented yet) for
> >  > >  > > >  > >  > interrupt vector data, there the packet size is 8 * 64 bits.
> >  > >  > > >  > >  > I think we should aim for a more generic API that covers this case also.
> >  > >  > > >  > >
> >  > >  > > >  > >
> >  > >  > > >  > > Are you sure this is a good idea? MSI is tied to PCI, and PCI only has
> >  > >  > > >  > >  MSI, not "mondos". What code would benefit from this abstraction?
> >  > >  > > >  >
> >  > >  > > >  > Sparc64 emulation, of course. I think also the API would be neater.
> >  > >  > > >
> >  > >  > > >
> >  > >  > > > Since "mondos" are not interrupts, why use irqs for them?
> >  > >  > >
> >  > >  > > I just said above that they are used for interrupt vector data. What
> >  > >  > > makes you think they are not interrupts?
> >  > >  >
> >  > >  > I'm sorry, I don't really know anything about sparc.
> >  > >  > All I am saying is that in PCI, interrupts never pass data,
> >  > >  > so qemu_set_irq as it is now, is a good API to send them.
> >  > >  >
> >  > >  > For the sparc feature you describe, you probably want to add
> >  > >  > a message data parameter to qemu_set_irq, but it's not
> >  > >  > really useful for MSI.
> >  > >
> >  > >
> >  > > Just to clarify, the main difference is that with MSI/MSI-X
> >  > >  both data and address fields are mostly static, modifying them
> >  > >  involves ioapic and device updates which might be an expensive
> >  > >  operation (e.g. with kvm, needs an extra system call).
> >  > >
> >  > >  So I don't think it makes sense to pass MSI-X data field
> >  > >  with each call to qemu_set_irq.
> >  >
> >  > No, but I think the Sparc situation is the same, the packet data is
> >  > static for the interrupt source in question.
> >
> >
> > So, ok, we could add data update callback and then MSI and sparc
> >  would do their thing there. I'm not convinced I like all this
> >  play with untyped buffers, do you think it's helpful?
> >
> >  If yes, maybe I'll try to code it up and see how does it look.
> 
> Well, get/set_data could be limited to irq.c, ioapic.c could export
> something like get/set_msi_data. MSI callers should only use
> get/set_msi_data. Ditto for get/set_mondo_data.

I started coding it up and got lost in a maze of callbacks and void pointers :)

And I also remembered that besides data, there's a mask and pending bits in msi
(it's ignored in the patch I sent, but I'm fixing that), so there needs
to be an interface for this as well.

I am guessing that using qemu_irq_get_opaque and qemu_irq_get_vector that I
added, you'll find it's easy to implement mondos in very few lines of code.
We can always add another level of indirection later when sparc code
surfaces, if we find it helps.


-- 
MST

  reply	other threads:[~2009-05-21  9:26 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-20 16:21 [Qemu-devel] [PATCH] qemu: msi irq allocation api Michael S. Tsirkin
2009-05-20 17:21 ` Blue Swirl
2009-05-20 17:32   ` Avi Kivity
2009-05-20 17:40     ` Blue Swirl
2009-05-20 17:35   ` Michael S. Tsirkin
2009-05-20 17:44     ` Blue Swirl
2009-05-20 18:24       ` Michael S. Tsirkin
2009-05-20 18:28       ` Michael S. Tsirkin
2009-05-20 18:38         ` Blue Swirl
2009-05-20 20:02           ` Michael S. Tsirkin
2009-05-20 20:17             ` Michael S. Tsirkin
2009-05-20 20:26               ` Blue Swirl
2009-05-20 20:33                 ` Michael S. Tsirkin
2009-05-20 20:44                   ` Blue Swirl
2009-05-21  9:24                     ` Michael S. Tsirkin [this message]
2009-05-20 20:18             ` Blue Swirl
2009-05-20 20:29               ` Michael S. Tsirkin
2009-05-21 10:09 ` Paul Brook
2009-05-21 10:23   ` Avi Kivity
2009-05-21 10:34     ` Paul Brook
2009-05-21 10:50       ` Michael S. Tsirkin
2009-05-21 11:01       ` Avi Kivity
2009-05-21 12:01         ` Paul Brook
2009-05-21 12:08           ` Avi Kivity
2009-05-21 12:14             ` Michael S. Tsirkin
2009-05-21 12:29             ` Paul Brook
2009-05-21 12:38               ` Avi Kivity
2009-05-21 13:08                 ` Michael S. Tsirkin
2009-05-21 13:09                 ` Paul Brook
2009-05-21 13:12                   ` Michael S. Tsirkin
2009-05-21 13:23                     ` Paul Brook
2009-05-21 13:31                       ` Paul Brook
2009-05-21 16:45                         ` Michael S. Tsirkin
2009-05-21 17:33                           ` Michael S. Tsirkin
2009-05-21 13:46                       ` Michael S. Tsirkin
2009-05-21 13:53                         ` Paul Brook
2009-05-21 14:01                           ` Avi Kivity
2009-05-21 14:14                             ` Paul Brook
2009-05-21 14:37                               ` Avi Kivity
2009-05-21 14:50                                 ` Paul Brook
2009-05-21 14:54                                   ` Avi Kivity
2009-05-21 15:01                                     ` Paul Brook
2009-05-21 15:11                                       ` Avi Kivity
2009-05-21 16:49                                   ` Michael S. Tsirkin
2009-05-21 14:07                           ` Michael S. Tsirkin
2009-05-24 11:14                             ` Avi Kivity
2009-05-21 14:46                       ` Michael S. Tsirkin
2009-05-21 13:11                 ` Michael S. Tsirkin
2009-05-21 13: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=20090521092427.GA25309@redhat.com \
    --to=mst@redhat.com \
    --cc=avi@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cotte@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rusty@rustcorp.com.au \
    --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).