From: "Michael S. Tsirkin" <mst@redhat.com>
To: Paul Brook <paul@codesourcery.com>
Cc: Avi Kivity <avi@redhat.com>,
qemu-devel@nongnu.org, Carsten Otte <cotte@de.ibm.com>,
kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>,
virtualization@lists.linux-foundation.org,
Christian Borntraeger <borntraeger@de.ibm.com>
Subject: Re: [Qemu-devel] [PATCH] qemu: msi irq allocation api
Date: Thu, 21 May 2009 20:33:08 +0300 [thread overview]
Message-ID: <20090521173308.GA7722@redhat.com> (raw)
In-Reply-To: <20090521164520.GA6474@redhat.com>
On Thu, May 21, 2009 at 07:45:20PM +0300, Michael S. Tsirkin wrote:
> On Thu, May 21, 2009 at 02:31:26PM +0100, Paul Brook wrote:
> > On Thursday 21 May 2009, Paul Brook wrote:
> > > > > MSI provides multiple edge triggered interrupts, whereas traditional
> > > > > mode provides a single level triggered interrupt. My guess is most
> > > > > devices will want to treat these differently anyway.
> > > >
> > > > So, is qemu_send_msi better than qemu_set_irq.
> > >
> > > Neither. pci_send_msi, which is a trivial wrapper around stl_phys.
> >
> > To clarify, you seem to be trying to fuse two largely separate features
> > together.
> >
> > MSI is a standard PCI device capability[1] that involves the device performing
> > a 32-bit memory write when something interesting occurs. These writes may or
> > may not be directed at a APIC.
> >
> > The x86 APIC has a memory mapped interface that allows generation of CPU
> > interrupts in response response to memory writes. These may or may not come
> > from an MSI capable PCI device.
> >
> > Paul
> >
> > [1] Note a *device* capability, not a bus capability.
>
> Paul, so I went over specs, and what you say about APIC here does not
> seem to be what Intel actually implemented. Specifically, Intel
> implemented *MSI support in APIC*. This lets PCI devices, but not the CPU,
> signal interrupts by memory writes.
>
> For example, after reset, when CPU writes to address 0xfee00000 this
> is an access to a reserved register in APIC, but when PCI device
> does write to 0xfee00000, this triggers an interrupt to destination 0.
>
> See section 9.12 in Intel® 64 and IA-32 Architectures Software
> Developer’s Manual Volume 3A: System Programming Guide, Part 1
> http://www.intel.com/Assets/PDF/manual/253668.pdf
>
> So it seems that what we need to do in pci is:
>
> if (!msi_ops || msi_ops->send_msi(address, data))
> stl_phy(address, data);
>
> where send_msi is wired to apic_send_msi and
> where apic_send_msi returns an error for an address
> outside of the MSI range 0xfee00000 - 0xfeefffff
>
> Makes sense?
So I ended up with these ops:
allocate
free
update
send
which APIC will define and MSI emulation
will use. Here, send will return error for addresses
outside 0xfeexxxxx range, and device will do a plain
stl_phy.
--
MST
next prev parent reply other threads:[~2009-05-21 17:36 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-20 16:21 [PATCH] qemu: msi irq allocation api Michael S. Tsirkin
2009-05-20 17:21 ` [Qemu-devel] " Blue Swirl
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:40 ` Blue Swirl
2009-05-20 17:32 ` Avi Kivity
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:24 ` Michael S. Tsirkin
2009-05-20 18:28 ` Michael S. Tsirkin
2009-05-20 18:38 ` Blue Swirl
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
2009-05-21 9:24 ` Michael S. Tsirkin
2009-05-20 20:44 ` Blue Swirl
2009-05-20 20:33 ` Michael S. Tsirkin
2009-05-20 20:26 ` Blue Swirl
2009-05-20 20:17 ` Michael S. Tsirkin
2009-05-20 20:18 ` Blue Swirl
2009-05-20 20:18 ` Blue Swirl
2009-05-20 20:29 ` Michael S. Tsirkin
2009-05-20 20:29 ` Michael S. Tsirkin
2009-05-20 20:02 ` Michael S. Tsirkin
2009-05-20 17:44 ` Blue Swirl
2009-05-20 17:35 ` Michael S. Tsirkin
2009-05-21 10:09 ` Paul Brook
2009-05-21 10:09 ` Paul Brook
2009-05-21 10:23 ` Avi Kivity
2009-05-21 10:23 ` Avi Kivity
2009-05-21 10:34 ` Paul Brook
2009-05-21 10:34 ` Paul Brook
2009-05-21 10:50 ` Michael S. Tsirkin
2009-05-21 10:50 ` Michael S. Tsirkin
2009-05-21 11:01 ` Avi Kivity
2009-05-21 11:01 ` Avi Kivity
2009-05-21 12:01 ` Paul Brook
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: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:08 ` Michael S. Tsirkin
2009-05-21 13:09 ` Paul Brook
2009-05-21 13:12 ` Michael S. Tsirkin
2009-05-21 13:12 ` Michael S. Tsirkin
2009-05-21 13:23 ` Paul Brook
2009-05-21 13:23 ` Paul Brook
2009-05-21 13:31 ` Paul Brook
2009-05-21 13:31 ` Paul Brook
2009-05-21 16:45 ` Michael S. Tsirkin
2009-05-21 16:45 ` Michael S. Tsirkin
2009-05-21 17:33 ` Michael S. Tsirkin [this message]
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 13:53 ` Paul Brook
2009-05-21 14:01 ` Avi Kivity
2009-05-21 14:01 ` Avi Kivity
2009-05-21 14:14 ` [Qemu-devel] " Paul Brook
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: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 15:11 ` Avi Kivity
2009-05-21 15:01 ` Paul Brook
2009-05-21 14:54 ` Avi Kivity
2009-05-21 16:49 ` Michael S. Tsirkin
2009-05-21 16:49 ` Michael S. Tsirkin
2009-05-21 14:37 ` Avi Kivity
2009-05-21 14:07 ` Michael S. Tsirkin
2009-05-21 14:07 ` Michael S. Tsirkin
2009-05-24 11:14 ` Avi Kivity
2009-05-24 11:14 ` Avi Kivity
2009-05-21 13:46 ` Michael S. Tsirkin
2009-05-21 14:46 ` Michael S. Tsirkin
2009-05-21 14:46 ` Michael S. Tsirkin
2009-05-21 13:09 ` Paul Brook
2009-05-21 13:11 ` Michael S. Tsirkin
2009-05-21 13:11 ` Michael S. Tsirkin
2009-05-21 12:38 ` Avi Kivity
2009-05-21 13:06 ` Michael S. Tsirkin
2009-05-21 13:06 ` Michael S. Tsirkin
2009-05-21 12:29 ` Paul Brook
2009-05-21 12:08 ` Avi Kivity
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=20090521173308.GA7722@redhat.com \
--to=mst@redhat.com \
--cc=avi@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cotte@de.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=paul@codesourcery.com \
--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 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.