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 19:45:20 +0300 [thread overview]
Message-ID: <20090521164520.GA6474@redhat.com> (raw)
In-Reply-To: <200905211431.27287.paul@codesourcery.com>
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?
--
MST
next prev parent reply other threads:[~2009-05-21 16:49 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: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 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 20:02 ` Michael S. Tsirkin
2009-05-20 20:17 ` 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:18 ` Blue Swirl
2009-05-20 20:29 ` Michael S. Tsirkin
2009-05-20 20:29 ` Michael S. Tsirkin
2009-05-20 20:18 ` Blue Swirl
2009-05-20 20:02 ` Michael S. Tsirkin
2009-05-20 18:38 ` Blue Swirl
2009-05-20 17:35 ` Michael S. Tsirkin
2009-05-20 17:21 ` Blue Swirl
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:08 ` Avi Kivity
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 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: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: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 [this message]
2009-05-21 17:33 ` 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:01 ` Avi Kivity
2009-05-21 14:14 ` [Qemu-devel] " Paul Brook
2009-05-21 14:37 ` Avi Kivity
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 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:50 ` Paul Brook
2009-05-21 14:14 ` Paul Brook
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 14:07 ` Michael S. Tsirkin
2009-05-21 13:53 ` Paul Brook
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:23 ` Paul Brook
2009-05-21 13:11 ` Michael S. Tsirkin
2009-05-21 13:11 ` Michael S. Tsirkin
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:01 ` Paul Brook
2009-05-21 10:09 ` Paul Brook
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=20090521164520.GA6474@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.